1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package simplepetstore
16
17 import (
18 "bytes"
19 "context"
20 "net/http"
21 "net/http/httptest"
22 "testing"
23
24 "github.com/go-openapi/runtime"
25 "github.com/stretchr/testify/assert"
26 "github.com/stretchr/testify/require"
27 )
28
29 func TestSimplePetstoreSpec(t *testing.T) {
30 handler, err := NewPetstore()
31 require.NoError(t, err)
32
33
34 r, err := runtime.JSONRequest(http.MethodGet, "/swagger.json", nil)
35 require.NoError(t, err)
36 r = r.WithContext(context.Background())
37 rw := httptest.NewRecorder()
38 handler.ServeHTTP(rw, r)
39 assert.Equal(t, http.StatusOK, rw.Code)
40 assert.Equal(t, swaggerJSON, rw.Body.String())
41 }
42
43 func TestSimplePetstoreAllPets(t *testing.T) {
44 handler, err := NewPetstore()
45 require.NoError(t, err)
46
47
48 r, err := runtime.JSONRequest(http.MethodGet, "/api/pets", nil)
49 require.NoError(t, err)
50 r = r.WithContext(context.Background())
51 rw := httptest.NewRecorder()
52 handler.ServeHTTP(rw, r)
53 assert.Equal(t, http.StatusOK, rw.Code)
54 assert.Equal(t, "[{\"id\":1,\"name\":\"Dog\",\"status\":\"available\"},{\"id\":2,\"name\":\"Cat\",\"status\":\"pending\"}]\n", rw.Body.String())
55 }
56
57 func TestSimplePetstorePetByID(t *testing.T) {
58 handler, err := NewPetstore()
59 require.NoError(t, err)
60
61
62 r, err := runtime.JSONRequest(http.MethodGet, "/api/pets/1", nil)
63 require.NoError(t, err)
64 r = r.WithContext(context.Background())
65 rw := httptest.NewRecorder()
66 handler.ServeHTTP(rw, r)
67 assert.Equal(t, http.StatusOK, rw.Code)
68 assert.Equal(t, "{\"id\":1,\"name\":\"Dog\",\"status\":\"available\"}\n", rw.Body.String())
69 }
70
71 func TestSimplePetstoreAddPet(t *testing.T) {
72 handler, err := NewPetstore()
73 require.NoError(t, err)
74
75
76 r, err := runtime.JSONRequest(http.MethodPost, "/api/pets", bytes.NewBufferString(`{"name": "Fish","status": "available"}`))
77 require.NoError(t, err)
78 r = r.WithContext(context.Background())
79 rw := httptest.NewRecorder()
80 handler.ServeHTTP(rw, r)
81 assert.Equal(t, http.StatusOK, rw.Code)
82 assert.Equal(t, "{\"id\":3,\"name\":\"Fish\",\"status\":\"available\"}\n", rw.Body.String())
83 }
84
85 func TestSimplePetstoreDeletePet(t *testing.T) {
86 handler, err := NewPetstore()
87 require.NoError(t, err)
88
89
90 r, err := runtime.JSONRequest(http.MethodDelete, "/api/pets/1", nil)
91 require.NoError(t, err)
92 r = r.WithContext(context.Background())
93 rw := httptest.NewRecorder()
94 handler.ServeHTTP(rw, r)
95 assert.Equal(t, http.StatusNoContent, rw.Code)
96 assert.Equal(t, "", rw.Body.String())
97
98 r, err = runtime.JSONRequest(http.MethodGet, "/api/pets/1", nil)
99 require.NoError(t, err)
100 r = r.WithContext(context.Background())
101 rw = httptest.NewRecorder()
102 handler.ServeHTTP(rw, r)
103 assert.Equal(t, http.StatusNotFound, rw.Code)
104 assert.Equal(t, "{\"code\":404,\"message\":\"not found: pet 1\"}", rw.Body.String())
105 }
106
View as plain text