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  }`