mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-09-20 14:56:20 +08:00
7fd6a74e0c
Co-authored-by: Josh Zhang <jzhang1@stackoverflow.com>
182 lines
5.5 KiB
Go
182 lines
5.5 KiB
Go
package cloudflare
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
const testWorkerDomainID = "dbe10b4bc17c295377eabd600e1787fd"
|
|
|
|
var expectedWorkerDomain = WorkersDomain{
|
|
ID: testWorkerDomainID,
|
|
ZoneID: "593c9c94de529bbbfaac7c53ced0447d",
|
|
ZoneName: "example.com",
|
|
Hostname: "foo.example.com",
|
|
Service: "foo",
|
|
Environment: "production",
|
|
}
|
|
|
|
func TestWorkersDomain_GetDomain(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
mux.HandleFunc(fmt.Sprintf("/accounts/%s/workers/domains/%s", testAccountID, testWorkerDomainID), func(w http.ResponseWriter, r *http.Request) {
|
|
assert.Equal(t, http.MethodGet, r.Method, "Expected method 'GET', got %s", r.Method)
|
|
w.Header().Set("content-type", "application/json")
|
|
fmt.Fprintf(w, `{
|
|
"success": true,
|
|
"errors": [],
|
|
"messages": [],
|
|
"result": {
|
|
"id": "dbe10b4bc17c295377eabd600e1787fd",
|
|
"zone_id": "593c9c94de529bbbfaac7c53ced0447d",
|
|
"zone_name": "example.com",
|
|
"hostname": "foo.example.com",
|
|
"service": "foo",
|
|
"environment": "production"
|
|
}
|
|
}`)
|
|
})
|
|
_, err := client.GetWorkersDomain(context.Background(), AccountIdentifier(""), "")
|
|
if assert.Error(t, err) {
|
|
assert.Equal(t, ErrMissingAccountID, err)
|
|
}
|
|
res, err := client.GetWorkersDomain(context.Background(), AccountIdentifier(testAccountID), testWorkerDomainID)
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, expectedWorkerDomain, res)
|
|
}
|
|
}
|
|
|
|
func TestWorkersDomain_ListDomains(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
mux.HandleFunc(fmt.Sprintf("/accounts/%s/workers/domains", testAccountID), func(w http.ResponseWriter, r *http.Request) {
|
|
assert.Equal(t, http.MethodGet, r.Method, "Expected method 'GET', got %s", r.Method)
|
|
w.Header().Set("content-type", "application/json")
|
|
fmt.Fprintf(w, `{
|
|
"success": true,
|
|
"errors": [],
|
|
"messages": [],
|
|
"result": [
|
|
{
|
|
"id": "dbe10b4bc17c295377eabd600e1787fd",
|
|
"zone_id": "593c9c94de529bbbfaac7c53ced0447d",
|
|
"zone_name": "example.com",
|
|
"hostname": "foo.example.com",
|
|
"service": "foo",
|
|
"environment": "production"
|
|
}
|
|
]
|
|
}`)
|
|
})
|
|
_, err := client.ListWorkersDomains(context.Background(), AccountIdentifier(""), ListWorkersDomainParams{})
|
|
if assert.Error(t, err) {
|
|
assert.Equal(t, ErrMissingAccountID, err)
|
|
}
|
|
res, err := client.ListWorkersDomains(context.Background(), AccountIdentifier(testAccountID), ListWorkersDomainParams{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, 1, len(res))
|
|
assert.Equal(t, expectedWorkerDomain, res[0])
|
|
}
|
|
}
|
|
|
|
func TestWorkersDomain_AttachDomain(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
mux.HandleFunc(fmt.Sprintf("/accounts/%s/workers/domains", testAccountID), func(w http.ResponseWriter, r *http.Request) {
|
|
assert.Equal(t, http.MethodPut, r.Method, "Expected method 'PUT', got %s", r.Method)
|
|
w.Header().Set("content-type", "application/json")
|
|
fmt.Fprintf(w, `{
|
|
"success": true,
|
|
"errors": [],
|
|
"messages": [],
|
|
"result": {
|
|
"id": "dbe10b4bc17c295377eabd600e1787fd",
|
|
"zone_id": "593c9c94de529bbbfaac7c53ced0447d",
|
|
"zone_name": "example.com",
|
|
"hostname": "foo.example.com",
|
|
"service": "foo",
|
|
"environment": "production"
|
|
}
|
|
}`)
|
|
})
|
|
_, err := client.AttachWorkersDomain(context.Background(), AccountIdentifier(""), AttachWorkersDomainParams{})
|
|
if assert.Error(t, err) {
|
|
assert.Equal(t, ErrMissingAccountID, err)
|
|
}
|
|
|
|
_, err = client.AttachWorkersDomain(context.Background(), AccountIdentifier(testAccountID), AttachWorkersDomainParams{})
|
|
if assert.Error(t, err) {
|
|
assert.Equal(t, ErrMissingZoneID, err)
|
|
}
|
|
|
|
_, err = client.AttachWorkersDomain(context.Background(), AccountIdentifier(testAccountID), AttachWorkersDomainParams{
|
|
ZoneID: testZoneID,
|
|
})
|
|
if assert.Error(t, err) {
|
|
assert.Equal(t, ErrMissingHostname, err)
|
|
}
|
|
|
|
_, err = client.AttachWorkersDomain(context.Background(), AccountIdentifier(testAccountID), AttachWorkersDomainParams{
|
|
ZoneID: testZoneID,
|
|
Hostname: "foo.example.com",
|
|
})
|
|
if assert.Error(t, err) {
|
|
assert.Equal(t, ErrMissingService, err)
|
|
}
|
|
|
|
_, err = client.AttachWorkersDomain(context.Background(), AccountIdentifier(testAccountID), AttachWorkersDomainParams{
|
|
ZoneID: testZoneID,
|
|
Hostname: "foo.example.com",
|
|
Service: "foo",
|
|
})
|
|
if assert.Error(t, err) {
|
|
assert.Equal(t, ErrMissingEnvironment, err)
|
|
}
|
|
|
|
res, err := client.AttachWorkersDomain(context.Background(), AccountIdentifier(testAccountID), AttachWorkersDomainParams{
|
|
ZoneID: testZoneID,
|
|
Hostname: "foo.example.com",
|
|
Service: "foo",
|
|
Environment: "production",
|
|
})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, expectedWorkerDomain, res)
|
|
}
|
|
}
|
|
|
|
func TestWorkersDomain_DetachDomain(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
mux.HandleFunc(fmt.Sprintf("/accounts/%s/workers/domains/%s", testAccountID, testWorkerDomainID), func(w http.ResponseWriter, r *http.Request) {
|
|
assert.Equal(t, http.MethodDelete, r.Method, "Expected method 'DELETE', got %s", r.Method)
|
|
w.Header().Set("content-type", "application/json")
|
|
fmt.Fprintf(w, `{
|
|
"success": true,
|
|
"errors": [],
|
|
"messages": [],
|
|
"result": {
|
|
"id": "dbe10b4bc17c295377eabd600e1787fd",
|
|
"zone_id": "593c9c94de529bbbfaac7c53ced0447d",
|
|
"zone_name": "example.com",
|
|
"hostname": "foo.example.com",
|
|
"service": "foo",
|
|
"environment": "production"
|
|
}
|
|
}`)
|
|
})
|
|
err := client.DetachWorkersDomain(context.Background(), AccountIdentifier(""), testWorkerDomainID)
|
|
if assert.Error(t, err) {
|
|
assert.Equal(t, ErrMissingAccountID, err)
|
|
}
|
|
err = client.DetachWorkersDomain(context.Background(), AccountIdentifier(testAccountID), testWorkerDomainID)
|
|
assert.NoError(t, err)
|
|
}
|