github.com/akamai/AkamaiOPEN-edgegrid-golang/v8@v8.1.0/pkg/edgeworkers/contracts_test.go (about) 1 package edgeworkers 2 3 import ( 4 "context" 5 "errors" 6 "net/http" 7 "net/http/httptest" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestListContracts(t *testing.T) { 15 tests := map[string]struct { 16 responseStatus int 17 responseBody string 18 expectedPath string 19 expectedResponse *ListContractsResponse 20 withError error 21 }{ 22 "200 OK": { 23 responseStatus: 200, 24 responseBody: ` 25 { 26 "contractIds": [ 27 "1-599K", 28 "B-M-28QYF3M" 29 ] 30 }`, 31 expectedPath: "/edgeworkers/v1/contracts", 32 expectedResponse: &ListContractsResponse{ 33 []string{ 34 "1-599K", 35 "B-M-28QYF3M", 36 }, 37 }, 38 }, 39 "500 internal server error": { 40 responseStatus: http.StatusInternalServerError, 41 responseBody: ` 42 { 43 "type": "/edgeworkers/error-types/edgeworkers-server-error", 44 "title": "An unexpected error has occurred.", 45 "detail": "Error processing request", 46 "instance": "/edgeworkers/error-instances/abc", 47 "status": 500, 48 "errorCode": "EW4303" 49 }`, 50 expectedPath: "/edgeworkers/v1/contracts", 51 withError: &Error{ 52 Type: "/edgeworkers/error-types/edgeworkers-server-error", 53 Title: "An unexpected error has occurred.", 54 Detail: "Error processing request", 55 Instance: "/edgeworkers/error-instances/abc", 56 Status: 500, 57 ErrorCode: "EW4303", 58 }, 59 }, 60 } 61 62 for name, test := range tests { 63 t.Run(name, func(t *testing.T) { 64 mockServer := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 65 assert.Equal(t, test.expectedPath, r.URL.String()) 66 assert.Equal(t, http.MethodGet, r.Method) 67 w.WriteHeader(test.responseStatus) 68 _, err := w.Write([]byte(test.responseBody)) 69 assert.NoError(t, err) 70 })) 71 client := mockAPIClient(t, mockServer) 72 result, err := client.ListContracts(context.Background()) 73 if test.withError != nil { 74 assert.True(t, errors.Is(err, test.withError), "want: %s; got: %s", test.withError, err) 75 return 76 } 77 require.NoError(t, err) 78 assert.Equal(t, test.expectedResponse, result) 79 }) 80 } 81 }