mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-11-09 16:00:36 +08:00
281 lines
8.9 KiB
Go
281 lines
8.9 KiB
Go
package cloudflare
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestAccessOrganization(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.Fprintf(w, `{
|
|
"success": true,
|
|
"errors": [],
|
|
"messages": [],
|
|
"result": {
|
|
"created_at": "2014-01-01T05:20:00.12345Z",
|
|
"updated_at": "2014-01-01T05:20:00.12345Z",
|
|
"name": "Widget Corps Internal Applications",
|
|
"auth_domain": "test.cloudflareaccess.com",
|
|
"is_ui_read_only": false,
|
|
"user_seat_expiration_inactive_time": "720h",
|
|
"auto_redirect_to_identity": true,
|
|
"allow_authenticate_via_warp": true,
|
|
"warp_auth_session_duration": "24h",
|
|
"session_duration": "12h",
|
|
"login_design": {
|
|
"background_color": "#c5ed1b",
|
|
"logo_path": "https://example.com/logo.png",
|
|
"text_color": "#c5ed1b",
|
|
"header_text": "Widget Corp",
|
|
"footer_text": "© Widget Corp"
|
|
}
|
|
}
|
|
}
|
|
`)
|
|
}
|
|
|
|
createdAt, _ := time.Parse(time.RFC3339, "2014-01-01T05:20:00.12345Z")
|
|
updatedAt, _ := time.Parse(time.RFC3339, "2014-01-01T05:20:00.12345Z")
|
|
|
|
want := AccessOrganization{
|
|
Name: "Widget Corps Internal Applications",
|
|
CreatedAt: &createdAt,
|
|
UpdatedAt: &updatedAt,
|
|
AuthDomain: "test.cloudflareaccess.com",
|
|
AllowAuthenticateViaWarp: BoolPtr(true),
|
|
WarpAuthSessionDuration: StringPtr("24h"),
|
|
LoginDesign: AccessOrganizationLoginDesign{
|
|
BackgroundColor: "#c5ed1b",
|
|
LogoPath: "https://example.com/logo.png",
|
|
TextColor: "#c5ed1b",
|
|
HeaderText: "Widget Corp",
|
|
FooterText: "© Widget Corp",
|
|
},
|
|
IsUIReadOnly: BoolPtr(false),
|
|
SessionDuration: StringPtr("12h"),
|
|
UserSeatExpirationInactiveTime: "720h",
|
|
AutoRedirectToIdentity: BoolPtr(true),
|
|
}
|
|
|
|
mux.HandleFunc("/accounts/"+testAccountID+"/access/organizations", handler)
|
|
|
|
actual, _, err := client.GetAccessOrganization(context.Background(), testAccountRC, GetAccessOrganizationParams{})
|
|
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, actual)
|
|
}
|
|
|
|
mux.HandleFunc("/zones/"+testZoneID+"/access/organizations", handler)
|
|
|
|
actual, _, err = client.GetAccessOrganization(context.Background(), testZoneRC, GetAccessOrganizationParams{})
|
|
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, actual)
|
|
}
|
|
}
|
|
|
|
func TestCreateAccessOrganization(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
handler := func(w http.ResponseWriter, r *http.Request) {
|
|
assert.Equal(t, http.MethodPost, r.Method, "Expected method 'POST', got %s", r.Method)
|
|
w.Header().Set("content-type", "application/json")
|
|
fmt.Fprintf(w, `{
|
|
"success": true,
|
|
"errors": [],
|
|
"messages": [],
|
|
"result": {
|
|
"created_at": "2014-01-01T05:20:00.12345Z",
|
|
"updated_at": "2014-01-01T05:20:00.12345Z",
|
|
"name": "Widget Corps Internal Applications",
|
|
"auth_domain": "test.cloudflareaccess.com",
|
|
"allow_authenticate_via_warp": true,
|
|
"warp_auth_session_duration": "24h",
|
|
"is_ui_read_only": true,
|
|
"session_duration": "12h",
|
|
"login_design": {
|
|
"background_color": "#c5ed1b",
|
|
"logo_path": "https://example.com/logo.png",
|
|
"text_color": "#c5ed1b",
|
|
"header_text": "Widget Corp",
|
|
"footer_text": "© Widget Corp"
|
|
}
|
|
}
|
|
}
|
|
`)
|
|
}
|
|
|
|
createdAt, _ := time.Parse(time.RFC3339, "2014-01-01T05:20:00.12345Z")
|
|
updatedAt, _ := time.Parse(time.RFC3339, "2014-01-01T05:20:00.12345Z")
|
|
|
|
want := AccessOrganization{
|
|
CreatedAt: &createdAt,
|
|
UpdatedAt: &updatedAt,
|
|
Name: "Widget Corps Internal Applications",
|
|
AuthDomain: "test.cloudflareaccess.com",
|
|
AllowAuthenticateViaWarp: BoolPtr(true),
|
|
WarpAuthSessionDuration: StringPtr("24h"),
|
|
LoginDesign: AccessOrganizationLoginDesign{
|
|
BackgroundColor: "#c5ed1b",
|
|
LogoPath: "https://example.com/logo.png",
|
|
TextColor: "#c5ed1b",
|
|
HeaderText: "Widget Corp",
|
|
FooterText: "© Widget Corp",
|
|
},
|
|
IsUIReadOnly: BoolPtr(true),
|
|
SessionDuration: StringPtr("12h"),
|
|
}
|
|
|
|
mux.HandleFunc("/accounts/"+testAccountID+"/access/organizations", handler)
|
|
|
|
actual, err := client.CreateAccessOrganization(context.Background(), testAccountRC, CreateAccessOrganizationParams{
|
|
Name: "Widget Corps Internal Applications",
|
|
AuthDomain: "test.cloudflareaccess.com",
|
|
LoginDesign: AccessOrganizationLoginDesign{
|
|
BackgroundColor: "#c5ed1b",
|
|
LogoPath: "https://example.com/logo.png",
|
|
TextColor: "#c5ed1b",
|
|
HeaderText: "Widget Corp",
|
|
FooterText: "© Widget Corp",
|
|
},
|
|
IsUIReadOnly: BoolPtr(true),
|
|
SessionDuration: StringPtr("12h"),
|
|
})
|
|
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, actual)
|
|
}
|
|
|
|
mux.HandleFunc("/zones/"+testZoneID+"/access/organizations", handler)
|
|
|
|
actual, err = client.CreateAccessOrganization(context.Background(), testZoneRC, CreateAccessOrganizationParams{
|
|
Name: "Widget Corps Internal Applications",
|
|
AuthDomain: "test.cloudflareaccess.com",
|
|
LoginDesign: AccessOrganizationLoginDesign{
|
|
BackgroundColor: "#c5ed1b",
|
|
LogoPath: "https://example.com/logo.png",
|
|
TextColor: "#c5ed1b",
|
|
HeaderText: "Widget Corp",
|
|
FooterText: "© Widget Corp",
|
|
},
|
|
IsUIReadOnly: BoolPtr(true),
|
|
SessionDuration: StringPtr("12h"),
|
|
})
|
|
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, actual)
|
|
}
|
|
}
|
|
|
|
func TestUpdateAccessOrganization(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
handler := 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": {
|
|
"created_at": "2014-01-01T05:20:00.12345Z",
|
|
"updated_at": "2014-01-01T05:20:00.12345Z",
|
|
"name": "Widget Corps Internal Applications",
|
|
"auth_domain": "test.cloudflareaccess.com",
|
|
"allow_authenticate_via_warp": false,
|
|
"warp_auth_session_duration": "18h",
|
|
"login_design": {
|
|
"background_color": "#c5ed1b",
|
|
"logo_path": "https://example.com/logo.png",
|
|
"text_color": "#c5ed1b",
|
|
"header_text": "Widget Corp",
|
|
"footer_text": "© Widget Corp"
|
|
},
|
|
"is_ui_read_only": false,
|
|
"ui_read_only_toggle_reason": "this is my reason",
|
|
"session_duration": "12h"
|
|
}
|
|
}
|
|
`)
|
|
}
|
|
|
|
createdAt, _ := time.Parse(time.RFC3339, "2014-01-01T05:20:00.12345Z")
|
|
updatedAt, _ := time.Parse(time.RFC3339, "2014-01-01T05:20:00.12345Z")
|
|
|
|
want := AccessOrganization{
|
|
CreatedAt: &createdAt,
|
|
UpdatedAt: &updatedAt,
|
|
Name: "Widget Corps Internal Applications",
|
|
AuthDomain: "test.cloudflareaccess.com",
|
|
WarpAuthSessionDuration: StringPtr("18h"),
|
|
AllowAuthenticateViaWarp: BoolPtr(false),
|
|
LoginDesign: AccessOrganizationLoginDesign{
|
|
BackgroundColor: "#c5ed1b",
|
|
LogoPath: "https://example.com/logo.png",
|
|
TextColor: "#c5ed1b",
|
|
HeaderText: "Widget Corp",
|
|
FooterText: "© Widget Corp",
|
|
},
|
|
IsUIReadOnly: BoolPtr(false),
|
|
UIReadOnlyToggleReason: "this is my reason",
|
|
SessionDuration: StringPtr("12h"),
|
|
}
|
|
|
|
mux.HandleFunc("/accounts/"+testAccountID+"/access/organizations", handler)
|
|
|
|
actual, err := client.UpdateAccessOrganization(context.Background(), testAccountRC, UpdateAccessOrganizationParams{
|
|
Name: "Widget Corps Internal Applications",
|
|
AuthDomain: "test.cloudflareaccess.com",
|
|
LoginDesign: AccessOrganizationLoginDesign{
|
|
BackgroundColor: "#c5ed1b",
|
|
LogoPath: "https://example.com/logo.png",
|
|
TextColor: "#c5ed1b",
|
|
HeaderText: "Widget Corp",
|
|
FooterText: "© Widget Corp",
|
|
},
|
|
WarpAuthSessionDuration: StringPtr("18h"),
|
|
AllowAuthenticateViaWarp: BoolPtr(false),
|
|
IsUIReadOnly: BoolPtr(false),
|
|
SessionDuration: StringPtr("12h"),
|
|
UIReadOnlyToggleReason: "this is my reason",
|
|
})
|
|
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, actual)
|
|
}
|
|
|
|
mux.HandleFunc("/zones/"+testZoneID+"/access/organizations", handler)
|
|
|
|
actual, err = client.UpdateAccessOrganization(context.Background(), testZoneRC, UpdateAccessOrganizationParams{
|
|
Name: "Widget Corps Internal Applications",
|
|
AuthDomain: "test.cloudflareaccess.com",
|
|
LoginDesign: AccessOrganizationLoginDesign{
|
|
BackgroundColor: "#c5ed1b",
|
|
LogoPath: "https://example.com/logo.png",
|
|
TextColor: "#c5ed1b",
|
|
HeaderText: "Widget Corp",
|
|
FooterText: "© Widget Corp",
|
|
},
|
|
WarpAuthSessionDuration: StringPtr("18h"),
|
|
AllowAuthenticateViaWarp: BoolPtr(false),
|
|
IsUIReadOnly: BoolPtr(false),
|
|
UIReadOnlyToggleReason: "this is my reason",
|
|
SessionDuration: StringPtr("12h"),
|
|
})
|
|
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, want, actual)
|
|
}
|
|
}
|