@@ -965,3 +965,184 @@ func TestRegistry_ValidateName(t *testing.T) {
965
965
_ , err := client .Registry .ValidateName (ctx , validateNameRequest )
966
966
require .NoError (t , err )
967
967
}
968
+
969
+ // Tests for Registries service methods
970
+ func TestRegistries_Get (t * testing.T ) {
971
+ setup ()
972
+ defer teardown ()
973
+
974
+ want := & Registry {
975
+ Name : testRegistry ,
976
+ StorageUsageBytes : 0 ,
977
+ StorageUsageBytesUpdatedAt : testTime ,
978
+ CreatedAt : testTime ,
979
+ Region : testRegion ,
980
+ }
981
+
982
+ // We return `read_only` and `type` (only for multi-regsitry) -- check if we need to do this or not -- older tests don't add `read_only` to the response
983
+ getResponseJSON := `
984
+ {
985
+ "registry": {
986
+ "name": "` + testRegistry + `",
987
+ "storage_usage_bytes": 0,
988
+ "storage_usage_bytes_updated_at": "` + testTimeString + `",
989
+ "created_at": "` + testTimeString + `",
990
+ "region": "` + testRegion + `"
991
+ }
992
+ }`
993
+
994
+ mux .HandleFunc (fmt .Sprintf ("/v2/registries/%s" , testRegistry ), func (w http.ResponseWriter , r * http.Request ) {
995
+ testMethod (t , r , http .MethodGet )
996
+ fmt .Fprint (w , getResponseJSON )
997
+ })
998
+ got , _ , err := client .Registries .Get (ctx , testRegistry )
999
+ require .NoError (t , err )
1000
+ require .Equal (t , want , got )
1001
+ }
1002
+
1003
+ func TestRegistries_List (t * testing.T ) {
1004
+ setup ()
1005
+ defer teardown ()
1006
+
1007
+ wantRegistries := []* Registry {
1008
+ {
1009
+ Name : testRegistry ,
1010
+ StorageUsageBytes : 0 ,
1011
+ StorageUsageBytesUpdatedAt : testTime ,
1012
+ CreatedAt : testTime ,
1013
+ Region : testRegion ,
1014
+ },
1015
+ }
1016
+ getResponseJSON := `
1017
+ {
1018
+ "registries": [
1019
+ {
1020
+ "name": "` + testRegistry + `",
1021
+ "storage_usage_bytes": 0,
1022
+ "storage_usage_bytes_updated_at": "` + testTimeString + `",
1023
+ "created_at": "` + testTimeString + `",
1024
+ "region": "` + testRegion + `"
1025
+ }
1026
+ ]
1027
+ }`
1028
+
1029
+ mux .HandleFunc ("/v2/registries" , func (w http.ResponseWriter , r * http.Request ) {
1030
+ testMethod (t , r , http .MethodGet )
1031
+ fmt .Printf ("Returning: %v" , getResponseJSON )
1032
+ fmt .Fprint (w , getResponseJSON )
1033
+ })
1034
+ got , _ , err := client .Registries .List (ctx )
1035
+ require .NoError (t , err )
1036
+ fmt .Printf ("Expected: %+v\n " , wantRegistries )
1037
+ fmt .Printf ("Got: %+v\n " , got )
1038
+ require .Equal (t , wantRegistries , got )
1039
+ }
1040
+
1041
+ func TestRegistries_Create (t * testing.T ) {
1042
+ setup ()
1043
+ defer teardown ()
1044
+
1045
+ want := & Registry {
1046
+ Name : testRegistry ,
1047
+ StorageUsageBytes : 0 ,
1048
+ StorageUsageBytesUpdatedAt : testTime ,
1049
+ CreatedAt : testTime ,
1050
+ Region : testRegion ,
1051
+ }
1052
+
1053
+ createRequest := & RegistriesCreateRequest {
1054
+ Name : want .Name ,
1055
+ Region : testRegion ,
1056
+ }
1057
+
1058
+ createResponseJSON := `
1059
+ {
1060
+ "registry": {
1061
+ "name": "` + testRegistry + `",
1062
+ "storage_usage_bytes": 0,
1063
+ "storage_usage_bytes_updated_at": "` + testTimeString + `",
1064
+ "created_at": "` + testTimeString + `",
1065
+ "region": "` + testRegion + `"
1066
+ }
1067
+ }`
1068
+
1069
+ mux .HandleFunc ("/v2/registries" , func (w http.ResponseWriter , r * http.Request ) {
1070
+ v := new (RegistriesCreateRequest )
1071
+ err := json .NewDecoder (r .Body ).Decode (v )
1072
+ if err != nil {
1073
+ t .Fatal (err )
1074
+ }
1075
+
1076
+ testMethod (t , r , http .MethodPost )
1077
+ require .Equal (t , v , createRequest )
1078
+ fmt .Fprint (w , createResponseJSON )
1079
+ })
1080
+
1081
+ got , _ , err := client .Registries .Create (ctx , createRequest )
1082
+ require .NoError (t , err )
1083
+ require .Equal (t , want , got )
1084
+ }
1085
+
1086
+ func TestRegistries_Delete (t * testing.T ) {
1087
+ setup ()
1088
+ defer teardown ()
1089
+
1090
+ mux .HandleFunc (fmt .Sprintf ("/v2/registries/%s" , testRegistry ), func (w http.ResponseWriter , r * http.Request ) {
1091
+ testMethod (t , r , http .MethodDelete )
1092
+ })
1093
+
1094
+ _ , err := client .Registries .Delete (ctx , testRegistry )
1095
+ require .NoError (t , err )
1096
+ }
1097
+
1098
+ func TestRegistries_DockerCredentials (t * testing.T ) {
1099
+ returnedConfig := "this could be a docker config"
1100
+ tests := []struct {
1101
+ name string
1102
+ params * RegistryDockerCredentialsRequest
1103
+ expectedReadWrite string
1104
+ expectedExpirySeconds string
1105
+ }{
1106
+ {
1107
+ name : "read-only (default)" ,
1108
+ params : & RegistryDockerCredentialsRequest {},
1109
+ expectedReadWrite : "false" ,
1110
+ },
1111
+ {
1112
+ name : "read/write" ,
1113
+ params : & RegistryDockerCredentialsRequest {ReadWrite : true },
1114
+ expectedReadWrite : "true" ,
1115
+ },
1116
+ {
1117
+ name : "read-only + custom expiry" ,
1118
+ params : & RegistryDockerCredentialsRequest {ExpirySeconds : PtrTo (60 * 60 )},
1119
+ expectedReadWrite : "false" ,
1120
+ expectedExpirySeconds : "3600" ,
1121
+ },
1122
+ {
1123
+ name : "read/write + custom expiry" ,
1124
+ params : & RegistryDockerCredentialsRequest {ReadWrite : true , ExpirySeconds : PtrTo (60 * 60 )},
1125
+ expectedReadWrite : "true" ,
1126
+ expectedExpirySeconds : "3600" ,
1127
+ },
1128
+ }
1129
+
1130
+ for _ , test := range tests {
1131
+ t .Run (test .name , func (t * testing.T ) {
1132
+ setup ()
1133
+ defer teardown ()
1134
+
1135
+ mux .HandleFunc (fmt .Sprintf ("/v2/registries/%s/docker-credentials" , testRegistry ), func (w http.ResponseWriter , r * http.Request ) {
1136
+ require .Equal (t , test .expectedReadWrite , r .URL .Query ().Get ("read_write" ))
1137
+ require .Equal (t , test .expectedExpirySeconds , r .URL .Query ().Get ("expiry_seconds" ))
1138
+ testMethod (t , r , http .MethodGet )
1139
+ fmt .Fprint (w , returnedConfig )
1140
+ })
1141
+
1142
+ got , _ , err := client .Registries .DockerCredentials (ctx , testRegistry , test .params )
1143
+ fmt .Println (returnedConfig )
1144
+ require .NoError (t , err )
1145
+ require .Equal (t , []byte (returnedConfig ), got .DockerConfigJSON )
1146
+ })
1147
+ }
1148
+ }
0 commit comments