From 012e5fc78c1f9459d07d1faa55e2517db21aba0f Mon Sep 17 00:00:00 2001 From: Will Vedder Date: Mon, 11 Jul 2022 05:12:05 -0400 Subject: [PATCH] Add support for tenant `session_cookie` property (#88) * Adding session cookie configuration to tenant * Adding comment * Adding tests * Commenting exported struct * Adding period Co-authored-by: Will Vedder --- management/management.gen.go | 21 ++++++++++++++++ management/management.gen_test.go | 25 +++++++++++++++++++ management/tenant.go | 7 ++++++ management/tenant_test.go | 4 +++ .../recordings/TestTenantManager.yaml | 6 ++--- 5 files changed, 60 insertions(+), 3 deletions(-) diff --git a/management/management.gen.go b/management/management.gen.go index 9fbef940..63fa8a3d 100644 --- a/management/management.gen.go +++ b/management/management.gen.go @@ -5707,6 +5707,14 @@ func (t *Tenant) GetSandboxVersion() string { return *t.SandboxVersion } +// GetSessionCookie returns the SessionCookie field. +func (t *Tenant) GetSessionCookie() *TenantSessionCookie { + if t == nil { + return nil + } + return t.SessionCookie +} + // GetSessionLifetime returns the SessionLifetime field if it's non-nil, zero value otherwise. func (t *Tenant) GetSessionLifetime() float64 { if t == nil || t.SessionLifetime == nil { @@ -6041,6 +6049,19 @@ func (t *TenantGuardianMFAPage) String() string { return Stringify(t) } +// GetMode returns the Mode field if it's non-nil, zero value otherwise. +func (t *TenantSessionCookie) GetMode() string { + if t == nil || t.Mode == nil { + return "" + } + return *t.Mode +} + +// String returns a string representation of TenantSessionCookie. +func (t *TenantSessionCookie) String() string { + return Stringify(t) +} + // GetColors returns the Colors field. func (t *TenantUniversalLogin) GetColors() *TenantUniversalLoginColors { if t == nil { diff --git a/management/management.gen_test.go b/management/management.gen_test.go index 3dc2f900..055f40eb 100644 --- a/management/management.gen_test.go +++ b/management/management.gen_test.go @@ -7261,6 +7261,13 @@ func TestTenant_GetSandboxVersion(tt *testing.T) { t.GetSandboxVersion() } +func TestTenant_GetSessionCookie(tt *testing.T) { + t := &Tenant{} + t.GetSessionCookie() + t = nil + t.GetSessionCookie() +} + func TestTenant_GetSessionLifetime(tt *testing.T) { var zeroValue float64 t := &Tenant{SessionLifetime: &zeroValue} @@ -7686,6 +7693,24 @@ func TestTenantGuardianMFAPage_String(t *testing.T) { } } +func TestTenantSessionCookie_GetMode(tt *testing.T) { + var zeroValue string + t := &TenantSessionCookie{Mode: &zeroValue} + t.GetMode() + t = &TenantSessionCookie{} + t.GetMode() + t = nil + t.GetMode() +} + +func TestTenantSessionCookie_String(t *testing.T) { + var rawJSON json.RawMessage + v := &TenantSessionCookie{} + if err := json.Unmarshal([]byte(v.String()), &rawJSON); err != nil { + t.Errorf("failed to produce a valid json") + } +} + func TestTenantUniversalLogin_GetColors(tt *testing.T) { t := &TenantUniversalLogin{} t.GetColors() diff --git a/management/tenant.go b/management/tenant.go index 75cd12a9..252aa781 100644 --- a/management/tenant.go +++ b/management/tenant.go @@ -75,6 +75,8 @@ type Tenant struct { // Supported locales for the UI EnabledLocales []interface{} `json:"enabled_locales,omitempty"` + + SessionCookie *TenantSessionCookie `json:"session_cookie,omitempty"` } // MarshalJSON is a custom serializer for the Tenant type. @@ -335,6 +337,11 @@ type TenantDeviceFlow struct { Mask *string `json:"mask,omitempty"` } +// TenantSessionCookie manages behavior of the tenant's session cookie, accepts either 'persistent' or 'non-persistent'. +type TenantSessionCookie struct { + Mode *string `json:"mode,omitempty"` +} + // TenantManager manages Auth0 Tenant resources. type TenantManager struct { *Management diff --git a/management/tenant_test.go b/management/tenant_test.go index d10bf0ff..a4590986 100644 --- a/management/tenant_test.go +++ b/management/tenant_test.go @@ -31,6 +31,9 @@ func TestTenantManager(t *testing.T) { DefaultRedirectionURI: auth0.String("https://example.com/login"), SessionLifetime: auth0.Float64(1080), IdleSessionLifetime: auth0.Float64(720.2), // will be rounded off + SessionCookie: &TenantSessionCookie{ + Mode: auth0.String("non-persistent"), + }, } err = m.Tenant.Update(newTenantSettings) assert.NoError(t, err) @@ -43,6 +46,7 @@ func TestTenantManager(t *testing.T) { assert.Equal(t, newTenantSettings.GetSessionLifetime(), actualTenantSettings.GetSessionLifetime()) assert.Equal(t, newTenantSettings.GetSupportEmail(), actualTenantSettings.GetSupportEmail()) assert.Equal(t, newTenantSettings.GetSupportURL(), actualTenantSettings.GetSupportURL()) + assert.Equal(t, newTenantSettings.SessionCookie.GetMode(), actualTenantSettings.SessionCookie.GetMode()) } func TestTenant_MarshalJSON(t *testing.T) { diff --git a/management/testdata/recordings/TestTenantManager.yaml b/management/testdata/recordings/TestTenantManager.yaml index f501de94..922d6360 100644 --- a/management/testdata/recordings/TestTenantManager.yaml +++ b/management/testdata/recordings/TestTenantManager.yaml @@ -25,7 +25,7 @@ interactions: duration: 1ms - request: body: | - {"friendly_name":"My Example Tenant","support_email":"support@example.com","support_url":"https://support.example.com","session_lifetime":1080,"idle_session_lifetime":720,"default_redirection_uri":"https://example.com/login"} + {"friendly_name":"My Example Tenant","support_email":"support@example.com","support_url":"https://support.example.com","session_lifetime":1080,"idle_session_lifetime":720,"default_redirection_uri":"https://example.com/login","session_cookie":{"mode":"non-persistent"}} form: {} headers: Content-Type: @@ -38,7 +38,7 @@ interactions: body: '{"allowed_logout_urls":["https://mycompany.org/logoutCallback"],"change_password":{"enabled":true,"html":"Change Password"},"default_redirection_uri":"https://example.com/login","enabled_locales":["de","fr"],"error_page":{"html":"Error Page","url":"https://mycompany.org/error","show_log_link":false},"flags":{"allow_changing_enable_sso":false,"cannot_change_enforce_client_authentication_on_passwordless_start":true,"change_pwd_flow_v1":false,"disable_impersonation":true,"enable_apis_section":false,"enable_client_connections":true,"enable_custom_domain_in_emails":false,"enable_dynamic_client_registration":false,"enable_legacy_logs_search_v2":false,"enable_public_signup_user_exists_error":true,"enable_sso":true,"enforce_client_authentication_on_passwordless_start":true,"new_universal_login_experience_enabled":false,"universal_login":false,"use_scope_descriptions_for_consent":false,"revoke_refresh_token_grant":false,"disable_clickjack_protection_headers":false,"enable_pipeline2":false},"friendly_name":"My - Example Tenant","guardian_mfa_page":{"enabled":true,"html":"MFA"},"idle_session_lifetime":720,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_lifetime":1080,"support_email":"support@example.com","support_url":"https://support.example.com","universal_login":{"colors":{"primary":"#ea5323","page_background":{"type":"linear-gradient","start":"#000000","end":"#ffffff","angle_deg":35}}}}' + Example Tenant","guardian_mfa_page":{"enabled":true,"html":"MFA"},"idle_session_lifetime":720,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_cookie":{"mode":"non-persistent"},"session_lifetime":1080,"support_email":"support@example.com","support_url":"https://support.example.com","universal_login":{"colors":{"primary":"#ea5323","page_background":{"type":"linear-gradient","start":"#000000","end":"#ffffff","angle_deg":35}}}}' headers: Content-Type: - application/json; charset=utf-8 @@ -60,7 +60,7 @@ interactions: body: '{"allowed_logout_urls":["https://mycompany.org/logoutCallback"],"change_password":{"enabled":true,"html":"Change Password"},"default_redirection_uri":"https://example.com/login","enabled_locales":["de","fr"],"error_page":{"html":"Error Page","url":"https://mycompany.org/error","show_log_link":false},"flags":{"allow_changing_enable_sso":false,"change_pwd_flow_v1":false,"disable_impersonation":true,"enable_apis_section":false,"enable_client_connections":true,"enable_custom_domain_in_emails":false,"enable_dynamic_client_registration":false,"enable_legacy_logs_search_v2":false,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":false,"universal_login":false,"use_scope_descriptions_for_consent":false,"revoke_refresh_token_grant":false,"disable_clickjack_protection_headers":false,"enable_pipeline2":false},"friendly_name":"My - Example Tenant","guardian_mfa_page":{"enabled":true,"html":"MFA"},"idle_session_lifetime":720,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_lifetime":1080,"support_email":"support@example.com","support_url":"https://support.example.com","universal_login":{"colors":{"primary":"#ea5323","page_background":{"type":"linear-gradient","start":"#000000","end":"#ffffff","angle_deg":35}}},"sandbox_versions_available":["12"]}' + Example Tenant","guardian_mfa_page":{"enabled":true,"html":"MFA"},"idle_session_lifetime":720,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_cookie":{"mode":"non-persistent"},"session_lifetime":1080,"support_email":"support@example.com","support_url":"https://support.example.com","universal_login":{"colors":{"primary":"#ea5323","page_background":{"type":"linear-gradient","start":"#000000","end":"#ffffff","angle_deg":35}}},"sandbox_versions_available":["12"]}' headers: Content-Type: - application/json; charset=utf-8