1package govultr 2 3import ( 4 "fmt" 5 "net/http" 6 "reflect" 7 "testing" 8) 9 10func TestObjectStorageServiceHandler_Create(t *testing.T) { 11 setup() 12 defer teardown() 13 14 mux.HandleFunc("/v2/object-storage", func(writer http.ResponseWriter, request *http.Request) { 15 response := `{"object_storage":{"id":"39239784","date_created":"2020-07-1414:07:28","cluster_id":2,"region":"ewr","location":"New Jersey","label":"api-obj-storage2","status":"pending","s3_hostname":"","s3_access_key":"","s3_secret_key":""}}` 16 fmt.Fprint(writer, response) 17 }) 18 19 objectStorage, err := client.ObjectStorage.Create(ctx, 2, "api-obj-storage2") 20 if err != nil { 21 t.Errorf("ObjectStorage.Create returned %+v", err) 22 } 23 24 expected := &ObjectStorage{ 25 ID: "39239784", 26 DateCreated: "2020-07-1414:07:28", 27 ObjectStoreClusterID: 2, 28 Region: "ewr", 29 Location: "New Jersey", 30 Label: "api-obj-storage2", 31 Status: "pending", 32 S3Keys: S3Keys{}, 33 } 34 35 if !reflect.DeepEqual(objectStorage, expected) { 36 t.Errorf("ObjectStorage.Create returned %+v, expected %+v", objectStorage, expected) 37 } 38} 39 40func TestObjectStorageServiceHandler_Get(t *testing.T) { 41 setup() 42 defer teardown() 43 mux.HandleFunc("/v2/object-storage/39239784", func(writer http.ResponseWriter, request *http.Request) { 44 response := `{"object_storage":{"id":"39239784","date_created":"2020-07-1414:07:28","cluster_id":2,"region":"ewr","label":"","status":"active","s3_hostname":"ewr1.vultrobjects.com","s3_access_key":"F123","s3_secret_key":"F1234"}}` 45 fmt.Fprint(writer, response) 46 }) 47 48 s3, err := client.ObjectStorage.Get(ctx, "39239784") 49 50 if err != nil { 51 t.Errorf("ObjectStorage.Get returned %+v", err) 52 } 53 54 expected := &ObjectStorage{ 55 ID: "39239784", 56 DateCreated: "2020-07-1414:07:28", 57 ObjectStoreClusterID: 2, 58 Region: "ewr", 59 Label: "", 60 Status: "active", 61 S3Keys: S3Keys{ 62 S3Hostname: "ewr1.vultrobjects.com", 63 S3AccessKey: "F123", 64 S3SecretKey: "F1234", 65 }, 66 } 67 if !reflect.DeepEqual(s3, expected) { 68 t.Errorf("ObjectStorage.Get returned %+v, expected %+v", s3, expected) 69 } 70} 71 72func TestObjectStorageServiceHandler_Update(t *testing.T) { 73 setup() 74 defer teardown() 75 76 mux.HandleFunc("/v2/object-storage/1234", func(writer http.ResponseWriter, request *http.Request) { 77 fmt.Fprint(writer) 78 }) 79 80 err := client.ObjectStorage.Update(ctx, "1234", "s3 label") 81 if err != nil { 82 t.Errorf("ObjectStorage.Create returned %+v", err) 83 } 84} 85 86func TestObjectStorageServiceHandler_Delete(t *testing.T) { 87 setup() 88 defer teardown() 89 90 mux.HandleFunc("/v2/object-storage/1234", func(writer http.ResponseWriter, request *http.Request) { 91 fmt.Fprint(writer) 92 }) 93 94 err := client.ObjectStorage.Delete(ctx, "1234") 95 if err != nil { 96 t.Errorf("ObjectStorage.Delete returned %+v", err) 97 } 98} 99 100func TestObjectStorageServiceHandler_List(t *testing.T) { 101 setup() 102 defer teardown() 103 mux.HandleFunc("/v2/object-storage", func(writer http.ResponseWriter, request *http.Request) { 104 response := `{"object_storages":[{"id":"39240368","date_created":"2020-07-1414:22:38","cluster_id":2,"region":"ewr","label":"govultr","status":"active","s3_hostname":"ewr1.vultrobjects.com","s3_access_key":"n1234","s3_secret_key":"b1234"}],"meta":{"total":1,"links":{"next":"","prev":""}}}` 105 fmt.Fprint(writer, response) 106 }) 107 108 s3s, meta, err := client.ObjectStorage.List(ctx, nil) 109 if err != nil { 110 t.Errorf("ObjectStorage.List returned %+v", err) 111 } 112 113 expectedObject := []ObjectStorage{ 114 { 115 ID: "39240368", 116 DateCreated: "2020-07-1414:22:38", 117 ObjectStoreClusterID: 2, 118 Region: "ewr", 119 Label: "govultr", 120 Status: "active", 121 S3Keys: S3Keys{ 122 S3Hostname: "ewr1.vultrobjects.com", 123 S3AccessKey: "n1234", 124 S3SecretKey: "b1234", 125 }, 126 }, 127 } 128 129 if !reflect.DeepEqual(s3s, expectedObject) { 130 t.Errorf("ObjectStorage.List object returned %+v, expected %+v", s3s, expectedObject) 131 } 132 133 expectedmeta := &Meta{ 134 Total: 1, 135 Links: &Links{}, 136 } 137 138 if !reflect.DeepEqual(meta, expectedmeta) { 139 t.Errorf("ObjectStorage.List meta object returned %+v, expected %+v", meta, expectedmeta) 140 } 141} 142 143func TestObjectStorageServiceHandler_ListCluster(t *testing.T) { 144 setup() 145 defer teardown() 146 mux.HandleFunc("/v2/object-storage/clusters", func(writer http.ResponseWriter, request *http.Request) { 147 response := `{"clusters":[{"id":2,"region":"ewr","hostname":"ewr1.vultrobjects.com","deploy":"yes"}],"meta":{"total":1,"links":{"next":"","prev":""}}}` 148 fmt.Fprint(writer, response) 149 }) 150 151 clusters, meta, err := client.ObjectStorage.ListCluster(ctx, nil) 152 153 if err != nil { 154 t.Errorf("ObjectStorage.ListCluster returned %+v", err) 155 } 156 157 expected := []ObjectStorageCluster{ 158 { 159 ID: 2, 160 Region: "ewr", 161 Hostname: "ewr1.vultrobjects.com", 162 Deploy: "yes", 163 }, 164 } 165 166 if !reflect.DeepEqual(clusters, expected) { 167 t.Errorf("ObjectStorage.ListCluster clusters returned %+v, expected %+v", clusters, expected) 168 } 169 170 expectedMeta := &Meta{ 171 Total: 1, 172 Links: &Links{}, 173 } 174 175 if !reflect.DeepEqual(meta, expectedMeta) { 176 t.Errorf("ObjectStorage.List meta object returned %+v, expected %+v", meta, expectedMeta) 177 } 178} 179 180func TestObjectStorageServiceHandler_RegenerateKeys(t *testing.T) { 181 setup() 182 defer teardown() 183 mux.HandleFunc("/v2/object-storage/1234/regenerate-keys", func(writer http.ResponseWriter, request *http.Request) { 184 response := `{"s3_credentials":{"s3_hostname":"ewr1.vultrobjects.com","s3_access_key":"f1234","s3_secret_key":"g1234"}}` 185 fmt.Fprint(writer, response) 186 }) 187 188 s3Keys, err := client.ObjectStorage.RegenerateKeys(ctx, "1234") 189 190 if err != nil { 191 t.Errorf("ObjectStorage.RegenerateKeys returned %+v", err) 192 } 193 194 expected := &S3Keys{ 195 S3Hostname: "ewr1.vultrobjects.com", 196 S3AccessKey: "f1234", 197 S3SecretKey: "g1234", 198 } 199 200 if !reflect.DeepEqual(s3Keys, expected) { 201 t.Errorf("ObjectStorage.RegenerateKeys returned %+v, expected %+v", s3Keys, expected) 202 } 203} 204