lego/providers/dns/sonic/internal/client_test.go
2021-04-25 09:37:35 +00:00

60 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)
})
}
}