mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-10-04 10:54:26 +08:00
237 lines
7 KiB
Go
237 lines
7 KiB
Go
package cloudflare
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestListIPPrefix(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
handler := 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.Fprint(w, `{
|
|
"result": [
|
|
{
|
|
"id": "f68579455bd947efb65ffa1bcf33b52c",
|
|
"created_at": "2020-04-24T21:25:55.643771Z",
|
|
"modified_at": "2020-04-24T21:25:55.643771Z",
|
|
"cidr": "10.1.2.3/24",
|
|
"account_id": "foo",
|
|
"description": "Sample Prefix",
|
|
"approved": "V",
|
|
"on_demand_enabled": true,
|
|
"on_demand_locked": false,
|
|
"advertised": true,
|
|
"advertised_modified_at": "2020-04-24T21:25:55.643771Z"
|
|
}
|
|
],
|
|
"success": true,
|
|
"errors": [],
|
|
"messages": []
|
|
}`)
|
|
}
|
|
|
|
mux.HandleFunc("/accounts/"+testAccountID+"/addressing/prefixes", handler)
|
|
|
|
createdAt, _ := time.Parse(time.RFC3339, "2020-04-24T21:25:55.643771Z")
|
|
modifiedAt, _ := time.Parse(time.RFC3339, "2020-04-24T21:25:55.643771Z")
|
|
advertisedModifiedAt, _ := time.Parse(time.RFC3339, "2020-04-24T21:25:55.643771Z")
|
|
|
|
want := []IPPrefix{
|
|
{
|
|
ID: "f68579455bd947efb65ffa1bcf33b52c",
|
|
CreatedAt: &createdAt,
|
|
ModifiedAt: &modifiedAt,
|
|
CIDR: "10.1.2.3/24",
|
|
AccountID: "foo",
|
|
Description: "Sample Prefix",
|
|
Approved: "V",
|
|
OnDemandEnabled: true,
|
|
Advertised: true,
|
|
AdvertisedModifiedAt: &advertisedModifiedAt,
|
|
},
|
|
}
|
|
|
|
actual, err := client.ListPrefixes(context.Background(), testAccountID)
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, actual)
|
|
}
|
|
}
|
|
|
|
func TestGetIPPrefix(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
handler := 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.Fprint(w, `{
|
|
"result": {
|
|
"id": "f68579455bd947efb65ffa1bcf33b52c",
|
|
"created_at": "2020-04-24T21:25:55.643771Z",
|
|
"modified_at": "2020-04-24T21:25:55.643771Z",
|
|
"cidr": "10.1.2.3/24",
|
|
"account_id": "foo",
|
|
"description": "Sample Prefix",
|
|
"approved": "V",
|
|
"on_demand_enabled": true,
|
|
"on_demand_locked": false,
|
|
"advertised": true,
|
|
"advertised_modified_at": "2020-04-24T21:25:55.643771Z"
|
|
},
|
|
"success": true,
|
|
"errors": [],
|
|
"messages": []
|
|
}`)
|
|
}
|
|
|
|
mux.HandleFunc("/accounts/"+testAccountID+"/addressing/prefixes/f68579455bd947efb65ffa1bcf33b52c", handler)
|
|
|
|
createdAt, _ := time.Parse(time.RFC3339, "2020-04-24T21:25:55.643771Z")
|
|
modifiedAt, _ := time.Parse(time.RFC3339, "2020-04-24T21:25:55.643771Z")
|
|
advertisedModifiedAt, _ := time.Parse(time.RFC3339, "2020-04-24T21:25:55.643771Z")
|
|
|
|
want := IPPrefix{
|
|
ID: "f68579455bd947efb65ffa1bcf33b52c",
|
|
CreatedAt: &createdAt,
|
|
ModifiedAt: &modifiedAt,
|
|
CIDR: "10.1.2.3/24",
|
|
AccountID: "foo",
|
|
Description: "Sample Prefix",
|
|
Approved: "V",
|
|
OnDemandEnabled: true,
|
|
Advertised: true,
|
|
AdvertisedModifiedAt: &advertisedModifiedAt,
|
|
}
|
|
|
|
actual, err := client.GetPrefix(context.Background(), testAccountID, "f68579455bd947efb65ffa1bcf33b52c")
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, actual)
|
|
}
|
|
}
|
|
|
|
func TestUpdatePrefixDescription(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
handler := func(w http.ResponseWriter, r *http.Request) {
|
|
assert.Equal(t, http.MethodPatch, r.Method, "Expected method 'PATCH', got %s", r.Method)
|
|
w.Header().Set("content-type", "application/json")
|
|
fmt.Fprint(w, `{
|
|
"result": {
|
|
"id": "f68579455bd947efb65ffa1bcf33b52c",
|
|
"created_at": "2020-04-24T21:25:55.643771Z",
|
|
"modified_at": "2020-04-24T21:25:55.643771Z",
|
|
"cidr": "10.1.2.3/24",
|
|
"account_id": "foo",
|
|
"description": "My IP Prefix",
|
|
"approved": "V",
|
|
"on_demand_enabled": true,
|
|
"on_demand_locked": false,
|
|
"advertised": true,
|
|
"advertised_modified_at": "2020-04-24T21:25:55.643771Z"
|
|
},
|
|
"success": true,
|
|
"errors": [],
|
|
"messages": []
|
|
}`)
|
|
}
|
|
|
|
mux.HandleFunc("/accounts/"+testAccountID+"/addressing/prefixes/f68579455bd947efb65ffa1bcf33b52c", handler)
|
|
|
|
createdAt, _ := time.Parse(time.RFC3339, "2020-04-24T21:25:55.643771Z")
|
|
modifiedAt, _ := time.Parse(time.RFC3339, "2020-04-24T21:25:55.643771Z")
|
|
advertisedModifiedAt, _ := time.Parse(time.RFC3339, "2020-04-24T21:25:55.643771Z")
|
|
|
|
want := IPPrefix{
|
|
ID: "f68579455bd947efb65ffa1bcf33b52c",
|
|
CreatedAt: &createdAt,
|
|
ModifiedAt: &modifiedAt,
|
|
CIDR: "10.1.2.3/24",
|
|
AccountID: "foo",
|
|
Description: "My IP Prefix",
|
|
Approved: "V",
|
|
OnDemandEnabled: true,
|
|
Advertised: true,
|
|
AdvertisedModifiedAt: &advertisedModifiedAt,
|
|
}
|
|
|
|
actual, err := client.UpdatePrefixDescription(context.Background(), testAccountID, "f68579455bd947efb65ffa1bcf33b52c", "My IP Prefix")
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, actual)
|
|
}
|
|
}
|
|
|
|
func TestGetAdvertisementStatus(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
handler := 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.Fprint(w, `{
|
|
"result": {
|
|
"advertised": true,
|
|
"advertised_modified_at": "2020-04-24T21:25:55.643771Z"
|
|
},
|
|
"success": true,
|
|
"errors": [],
|
|
"messages": []
|
|
}`)
|
|
}
|
|
|
|
mux.HandleFunc("/accounts/"+testAccountID+"/addressing/prefixes/f68579455bd947efb65ffa1bcf33b52c/bgp/status", handler)
|
|
|
|
advertisedModifiedAt, _ := time.Parse(time.RFC3339, "2020-04-24T21:25:55.643771Z")
|
|
|
|
want := AdvertisementStatus{
|
|
Advertised: true,
|
|
AdvertisedModifiedAt: &advertisedModifiedAt,
|
|
}
|
|
|
|
actual, err := client.GetAdvertisementStatus(context.Background(), testAccountID, "f68579455bd947efb65ffa1bcf33b52c")
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, actual)
|
|
}
|
|
}
|
|
|
|
func TestUpdateAdvertisementStatus(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
handler := func(w http.ResponseWriter, r *http.Request) {
|
|
assert.Equal(t, http.MethodPatch, r.Method, "Expected method 'PATCH', got %s", r.Method)
|
|
w.Header().Set("content-type", "application/json")
|
|
fmt.Fprint(w, `{
|
|
"result": {
|
|
"advertised": false,
|
|
"advertised_modified_at": "2020-04-24T21:25:55.643771Z"
|
|
},
|
|
"success": true,
|
|
"errors": [],
|
|
"messages": []
|
|
}`)
|
|
}
|
|
|
|
mux.HandleFunc("/accounts/"+testAccountID+"/addressing/prefixes/f68579455bd947efb65ffa1bcf33b52c/bgp/status", handler)
|
|
|
|
advertisedModifiedAt, _ := time.Parse(time.RFC3339, "2020-04-24T21:25:55.643771Z")
|
|
|
|
want := AdvertisementStatus{
|
|
Advertised: false,
|
|
AdvertisedModifiedAt: &advertisedModifiedAt,
|
|
}
|
|
|
|
actual, err := client.UpdateAdvertisementStatus(context.Background(), testAccountID, "f68579455bd947efb65ffa1bcf33b52c", false)
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, actual)
|
|
}
|
|
}
|