github.com/clerkinc/clerk-sdk-go@v1.49.1/clerk/emails_test.go (about)

     1  package clerk
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"net/http"
     7  	"reflect"
     8  	"testing"
     9  )
    10  
    11  func TestEmailService_Create_happyPath(t *testing.T) {
    12  	token := "token"
    13  	var email Email
    14  	_ = json.Unmarshal([]byte(dummyEmailJson), &email)
    15  
    16  	client, mux, _, teardown := setup(token)
    17  	defer teardown()
    18  
    19  	mux.HandleFunc("/emails", func(w http.ResponseWriter, req *http.Request) {
    20  		testHttpMethod(t, req, "POST")
    21  		testHeader(t, req, "Authorization", "Bearer "+token)
    22  		fmt.Fprint(w, dummyEmailJson)
    23  	})
    24  
    25  	got, _ := client.Emails().Create(email)
    26  
    27  	var want EmailResponse
    28  	_ = json.Unmarshal([]byte(dummyEmailJson), &want)
    29  
    30  	if !reflect.DeepEqual(*got, want) {
    31  		t.Errorf("Response = %v, want %v", *got, email)
    32  	}
    33  }
    34  
    35  func TestEmailService_Create_invalidServer(t *testing.T) {
    36  	client, _ := NewClient("token")
    37  
    38  	var email Email
    39  	_ = json.Unmarshal([]byte(dummyEmailJson), &email)
    40  
    41  	_, err := client.Emails().Create(email)
    42  	if err == nil {
    43  		t.Errorf("Expected error to be returned")
    44  	}
    45  }
    46  
    47  const dummyEmailJson = `{
    48      "body": "This is the body of a test email",
    49      "email_address_id": "idn_1mebQ9KkZWrhb9rL6iEiXQGF8Yj",
    50      "from_email_name": "info",
    51      "id": "ema_1mvFol71HiKCcypBd6xxg0IpMBN",
    52      "object": "email",
    53      "status": "queued",
    54      "subject": "This is a test email",
    55  	"data": { "foo": "bar" },
    56  	"delivered_by_clerk": false
    57  }`