1- package cmd
1+ package azcopy
22
33import (
44 "context"
@@ -14,94 +14,94 @@ func TestValidateProtocolCompatibility(t *testing.T) {
1414
1515 // Test cases where validation should NOT be called (no File locations involved)
1616 testCases := []struct {
17- name string
18- fromTo common.FromTo
17+ name string
18+ fromTo common.FromTo
1919 shouldValidate bool
20- description string
20+ description string
2121 }{
2222 {
23- name : "S3ToBlob" ,
24- fromTo : common .EFromTo .S3Blob (),
23+ name : "S3ToBlob" ,
24+ fromTo : common .EFromTo .S3Blob (),
2525 shouldValidate : false ,
26- description : "S3 to Blob should not validate (neither side is File)" ,
26+ description : "S3 to Blob should not validate (neither side is File)" ,
2727 },
2828 {
29- name : "GCPToBlob" ,
30- fromTo : common .EFromTo .GCPBlob (),
29+ name : "GCPToBlob" ,
30+ fromTo : common .EFromTo .GCPBlob (),
3131 shouldValidate : false ,
32- description : "GCP to Blob should not validate (neither side is File)" ,
32+ description : "GCP to Blob should not validate (neither side is File)" ,
3333 },
3434 {
35- name : "LocalToBlob" ,
36- fromTo : common .EFromTo .LocalBlob (),
35+ name : "LocalToBlob" ,
36+ fromTo : common .EFromTo .LocalBlob (),
3737 shouldValidate : false ,
38- description : "Local to Blob should not validate (neither side is File)" ,
38+ description : "Local to Blob should not validate (neither side is File)" ,
3939 },
4040 {
41- name : "BlobToLocal" ,
42- fromTo : common .EFromTo .BlobLocal (),
41+ name : "BlobToLocal" ,
42+ fromTo : common .EFromTo .BlobLocal (),
4343 shouldValidate : false ,
44- description : "Blob to Local should not validate (neither side is File)" ,
44+ description : "Blob to Local should not validate (neither side is File)" ,
4545 },
4646 {
47- name : "BlobToBlob" ,
48- fromTo : common .EFromTo .BlobBlob (),
47+ name : "BlobToBlob" ,
48+ fromTo : common .EFromTo .BlobBlob (),
4949 shouldValidate : false ,
50- description : "Blob to Blob should not validate (neither side is File)" ,
50+ description : "Blob to Blob should not validate (neither side is File)" ,
5151 },
5252 {
53- name : "LocalToBlobFS" ,
54- fromTo : common .EFromTo .LocalBlobFS (),
53+ name : "LocalToBlobFS" ,
54+ fromTo : common .EFromTo .LocalBlobFS (),
5555 shouldValidate : false ,
56- description : "Local to BlobFS should not validate (neither side is File)" ,
56+ description : "Local to BlobFS should not validate (neither side is File)" ,
5757 },
5858 {
59- name : "LocalToFile" ,
60- fromTo : common .EFromTo .LocalFile (),
59+ name : "LocalToFile" ,
60+ fromTo : common .EFromTo .LocalFile (),
6161 shouldValidate : true ,
62- description : "Local to File should validate (destination is File)" ,
62+ description : "Local to File should validate (destination is File)" ,
6363 },
6464 {
65- name : "FileToLocal" ,
66- fromTo : common .EFromTo .FileLocal (),
65+ name : "FileToLocal" ,
66+ fromTo : common .EFromTo .FileLocal (),
6767 shouldValidate : true ,
68- description : "File to Local should validate (source is File)" ,
68+ description : "File to Local should validate (source is File)" ,
6969 },
7070 {
71- name : "LocalToFileNFS" ,
72- fromTo : common .EFromTo .LocalFileNFS (),
71+ name : "LocalToFileNFS" ,
72+ fromTo : common .EFromTo .LocalFileNFS (),
7373 shouldValidate : true ,
74- description : "Local to FileNFS should validate (destination is FileNFS)" ,
74+ description : "Local to FileNFS should validate (destination is FileNFS)" ,
7575 },
7676 {
77- name : "FileNFSToLocal" ,
78- fromTo : common .EFromTo .FileNFSLocal (),
77+ name : "FileNFSToLocal" ,
78+ fromTo : common .EFromTo .FileNFSLocal (),
7979 shouldValidate : true ,
80- description : "FileNFS to Local should validate (source is FileNFS)" ,
80+ description : "FileNFS to Local should validate (source is FileNFS)" ,
8181 },
8282 {
83- name : "FileToFile" ,
84- fromTo : common .EFromTo .FileFile (),
83+ name : "FileToFile" ,
84+ fromTo : common .EFromTo .FileFile (),
8585 shouldValidate : true ,
86- description : "File to File should validate (both sides are File)" ,
86+ description : "File to File should validate (both sides are File)" ,
8787 },
8888 {
89- name : "FileNFSToFileNFS" ,
90- fromTo : common .EFromTo .FileNFSFileNFS (),
89+ name : "FileNFSToFileNFS" ,
90+ fromTo : common .EFromTo .FileNFSFileNFS (),
9191 shouldValidate : true ,
92- description : "FileNFS to FileNFS should validate (both sides are FileNFS)" ,
92+ description : "FileNFS to FileNFS should validate (both sides are FileNFS)" ,
9393 },
9494 {
95- name : "FileToBlob" ,
96- fromTo : common .EFromTo .FileBlob (),
95+ name : "FileToBlob" ,
96+ fromTo : common .EFromTo .FileBlob (),
9797 shouldValidate : true ,
98- description : "File to Blob should validate (source is File)" ,
98+ description : "File to Blob should validate (source is File)" ,
9999 },
100100 {
101- name : "BlobToFile" ,
102- fromTo : common .EFromTo .BlobFile (),
101+ name : "BlobToFile" ,
102+ fromTo : common .EFromTo .BlobFile (),
103103 shouldValidate : true ,
104- description : "Blob to File should validate (destination is File)" ,
104+ description : "Blob to File should validate (destination is File)" ,
105105 },
106106 }
107107
@@ -110,21 +110,21 @@ func TestValidateProtocolCompatibility(t *testing.T) {
110110 // Create dummy resource strings
111111 src := common.ResourceString {Value : "https://source.example.com/path" }
112112 dst := common.ResourceString {Value : "https://dest.example.com/path" }
113-
113+
114114 // For non-File transfers, we can pass nil service clients since validation should be skipped
115115 // For File transfers, we would need proper service clients, but we're testing the conditional logic
116116 var srcClient , dstClient * common.ServiceClient
117-
117+
118118 if ! tc .shouldValidate {
119119 // Test that validation is skipped when no File locations are involved
120120 // This should not panic even with nil service clients
121- err := validateProtocolCompatibility (ctx , tc .fromTo , src , dst , srcClient , dstClient )
121+ err := ValidateProtocolCompatibility (ctx , tc .fromTo , src , dst , srcClient , dstClient )
122122 a .NoError (err , "validateProtocolCompatibility should not fail for %s: %s" , tc .name , tc .description )
123123 } else {
124124 // For File transfers, we expect the function to attempt validation
125125 // Since we're passing nil service clients, we expect it to fail gracefully
126126 // This tests that the conditional logic correctly identifies File transfers
127- err := validateProtocolCompatibility (ctx , tc .fromTo , src , dst , srcClient , dstClient )
127+ err := ValidateProtocolCompatibility (ctx , tc .fromTo , src , dst , srcClient , dstClient )
128128 // We expect an error here because we're passing nil service clients for File transfers
129129 // The important thing is that it doesn't panic and attempts validation
130130 if tc .fromTo .From ().IsFile () || tc .fromTo .To ().IsFile () {
@@ -144,14 +144,14 @@ func TestValidateProtocolCompatibility_ConditionalLogic(t *testing.T) {
144144 dst := common.ResourceString {Value : "https://dest.example.com/path" }
145145
146146 // Test that S3->Blob doesn't call validation (should not panic with nil clients)
147- err := validateProtocolCompatibility (ctx , common .EFromTo .S3Blob (), src , dst , nil , nil )
147+ err := ValidateProtocolCompatibility (ctx , common .EFromTo .S3Blob (), src , dst , nil , nil )
148148 a .NoError (err , "S3->Blob should skip validation and not panic with nil service clients" )
149149
150- // Test that GCP->Blob doesn't call validation (should not panic with nil clients)
151- err = validateProtocolCompatibility (ctx , common .EFromTo .GCPBlob (), src , dst , nil , nil )
150+ // Test that GCP->Blob doesn't call validation (should not panic with nil clients)
151+ err = ValidateProtocolCompatibility (ctx , common .EFromTo .GCPBlob (), src , dst , nil , nil )
152152 a .NoError (err , "GCP->Blob should skip validation and not panic with nil service clients" )
153153
154154 // Test that Local->Blob doesn't call validation (should not panic with nil clients)
155- err = validateProtocolCompatibility (ctx , common .EFromTo .LocalBlob (), src , dst , nil , nil )
155+ err = ValidateProtocolCompatibility (ctx , common .EFromTo .LocalBlob (), src , dst , nil , nil )
156156 a .NoError (err , "Local->Blob should skip validation and not panic with nil service clients" )
157157}
0 commit comments