github.com/clerkinc/clerk-sdk-go@v1.49.1/clerk/domains_test.go (about) 1 package clerk 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "net/http" 7 "reflect" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestDomainsService_ListAll_HappyPath(t *testing.T) { 14 client, mux, _, teardown := setup("token") 15 defer teardown() 16 17 expectedResponse := fmt.Sprintf(`{ 18 "total_count": 1, 19 "data": [%s] 20 }`, domainJSON) 21 22 mux.HandleFunc("/domains", func(w http.ResponseWriter, req *http.Request) { 23 testHttpMethod(t, req, "GET") 24 testHeader(t, req, "Authorization", "Bearer token") 25 fmt.Fprint(w, expectedResponse) 26 }) 27 28 var want *DomainListResponse 29 _ = json.Unmarshal([]byte(expectedResponse), &want) 30 31 got, _ := client.Domains().ListAll() 32 if got.TotalCount != want.TotalCount { 33 t.Errorf("Was expecting %d domains to be returned, instead got %d", want.TotalCount, got.TotalCount) 34 } 35 36 if !reflect.DeepEqual(got, want) { 37 t.Errorf("Response = %v, want %v", got, want) 38 } 39 } 40 41 func TestDomainsService_Create_HappyPath(t *testing.T) { 42 token := "token" 43 expectedResponse := domainJSON 44 45 name := "foobar.com" 46 47 payload := CreateDomainParams{ 48 Name: name, 49 IsSatellite: true, 50 } 51 52 client, mux, _, teardown := setup(token) 53 defer teardown() 54 55 mux.HandleFunc("/domains", func(w http.ResponseWriter, req *http.Request) { 56 testHttpMethod(t, req, "POST") 57 testHeader(t, req, "Authorization", "Bearer "+token) 58 fmt.Fprint(w, expectedResponse) 59 }) 60 61 var want Domain 62 err := json.Unmarshal([]byte(expectedResponse), &want) 63 assert.Nil(t, err) 64 65 got, err := client.Domains().Create(payload) 66 assert.Nil(t, err) 67 68 if !reflect.DeepEqual(*got, want) { 69 t.Errorf("Response = %v, want %v", got, want) 70 } 71 } 72 73 func TestDomainsService_Update_HappyPath(t *testing.T) { 74 token := "token" 75 domainID := "dmn_banana" 76 expectedResponse := domainJSON 77 78 name := "foobar.com" 79 80 payload := UpdateDomainParams{ 81 Name: &name, 82 } 83 84 client, mux, _, teardown := setup(token) 85 defer teardown() 86 87 url := fmt.Sprintf("/domains/%s", domainID) 88 89 mux.HandleFunc(url, func(w http.ResponseWriter, req *http.Request) { 90 testHttpMethod(t, req, "PATCH") 91 testHeader(t, req, "Authorization", "Bearer "+token) 92 fmt.Fprint(w, expectedResponse) 93 }) 94 95 var want Domain 96 err := json.Unmarshal([]byte(expectedResponse), &want) 97 assert.Nil(t, err) 98 99 got, err := client.Domains().Update(domainID, payload) 100 assert.Nil(t, err) 101 102 if !reflect.DeepEqual(*got, want) { 103 t.Errorf("Response = %v, want %v", got, want) 104 } 105 } 106 107 func TestDomainsService_Delete_HappyPath(t *testing.T) { 108 token := "token" 109 domainID := "dmn_banana" 110 expectedResponse := `{ 111 "object": "domain", 112 "id": "dmn_banana", 113 "delete": "true" 114 }` 115 116 client, mux, _, teardown := setup(token) 117 defer teardown() 118 119 url := fmt.Sprintf("/domains/%s", domainID) 120 121 mux.HandleFunc(url, func(w http.ResponseWriter, req *http.Request) { 122 testHttpMethod(t, req, "DELETE") 123 testHeader(t, req, "Authorization", "Bearer "+token) 124 fmt.Fprint(w, expectedResponse) 125 }) 126 127 var want DeleteResponse 128 err := json.Unmarshal([]byte(expectedResponse), &want) 129 assert.Nil(t, err) 130 131 got, err := client.Domains().Delete(domainID) 132 assert.Nil(t, err) 133 134 if !reflect.DeepEqual(*got, want) { 135 t.Errorf("Response = %#v, want %#v", got, want) 136 } 137 } 138 139 const domainJSON = `{ 140 "id": "dmn_banana", 141 "name": "foobar.com" 142 }`