dnscontrol/pkg/cloudflare-go/workers_domain_test.go
Tom Limoncelli 7fd6a74e0c
CLOUDFLAREAPI: CF_REDIRECT/CF_TEMP_REDIRECT should dtrt using Single Redirects (#3002)
Co-authored-by: Josh Zhang <jzhang1@stackoverflow.com>
2024-06-18 17:38:50 -04:00

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