mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-12-17 14:18:55 +08:00
182 lines
4.9 KiB
Go
182 lines
4.9 KiB
Go
package cloudflare
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
var testAccessGroupSeatUID = "access-group-seat-uid"
|
|
var testAccessGroupSeatUID2 = "access-group-seat-uid2"
|
|
|
|
func TestUpdateAccessUserSeat_ZoneIsNotSupported(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
_, err := client.UpdateAccessUserSeat(context.Background(), testZoneRC, UpdateAccessUserSeatParams{})
|
|
assert.EqualError(t, err, fmt.Sprintf(errInvalidResourceContainerAccess, ZoneRouteLevel))
|
|
}
|
|
|
|
func TestUpdateAccessUserSeat_MissingUID(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
_, err := client.UpdateAccessUserSeat(context.Background(), testAccountRC, UpdateAccessUserSeatParams{})
|
|
assert.EqualError(t, err, "missing required access seat UID")
|
|
}
|
|
|
|
func TestUpdateAccessUsersSeats_MissingUID(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
_, err := client.UpdateAccessUsersSeats(context.Background(), testAccountRC, UpdateAccessUsersSeatsParams{{GatewaySeat: BoolPtr(false), SeatUID: "seat_id"}, {SeatUID: "", AccessSeat: BoolPtr(true)}})
|
|
assert.EqualError(t, err, "missing required access seat UID")
|
|
}
|
|
|
|
func TestUpdateAccessUserSeat(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)
|
|
|
|
req := []UpdateAccessUserSeatParams{}
|
|
|
|
// Try to decode the request body into the struct.
|
|
err := json.NewDecoder(r.Body).Decode(&req)
|
|
assert.NoError(t, err, "Failed to decode request body into UpdateAccessUserSeatParams")
|
|
assert.Equal(t, len(req), 1, "Expected 1 seat to be updated, got %d", len(req))
|
|
|
|
w.Header().Set("content-type", "application/json")
|
|
fmt.Fprintf(w, `{
|
|
"errors": [],
|
|
"messages": [],
|
|
"result": [
|
|
{
|
|
"access_seat": false,
|
|
"created_at": "2014-01-01T05:20:00.12345Z",
|
|
"gateway_seat": false,
|
|
"seat_uid": null,
|
|
"updated_at": "2014-01-01T05:20:00.12345Z"
|
|
}
|
|
],
|
|
"success": true,
|
|
"result_info": {
|
|
"count": 1,
|
|
"page": 1,
|
|
"per_page": 20,
|
|
"total_count": 2000
|
|
}
|
|
}
|
|
`)
|
|
}
|
|
|
|
mux.HandleFunc("/accounts/"+testAccountID+"/access/seats", handler)
|
|
createdAt, _ := time.Parse(time.RFC3339, "2014-01-01T05:20:00.12345Z")
|
|
updatedAt, _ := time.Parse(time.RFC3339, "2014-01-01T05:20:00.12345Z")
|
|
want := []AccessUpdateAccessUserSeatResult{
|
|
{
|
|
AccessSeat: BoolPtr(false),
|
|
CreatedAt: &createdAt,
|
|
GatewaySeat: BoolPtr(false),
|
|
SeatUID: "",
|
|
UpdatedAt: &updatedAt,
|
|
},
|
|
}
|
|
|
|
actual, err := client.UpdateAccessUserSeat(context.Background(), testAccountRC, UpdateAccessUserSeatParams{
|
|
SeatUID: testAccessGroupSeatUID,
|
|
AccessSeat: BoolPtr(false),
|
|
GatewaySeat: BoolPtr(false),
|
|
})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, actual)
|
|
}
|
|
}
|
|
|
|
func TestUpdateAccessUsersSeats(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)
|
|
|
|
req := []UpdateAccessUserSeatParams{}
|
|
|
|
// Try to decode the request body into the struct.
|
|
err := json.NewDecoder(r.Body).Decode(&req)
|
|
assert.NoError(t, err, "Failed to decode request body into UpdateAccessUserSeatParams")
|
|
assert.Equal(t, len(req), 2, "Expected 2 seat to be updated, got %d", len(req))
|
|
|
|
w.Header().Set("content-type", "application/json")
|
|
fmt.Fprintf(w, `{
|
|
"errors": [],
|
|
"messages": [],
|
|
"result": [
|
|
{
|
|
"access_seat": false,
|
|
"created_at": "2014-01-01T05:20:00.12345Z",
|
|
"gateway_seat": false,
|
|
"seat_uid": "%s",
|
|
"updated_at": "2014-01-01T05:20:00.12345Z"
|
|
},
|
|
{
|
|
"access_seat": false,
|
|
"created_at": "2014-01-01T05:20:00.12345Z",
|
|
"gateway_seat": false,
|
|
"seat_uid": "%s",
|
|
"updated_at": "2014-01-01T05:20:00.12345Z"
|
|
}
|
|
],
|
|
"success": true,
|
|
"result_info": {
|
|
"count": 1,
|
|
"page": 1,
|
|
"per_page": 20,
|
|
"total_count": 2000
|
|
}
|
|
}
|
|
`, testAccessGroupSeatUID, testAccessGroupSeatUID2)
|
|
}
|
|
|
|
mux.HandleFunc("/accounts/"+testAccountID+"/access/seats", handler)
|
|
createdAt, _ := time.Parse(time.RFC3339, "2014-01-01T05:20:00.12345Z")
|
|
updatedAt, _ := time.Parse(time.RFC3339, "2014-01-01T05:20:00.12345Z")
|
|
want := []AccessUpdateAccessUserSeatResult{
|
|
{
|
|
AccessSeat: BoolPtr(false),
|
|
CreatedAt: &createdAt,
|
|
GatewaySeat: BoolPtr(false),
|
|
SeatUID: testAccessGroupSeatUID,
|
|
UpdatedAt: &updatedAt,
|
|
},
|
|
{
|
|
AccessSeat: BoolPtr(false),
|
|
CreatedAt: &createdAt,
|
|
GatewaySeat: BoolPtr(false),
|
|
SeatUID: testAccessGroupSeatUID2,
|
|
UpdatedAt: &updatedAt,
|
|
},
|
|
}
|
|
|
|
actual, err := client.UpdateAccessUsersSeats(context.Background(), testAccountRC, UpdateAccessUsersSeatsParams{
|
|
{
|
|
SeatUID: testAccessGroupSeatUID,
|
|
AccessSeat: BoolPtr(false),
|
|
GatewaySeat: BoolPtr(false),
|
|
},
|
|
{
|
|
SeatUID: testAccessGroupSeatUID2,
|
|
AccessSeat: BoolPtr(false),
|
|
GatewaySeat: BoolPtr(false),
|
|
},
|
|
})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, actual)
|
|
}
|
|
}
|