-
Notifications
You must be signed in to change notification settings - Fork 0
/
ssl_test.go
128 lines (95 loc) · 3.23 KB
/
ssl_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package porkbun
import (
"context"
"fmt"
"io"
"net/http"
"testing"
"github.com/stretchr/testify/assert"
)
func TestSslService_RetrieveSuccess(t *testing.T) {
setupMockServer(true)
defer teardownMockServer()
mux.HandleFunc("/ssl/retrieve/example.com", func(w http.ResponseWriter, r *http.Request) {
httpResponse := httpResponseFixture(t, "/ssl/retrieve-success.http")
assert.NotNil(t, httpResponse)
testMethod(t, r, "POST")
testHeaders(t, r)
testCredentials(t, r)
for k, values := range httpResponse.Header {
for _, v := range values {
w.Header().Add(k, v)
}
}
w.WriteHeader(httpResponse.StatusCode)
_, _ = io.Copy(w, httpResponse.Body)
})
resp, err := client.Ssl.Retrieve(context.Background(), "example.com")
assert.NoError(t, err)
assert.Equal(t, "SUCCESS", resp.Status)
respHeaders := resp.HTTPResponse.Header
assert.Equal(t, "openresty", respHeaders.Get("server"))
}
func TestSslService_RetrieveError(t *testing.T) {
setupMockServer(true)
defer teardownMockServer()
mux.HandleFunc("/ssl/retrieve/example.com", func(w http.ResponseWriter, r *http.Request) {
httpResponse := httpResponseFixture(t, "/ssl/retrieve-error.http")
assert.NotNil(t, httpResponse)
testMethod(t, r, "POST")
testHeaders(t, r)
testCredentials(t, r)
for k, values := range httpResponse.Header {
for _, v := range values {
w.Header().Add(k, v)
}
}
w.WriteHeader(httpResponse.StatusCode)
_, _ = io.Copy(w, httpResponse.Body)
})
_, err := client.Ssl.Retrieve(context.Background(), "example.com")
testErrorResponse(t, err)
}
func TestSslService_RetrieveEmptyResponse(t *testing.T) {
setupMockServer(true)
defer teardownMockServer()
mux.HandleFunc("/ssl/retrieve/example.com", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
// Simulate an empty response body
})
_, err := client.Ssl.Retrieve(context.Background(), "example.com")
assert.Error(t, err)
assert.Equal(t, "unexpected end of JSON input", err.Error())
}
func TestSslService_RetrieveInvalidResponse(t *testing.T) {
setupMockServer(true)
defer teardownMockServer()
mux.HandleFunc("/ssl/retrieve/example.com", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
// Simulate invalid/malformed JSON response
fmt.Fprint(w, "Invalid JSON")
})
_, err := client.Ssl.Retrieve(context.Background(), "example.com")
assert.Error(t, err)
assert.Contains(t, err.Error(), "invalid character")
}
func TestSslService_RetrieveNetworkError(t *testing.T) {
setupMockServer(true)
defer teardownMockServer()
// Simulate a network error by closing the server immediately
server.Close()
_, err := client.Ssl.Retrieve(context.Background(), "example.com")
assert.Error(t, err)
assert.Contains(t, err.Error(), "connection refused")
}
func TestSslService_Retrieve_PostFailure(t *testing.T) {
setupMockServer(true)
defer teardownMockServer()
mux.HandleFunc("/ssl/retrieve/example.com", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprint(w, `{"status":"ERROR","message":"Internal Server Error"}`)
})
_, err := client.Ssl.Retrieve(context.Background(), "example.com")
assert.Error(t, err)
assert.Contains(t, err.Error(), "500 Internal Server Error")
}