forked from TrueCloudLab/lego
61 lines
1.1 KiB
Go
61 lines
1.1 KiB
Go
|
package internal
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"net/http"
|
||
|
"net/http/httptest"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func setup(t *testing.T, body string) *Client {
|
||
|
t.Helper()
|
||
|
|
||
|
mux := http.NewServeMux()
|
||
|
server := httptest.NewServer(mux)
|
||
|
t.Cleanup(server.Close)
|
||
|
|
||
|
mux.HandleFunc("/host", func(rw http.ResponseWriter, req *http.Request) {
|
||
|
_, _ = fmt.Fprintln(rw, body)
|
||
|
})
|
||
|
|
||
|
client, err := NewClient("foo", "secret")
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
client.baseURL = server.URL
|
||
|
|
||
|
return client
|
||
|
}
|
||
|
|
||
|
func TestClient_SetRecord(t *testing.T) {
|
||
|
testCases := []struct {
|
||
|
desc string
|
||
|
response string
|
||
|
assert require.ErrorAssertionFunc
|
||
|
}{
|
||
|
{
|
||
|
desc: "success",
|
||
|
response: `{"message":"OK","result":200}`,
|
||
|
assert: require.NoError,
|
||
|
},
|
||
|
{
|
||
|
desc: "failure",
|
||
|
response: `{"message":"Not Found : the information you requested was not found.","result":404}`,
|
||
|
assert: require.Error,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range testCases {
|
||
|
test := test
|
||
|
t.Run(test.desc, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
client := setup(t, test.response)
|
||
|
|
||
|
err := client.SetRecord("example.com", "txttxttxt", 10)
|
||
|
test.assert(t, err)
|
||
|
})
|
||
|
}
|
||
|
}
|