@@ -1018,6 +1018,215 @@ func DeleteBucket_success_status_code(s *S3Conf) error {
1018
1018
return nil
1019
1019
}
1020
1020
1021
+ func PutBucketTagging_non_existing_bucket (s * S3Conf ) error {
1022
+ testName := "PutBucketTagging_non_existing_bucket"
1023
+ return actionHandler (s , testName , func (s3client * s3.Client , bucket string ) error {
1024
+ ctx , cancel := context .WithTimeout (context .Background (), shortTimeout )
1025
+ _ , err := s3client .PutBucketTagging (ctx , & s3.PutBucketTaggingInput {
1026
+ Bucket : getPtr (getBucketName ()),
1027
+ Tagging : & types.Tagging {TagSet : []types.Tag {}},
1028
+ })
1029
+ cancel ()
1030
+ if err := checkApiErr (err , s3err .GetAPIError (s3err .ErrNoSuchBucket )); err != nil {
1031
+ return err
1032
+ }
1033
+
1034
+ return nil
1035
+ })
1036
+ }
1037
+
1038
+ func PutBucketTagging_long_tags (s * S3Conf ) error {
1039
+ testName := "PutBucketTagging_long_tags"
1040
+ return actionHandler (s , testName , func (s3client * s3.Client , bucket string ) error {
1041
+ tagging := types.Tagging {TagSet : []types.Tag {{Key : getPtr (genRandString (200 )), Value : getPtr ("val" )}}}
1042
+
1043
+ ctx , cancel := context .WithTimeout (context .Background (), shortTimeout )
1044
+ _ , err := s3client .PutBucketTagging (ctx , & s3.PutBucketTaggingInput {
1045
+ Bucket : & bucket ,
1046
+ Tagging : & tagging })
1047
+ cancel ()
1048
+ if err := checkApiErr (err , s3err .GetAPIError (s3err .ErrInvalidTag )); err != nil {
1049
+ return err
1050
+ }
1051
+
1052
+ tagging = types.Tagging {TagSet : []types.Tag {{Key : getPtr ("key" ), Value : getPtr (genRandString (300 ))}}}
1053
+
1054
+ ctx , cancel = context .WithTimeout (context .Background (), shortTimeout )
1055
+ _ , err = s3client .PutBucketTagging (ctx , & s3.PutBucketTaggingInput {
1056
+ Bucket : & bucket ,
1057
+ Tagging : & tagging })
1058
+ cancel ()
1059
+ if err := checkApiErr (err , s3err .GetAPIError (s3err .ErrInvalidTag )); err != nil {
1060
+ return err
1061
+ }
1062
+
1063
+ return nil
1064
+ })
1065
+ }
1066
+
1067
+ func PutBucketTagging_success (s * S3Conf ) error {
1068
+ testName := "PutBucketTagging_success"
1069
+ return actionHandler (s , testName , func (s3client * s3.Client , bucket string ) error {
1070
+ tagging := types.Tagging {TagSet : []types.Tag {{Key : getPtr ("key1" ), Value : getPtr ("val2" )}, {Key : getPtr ("key2" ), Value : getPtr ("val2" )}}}
1071
+
1072
+ ctx , cancel := context .WithTimeout (context .Background (), shortTimeout )
1073
+ _ , err := s3client .PutBucketTagging (ctx , & s3.PutBucketTaggingInput {
1074
+ Bucket : & bucket ,
1075
+ Tagging : & tagging })
1076
+ cancel ()
1077
+ if err != nil {
1078
+ return err
1079
+ }
1080
+
1081
+ return nil
1082
+ })
1083
+ }
1084
+
1085
+ func GetBucketTagging_non_existing_bucket (s * S3Conf ) error {
1086
+ testName := "GetBucketTagging_non_existing_object"
1087
+ return actionHandler (s , testName , func (s3client * s3.Client , bucket string ) error {
1088
+ ctx , cancel := context .WithTimeout (context .Background (), shortTimeout )
1089
+ _ , err := s3client .GetBucketTagging (ctx , & s3.GetBucketTaggingInput {
1090
+ Bucket : getPtr (getBucketName ()),
1091
+ })
1092
+ cancel ()
1093
+ if err := checkApiErr (err , s3err .GetAPIError (s3err .ErrNoSuchBucket )); err != nil {
1094
+ return err
1095
+ }
1096
+ return nil
1097
+ })
1098
+ }
1099
+
1100
+ func GetBucketTagging_success (s * S3Conf ) error {
1101
+ testName := "GetBucketTagging_success"
1102
+ return actionHandler (s , testName , func (s3client * s3.Client , bucket string ) error {
1103
+ tagging := types.Tagging {TagSet : []types.Tag {{Key : getPtr ("key1" ), Value : getPtr ("val2" )}, {Key : getPtr ("key2" ), Value : getPtr ("val2" )}}}
1104
+
1105
+ ctx , cancel := context .WithTimeout (context .Background (), shortTimeout )
1106
+ _ , err := s3client .PutBucketTagging (ctx , & s3.PutBucketTaggingInput {
1107
+ Bucket : & bucket ,
1108
+ Tagging : & tagging })
1109
+ cancel ()
1110
+ if err != nil {
1111
+ return err
1112
+ }
1113
+
1114
+ ctx , cancel = context .WithTimeout (context .Background (), shortTimeout )
1115
+ out , err := s3client .GetBucketTagging (ctx , & s3.GetBucketTaggingInput {
1116
+ Bucket : & bucket ,
1117
+ })
1118
+ cancel ()
1119
+ if err != nil {
1120
+ return nil
1121
+ }
1122
+
1123
+ if ! areTagsSame (out .TagSet , tagging .TagSet ) {
1124
+ return fmt .Errorf ("expected %v instead got %v" , tagging .TagSet , out .TagSet )
1125
+ }
1126
+
1127
+ return nil
1128
+ })
1129
+ }
1130
+
1131
+ func DeleteBucketTagging_non_existing_object (s * S3Conf ) error {
1132
+ testName := "DeleteBucketTagging_non_existing_object"
1133
+ return actionHandler (s , testName , func (s3client * s3.Client , bucket string ) error {
1134
+ ctx , cancel := context .WithTimeout (context .Background (), shortTimeout )
1135
+ _ , err := s3client .DeleteBucketTagging (ctx , & s3.DeleteBucketTaggingInput {
1136
+ Bucket : getPtr (getBucketName ()),
1137
+ })
1138
+ cancel ()
1139
+ if err := checkApiErr (err , s3err .GetAPIError (s3err .ErrNoSuchBucket )); err != nil {
1140
+ return err
1141
+ }
1142
+ return nil
1143
+ })
1144
+ }
1145
+
1146
+ func DeleteBucketTagging_success_status (s * S3Conf ) error {
1147
+ testName := "DeleteBucketTagging_success_status"
1148
+ return actionHandler (s , testName , func (s3client * s3.Client , bucket string ) error {
1149
+ tagging := types.Tagging {
1150
+ TagSet : []types.Tag {
1151
+ {
1152
+ Key : getPtr ("Hello" ),
1153
+ Value : getPtr ("World" ),
1154
+ },
1155
+ },
1156
+ }
1157
+
1158
+ ctx , cancel := context .WithTimeout (context .Background (), shortTimeout )
1159
+ _ , err := s3client .PutBucketTagging (ctx , & s3.PutBucketTaggingInput {
1160
+ Bucket : & bucket ,
1161
+ Tagging : & tagging ,
1162
+ })
1163
+ cancel ()
1164
+ if err != nil {
1165
+ return err
1166
+ }
1167
+
1168
+ req , err := createSignedReq (http .MethodDelete , s .endpoint , fmt .Sprintf ("%v?tagging" , bucket ), s .awsID , s .awsSecret , "s3" , s .awsRegion , nil , time .Now ())
1169
+ if err != nil {
1170
+ return err
1171
+ }
1172
+
1173
+ client := http.Client {
1174
+ Timeout : shortTimeout ,
1175
+ }
1176
+
1177
+ resp , err := client .Do (req )
1178
+ if err != nil {
1179
+ return err
1180
+ }
1181
+
1182
+ if resp .StatusCode != http .StatusNoContent {
1183
+ return fmt .Errorf ("expected response status to be %v, instead got %v" , http .StatusNoContent , resp .StatusCode )
1184
+ }
1185
+
1186
+ return nil
1187
+ })
1188
+ }
1189
+
1190
+ func DeleteBucketTagging_success (s * S3Conf ) error {
1191
+ testName := "DeleteBucketTagging_success"
1192
+ return actionHandler (s , testName , func (s3client * s3.Client , bucket string ) error {
1193
+ tagging := types.Tagging {TagSet : []types.Tag {{Key : getPtr ("key1" ), Value : getPtr ("val2" )}, {Key : getPtr ("key2" ), Value : getPtr ("val2" )}}}
1194
+
1195
+ ctx , cancel := context .WithTimeout (context .Background (), shortTimeout )
1196
+ _ , err := s3client .PutBucketTagging (ctx , & s3.PutBucketTaggingInput {
1197
+ Bucket : & bucket ,
1198
+ Tagging : & tagging })
1199
+ cancel ()
1200
+ if err != nil {
1201
+ return err
1202
+ }
1203
+
1204
+ ctx , cancel = context .WithTimeout (context .Background (), shortTimeout )
1205
+ _ , err = s3client .DeleteBucketTagging (ctx , & s3.DeleteBucketTaggingInput {
1206
+ Bucket : & bucket ,
1207
+ })
1208
+ cancel ()
1209
+ if err != nil {
1210
+ return nil
1211
+ }
1212
+
1213
+ ctx , cancel = context .WithTimeout (context .Background (), shortTimeout )
1214
+ out , err := s3client .GetBucketTagging (ctx , & s3.GetBucketTaggingInput {
1215
+ Bucket : & bucket ,
1216
+ })
1217
+ cancel ()
1218
+ if err != nil {
1219
+ return nil
1220
+ }
1221
+
1222
+ if len (out .TagSet ) > 0 {
1223
+ return fmt .Errorf ("expected empty tag set, instead got %v" , out .TagSet )
1224
+ }
1225
+
1226
+ return nil
1227
+ })
1228
+ }
1229
+
1021
1230
func PutObject_non_existing_bucket (s * S3Conf ) error {
1022
1231
testName := "PutObject_non_existing_bucket"
1023
1232
return actionHandler (s , testName , func (s3client * s3.Client , bucket string ) error {
0 commit comments