dnscontrol/pkg/cloudflare-go/access_organization_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

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