From 8e9fc14b0e5b29f8adfee3dc8938456280a0b32b Mon Sep 17 00:00:00 2001 From: nixocio Date: Wed, 20 Oct 2021 09:59:57 -0400 Subject: [PATCH] Fix SAML variables default values Fix SAML variables default values See: https://github.com/ansible/tower/issues/5372 --- .../AzureAD/AzureADEdit/AzureADEdit.js | 3 +-- .../GitHub/GitHubDetail/GitHubDetail.test.js | 24 +++++++++++-------- .../Setting/GitHub/GitHubEdit/GitHubEdit.js | 3 +-- .../GitHubEnterpriseEdit.js | 3 +-- .../GitHubEnterpriseEdit.test.js | 2 +- .../GitHubEnterpriseOrgEdit.js | 3 +-- .../GitHubEnterpriseOrgEdit.test.js | 2 +- .../GitHubEnterpriseTeamEdit.js | 3 +-- .../GitHubEnterpriseTeamEdit.test.js | 2 +- .../GitHub/GitHubOrgEdit/GitHubOrgEdit.js | 3 +-- .../GitHubOrgEdit/GitHubOrgEdit.test.js | 2 +- .../GitHub/GitHubTeamEdit/GitHubTeamEdit.js | 3 +-- .../GoogleOAuth2Edit/GoogleOAuth2Edit.js | 3 +-- .../screens/Setting/Jobs/JobsEdit/JobsEdit.js | 3 +-- .../screens/Setting/LDAP/LDAPEdit/LDAPEdit.js | 3 +-- .../MiscAuthenticationEdit.js | 3 +-- .../MiscAuthenticationEdit.test.js | 6 ++--- .../screens/Setting/SAML/SAMLEdit/SAMLEdit.js | 3 +-- .../screens/Setting/shared/SettingDetail.js | 6 ++--- .../screens/Setting/shared/SharedFields.js | 13 ++++++---- 20 files changed, 44 insertions(+), 49 deletions(-) diff --git a/awx/ui/src/screens/Setting/AzureAD/AzureADEdit/AzureADEdit.js b/awx/ui/src/screens/Setting/AzureAD/AzureADEdit/AzureADEdit.js index cf728fc27d..bc3eadd1a1 100644 --- a/awx/ui/src/screens/Setting/AzureAD/AzureADEdit/AzureADEdit.js +++ b/awx/ui/src/screens/Setting/AzureAD/AzureADEdit/AzureADEdit.js @@ -94,10 +94,9 @@ function AzureADEdit() { const initialValues = (fields) => Object.keys(fields).reduce((acc, key) => { if (fields[key].type === 'list' || fields[key].type === 'nested object') { - const emptyDefault = fields[key].type === 'list' ? '[]' : '{}'; acc[key] = fields[key].value ? JSON.stringify(fields[key].value, null, 2) - : emptyDefault; + : null; } else { acc[key] = fields[key].value ?? ''; } diff --git a/awx/ui/src/screens/Setting/GitHub/GitHubDetail/GitHubDetail.test.js b/awx/ui/src/screens/Setting/GitHub/GitHubDetail/GitHubDetail.test.js index 3991192ba2..256f144459 100644 --- a/awx/ui/src/screens/Setting/GitHub/GitHubDetail/GitHubDetail.test.js +++ b/awx/ui/src/screens/Setting/GitHub/GitHubDetail/GitHubDetail.test.js @@ -147,8 +147,8 @@ describe('', () => { ); assertDetail(wrapper, 'GitHub OAuth2 Key', 'mock github key'); assertDetail(wrapper, 'GitHub OAuth2 Secret', 'Encrypted'); - assertVariableDetail(wrapper, 'GitHub OAuth2 Organization Map', '{}'); - assertVariableDetail(wrapper, 'GitHub OAuth2 Team Map', '{}'); + assertVariableDetail(wrapper, 'GitHub OAuth2 Organization Map', 'null'); + assertVariableDetail(wrapper, 'GitHub OAuth2 Team Map', 'null'); }); test('should hide edit button from non-superusers', async () => { @@ -226,12 +226,12 @@ describe('', () => { assertVariableDetail( wrapper, 'GitHub Organization OAuth2 Organization Map', - '{}' + 'null' ); assertVariableDetail( wrapper, 'GitHub Organization OAuth2 Team Map', - '{}' + 'null' ); }); }); @@ -333,9 +333,13 @@ describe('', () => { assertVariableDetail( wrapper, 'GitHub Enterprise OAuth2 Organization Map', - '{}' + 'null' + ); + assertVariableDetail( + wrapper, + 'GitHub Enterprise OAuth2 Team Map', + 'null' ); - assertVariableDetail(wrapper, 'GitHub Enterprise OAuth2 Team Map', '{}'); }); }); @@ -398,12 +402,12 @@ describe('', () => { assertVariableDetail( wrapper, 'GitHub Enterprise Organization OAuth2 Organization Map', - '{}' + 'null' ); assertVariableDetail( wrapper, 'GitHub Enterprise Organization OAuth2 Team Map', - '{}' + 'null' ); }); }); @@ -463,12 +467,12 @@ describe('', () => { assertVariableDetail( wrapper, 'GitHub Enterprise Team OAuth2 Organization Map', - '{}' + 'null' ); assertVariableDetail( wrapper, 'GitHub Enterprise Team OAuth2 Team Map', - '{}' + 'null' ); }); }); diff --git a/awx/ui/src/screens/Setting/GitHub/GitHubEdit/GitHubEdit.js b/awx/ui/src/screens/Setting/GitHub/GitHubEdit/GitHubEdit.js index 107752bfc6..e936e1f224 100644 --- a/awx/ui/src/screens/Setting/GitHub/GitHubEdit/GitHubEdit.js +++ b/awx/ui/src/screens/Setting/GitHub/GitHubEdit/GitHubEdit.js @@ -92,10 +92,9 @@ function GitHubEdit() { const initialValues = (fields) => Object.keys(fields).reduce((acc, key) => { if (fields[key].type === 'list' || fields[key].type === 'nested object') { - const emptyDefault = fields[key].type === 'list' ? '[]' : '{}'; acc[key] = fields[key].value ? JSON.stringify(fields[key].value, null, 2) - : emptyDefault; + : null; } else { acc[key] = fields[key].value ?? ''; } diff --git a/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseEdit/GitHubEnterpriseEdit.js b/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseEdit/GitHubEnterpriseEdit.js index 02b8d5c434..4fa7d941b3 100644 --- a/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseEdit/GitHubEnterpriseEdit.js +++ b/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseEdit/GitHubEnterpriseEdit.js @@ -94,10 +94,9 @@ function GitHubEnterpriseEdit() { const initialValues = (fields) => Object.keys(fields).reduce((acc, key) => { if (fields[key].type === 'list' || fields[key].type === 'nested object') { - const emptyDefault = fields[key].type === 'list' ? '[]' : '{}'; acc[key] = fields[key].value ? JSON.stringify(fields[key].value, null, 2) - : emptyDefault; + : null; } else { acc[key] = fields[key].value ?? ''; } diff --git a/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseEdit/GitHubEnterpriseEdit.test.js b/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseEdit/GitHubEnterpriseEdit.test.js index 7179fbfa24..0f334e8365 100644 --- a/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseEdit/GitHubEnterpriseEdit.test.js +++ b/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseEdit/GitHubEnterpriseEdit.test.js @@ -133,7 +133,7 @@ describe('', () => { SOCIAL_AUTH_GITHUB_ENTERPRISE_API_URL: '', SOCIAL_AUTH_GITHUB_ENTERPRISE_KEY: '', SOCIAL_AUTH_GITHUB_ENTERPRISE_SECRET: '', - SOCIAL_AUTH_GITHUB_ENTERPRISE_TEAM_MAP: {}, + SOCIAL_AUTH_GITHUB_ENTERPRISE_TEAM_MAP: null, SOCIAL_AUTH_GITHUB_ENTERPRISE_ORGANIZATION_MAP: { Default: { users: false, diff --git a/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseOrgEdit/GitHubEnterpriseOrgEdit.js b/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseOrgEdit/GitHubEnterpriseOrgEdit.js index d914c46755..0f856558f5 100644 --- a/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseOrgEdit/GitHubEnterpriseOrgEdit.js +++ b/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseOrgEdit/GitHubEnterpriseOrgEdit.js @@ -94,10 +94,9 @@ function GitHubEnterpriseOrgEdit() { const initialValues = (fields) => Object.keys(fields).reduce((acc, key) => { if (fields[key].type === 'list' || fields[key].type === 'nested object') { - const emptyDefault = fields[key].type === 'list' ? '[]' : '{}'; acc[key] = fields[key].value ? JSON.stringify(fields[key].value, null, 2) - : emptyDefault; + : null; } else { acc[key] = fields[key].value ?? ''; } diff --git a/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseOrgEdit/GitHubEnterpriseOrgEdit.test.js b/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseOrgEdit/GitHubEnterpriseOrgEdit.test.js index 84dc3989dd..b6e55487c8 100644 --- a/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseOrgEdit/GitHubEnterpriseOrgEdit.test.js +++ b/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseOrgEdit/GitHubEnterpriseOrgEdit.test.js @@ -146,7 +146,7 @@ describe('', () => { SOCIAL_AUTH_GITHUB_ENTERPRISE_ORG_KEY: '', SOCIAL_AUTH_GITHUB_ENTERPRISE_ORG_SECRET: '', SOCIAL_AUTH_GITHUB_ENTERPRISE_ORG_NAME: '', - SOCIAL_AUTH_GITHUB_ENTERPRISE_ORG_TEAM_MAP: {}, + SOCIAL_AUTH_GITHUB_ENTERPRISE_ORG_TEAM_MAP: null, SOCIAL_AUTH_GITHUB_ENTERPRISE_ORG_ORGANIZATION_MAP: { Default: { users: false, diff --git a/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseTeamEdit/GitHubEnterpriseTeamEdit.js b/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseTeamEdit/GitHubEnterpriseTeamEdit.js index 6f638e7e16..8ba8dd176e 100644 --- a/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseTeamEdit/GitHubEnterpriseTeamEdit.js +++ b/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseTeamEdit/GitHubEnterpriseTeamEdit.js @@ -94,10 +94,9 @@ function GitHubEnterpriseTeamEdit() { const initialValues = (fields) => Object.keys(fields).reduce((acc, key) => { if (fields[key].type === 'list' || fields[key].type === 'nested object') { - const emptyDefault = fields[key].type === 'list' ? '[]' : '{}'; acc[key] = fields[key].value ? JSON.stringify(fields[key].value, null, 2) - : emptyDefault; + : null; } else { acc[key] = fields[key].value ?? ''; } diff --git a/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseTeamEdit/GitHubEnterpriseTeamEdit.test.js b/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseTeamEdit/GitHubEnterpriseTeamEdit.test.js index 6e460e246a..e54c14c1cd 100644 --- a/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseTeamEdit/GitHubEnterpriseTeamEdit.test.js +++ b/awx/ui/src/screens/Setting/GitHub/GitHubEnterpriseTeamEdit/GitHubEnterpriseTeamEdit.test.js @@ -140,7 +140,7 @@ describe('', () => { SOCIAL_AUTH_GITHUB_ENTERPRISE_TEAM_KEY: '', SOCIAL_AUTH_GITHUB_ENTERPRISE_TEAM_SECRET: '', SOCIAL_AUTH_GITHUB_ENTERPRISE_TEAM_ID: '', - SOCIAL_AUTH_GITHUB_ENTERPRISE_TEAM_TEAM_MAP: {}, + SOCIAL_AUTH_GITHUB_ENTERPRISE_TEAM_TEAM_MAP: null, SOCIAL_AUTH_GITHUB_ENTERPRISE_TEAM_ORGANIZATION_MAP: { Default: { users: false, diff --git a/awx/ui/src/screens/Setting/GitHub/GitHubOrgEdit/GitHubOrgEdit.js b/awx/ui/src/screens/Setting/GitHub/GitHubOrgEdit/GitHubOrgEdit.js index c2e8f83cd6..3b1beab537 100644 --- a/awx/ui/src/screens/Setting/GitHub/GitHubOrgEdit/GitHubOrgEdit.js +++ b/awx/ui/src/screens/Setting/GitHub/GitHubOrgEdit/GitHubOrgEdit.js @@ -94,10 +94,9 @@ function GitHubOrgEdit() { const initialValues = (fields) => Object.keys(fields).reduce((acc, key) => { if (fields[key].type === 'list' || fields[key].type === 'nested object') { - const emptyDefault = fields[key].type === 'list' ? '[]' : '{}'; acc[key] = fields[key].value ? JSON.stringify(fields[key].value, null, 2) - : emptyDefault; + : null; } else { acc[key] = fields[key].value ?? ''; } diff --git a/awx/ui/src/screens/Setting/GitHub/GitHubOrgEdit/GitHubOrgEdit.test.js b/awx/ui/src/screens/Setting/GitHub/GitHubOrgEdit/GitHubOrgEdit.test.js index 777eb698af..f8f99b3d25 100644 --- a/awx/ui/src/screens/Setting/GitHub/GitHubOrgEdit/GitHubOrgEdit.test.js +++ b/awx/ui/src/screens/Setting/GitHub/GitHubOrgEdit/GitHubOrgEdit.test.js @@ -122,7 +122,7 @@ describe('', () => { SOCIAL_AUTH_GITHUB_ORG_KEY: '', SOCIAL_AUTH_GITHUB_ORG_SECRET: '', SOCIAL_AUTH_GITHUB_ORG_NAME: 'new org', - SOCIAL_AUTH_GITHUB_ORG_TEAM_MAP: {}, + SOCIAL_AUTH_GITHUB_ORG_TEAM_MAP: null, SOCIAL_AUTH_GITHUB_ORG_ORGANIZATION_MAP: { Default: { users: false, diff --git a/awx/ui/src/screens/Setting/GitHub/GitHubTeamEdit/GitHubTeamEdit.js b/awx/ui/src/screens/Setting/GitHub/GitHubTeamEdit/GitHubTeamEdit.js index b4506c667b..d12d6baae7 100644 --- a/awx/ui/src/screens/Setting/GitHub/GitHubTeamEdit/GitHubTeamEdit.js +++ b/awx/ui/src/screens/Setting/GitHub/GitHubTeamEdit/GitHubTeamEdit.js @@ -94,10 +94,9 @@ function GitHubTeamEdit() { const initialValues = (fields) => Object.keys(fields).reduce((acc, key) => { if (fields[key].type === 'list' || fields[key].type === 'nested object') { - const emptyDefault = fields[key].type === 'list' ? '[]' : '{}'; acc[key] = fields[key].value ? JSON.stringify(fields[key].value, null, 2) - : emptyDefault; + : null; } else { acc[key] = fields[key].value ?? ''; } diff --git a/awx/ui/src/screens/Setting/GoogleOAuth2/GoogleOAuth2Edit/GoogleOAuth2Edit.js b/awx/ui/src/screens/Setting/GoogleOAuth2/GoogleOAuth2Edit/GoogleOAuth2Edit.js index 8da9e8f583..3fa679beeb 100644 --- a/awx/ui/src/screens/Setting/GoogleOAuth2/GoogleOAuth2Edit/GoogleOAuth2Edit.js +++ b/awx/ui/src/screens/Setting/GoogleOAuth2/GoogleOAuth2Edit/GoogleOAuth2Edit.js @@ -100,10 +100,9 @@ function GoogleOAuth2Edit() { const initialValues = (fields) => Object.keys(fields).reduce((acc, key) => { if (fields[key].type === 'list' || fields[key].type === 'nested object') { - const emptyDefault = fields[key].type === 'list' ? '[]' : '{}'; acc[key] = fields[key].value ? JSON.stringify(fields[key].value, null, 2) - : emptyDefault; + : null; } else { acc[key] = fields[key].value ?? ''; } diff --git a/awx/ui/src/screens/Setting/Jobs/JobsEdit/JobsEdit.js b/awx/ui/src/screens/Setting/Jobs/JobsEdit/JobsEdit.js index 1e6d8cef73..fec8d6cdb8 100644 --- a/awx/ui/src/screens/Setting/Jobs/JobsEdit/JobsEdit.js +++ b/awx/ui/src/screens/Setting/Jobs/JobsEdit/JobsEdit.js @@ -103,10 +103,9 @@ function JobsEdit() { const initialValues = (fields) => Object.keys(fields).reduce((acc, key) => { if (fields[key].type === 'list' || fields[key].type === 'nested object') { - const emptyDefault = fields[key].type === 'list' ? '[]' : '{}'; acc[key] = fields[key].value ? JSON.stringify(fields[key].value, null, 2) - : emptyDefault; + : null; } else { acc[key] = fields[key].value ?? ''; } diff --git a/awx/ui/src/screens/Setting/LDAP/LDAPEdit/LDAPEdit.js b/awx/ui/src/screens/Setting/LDAP/LDAPEdit/LDAPEdit.js index 22929f65b9..22e00db54e 100644 --- a/awx/ui/src/screens/Setting/LDAP/LDAPEdit/LDAPEdit.js +++ b/awx/ui/src/screens/Setting/LDAP/LDAPEdit/LDAPEdit.js @@ -146,10 +146,9 @@ function LDAPEdit() { const initialValues = (fields) => Object.keys(fields).reduce((acc, key) => { if (fields[key].type === 'list' || fields[key].type === 'nested object') { - const emptyDefault = fields[key].type === 'list' ? '[]' : '{}'; acc[key] = fields[key].value ? JSON.stringify(fields[key].value, null, 2) - : emptyDefault; + : null; } else { acc[key] = fields[key].value ?? ''; } diff --git a/awx/ui/src/screens/Setting/MiscAuthentication/MiscAuthenticationEdit/MiscAuthenticationEdit.js b/awx/ui/src/screens/Setting/MiscAuthentication/MiscAuthenticationEdit/MiscAuthenticationEdit.js index 6fb9f6c919..f19807e842 100644 --- a/awx/ui/src/screens/Setting/MiscAuthentication/MiscAuthenticationEdit/MiscAuthenticationEdit.js +++ b/awx/ui/src/screens/Setting/MiscAuthentication/MiscAuthenticationEdit/MiscAuthenticationEdit.js @@ -164,10 +164,9 @@ function MiscAuthenticationEdit() { const initialValues = (fields) => Object.keys(fields).reduce((acc, key) => { if (fields[key].type === 'list' || fields[key].type === 'nested object') { - const emptyDefault = fields[key].type === 'list' ? '[]' : '{}'; acc[key] = fields[key].value ? JSON.stringify(fields[key].value, null, 2) - : emptyDefault; + : null; } else { acc[key] = fields[key].value ?? ''; } diff --git a/awx/ui/src/screens/Setting/MiscAuthentication/MiscAuthenticationEdit/MiscAuthenticationEdit.test.js b/awx/ui/src/screens/Setting/MiscAuthentication/MiscAuthenticationEdit/MiscAuthenticationEdit.test.js index b3cbd31db2..cf00ea5716 100644 --- a/awx/ui/src/screens/Setting/MiscAuthentication/MiscAuthenticationEdit/MiscAuthenticationEdit.test.js +++ b/awx/ui/src/screens/Setting/MiscAuthentication/MiscAuthenticationEdit/MiscAuthenticationEdit.test.js @@ -29,9 +29,9 @@ const authenticationData = { 'awx.sso.backends.TACACSPlusBackend', 'awx.main.backends.AWXModelBackend', ], - SOCIAL_AUTH_ORGANIZATION_MAP: {}, - SOCIAL_AUTH_TEAM_MAP: {}, - SOCIAL_AUTH_USER_FIELDS: [], + SOCIAL_AUTH_ORGANIZATION_MAP: null, + SOCIAL_AUTH_TEAM_MAP: null, + SOCIAL_AUTH_USER_FIELDS: null, }; describe('', () => { diff --git a/awx/ui/src/screens/Setting/SAML/SAMLEdit/SAMLEdit.js b/awx/ui/src/screens/Setting/SAML/SAMLEdit/SAMLEdit.js index 46db9eda90..17202503a2 100644 --- a/awx/ui/src/screens/Setting/SAML/SAMLEdit/SAMLEdit.js +++ b/awx/ui/src/screens/Setting/SAML/SAMLEdit/SAMLEdit.js @@ -112,10 +112,9 @@ function SAMLEdit() { const initialValues = (fields) => Object.keys(fields).reduce((acc, key) => { if (fields[key].type === 'list' || fields[key].type === 'nested object') { - const emptyDefault = fields[key].type === 'list' ? '[]' : '{}'; acc[key] = fields[key].value ? JSON.stringify(fields[key].value, null, 2) - : emptyDefault; + : null; } else { acc[key] = fields[key].value ?? ''; } diff --git a/awx/ui/src/screens/Setting/shared/SettingDetail.js b/awx/ui/src/screens/Setting/shared/SettingDetail.js index dca91d0cef..c133bfbe06 100644 --- a/awx/ui/src/screens/Setting/shared/SettingDetail.js +++ b/awx/ui/src/screens/Setting/shared/SettingDetail.js @@ -5,7 +5,7 @@ import { Detail } from 'components/DetailList'; import CodeDetail from 'components/DetailList/CodeDetail'; function sortObj(obj) { - if (typeof obj !== 'object' || Array.isArray(obj)) { + if (typeof obj !== 'object' || Array.isArray(obj) || obj === null) { return obj; } const sorted = {}; @@ -30,7 +30,7 @@ export default ({ helpText, id, label, type, unit = '', value }) => { label={label} mode="javascript" rows={4} - value={JSON.stringify(sortObj(value || {}), undefined, 2)} + value={JSON.stringify(sortObj(value), undefined, 2)} /> ); break; @@ -42,7 +42,7 @@ export default ({ helpText, id, label, type, unit = '', value }) => { label={label} mode="javascript" rows={4} - value={JSON.stringify(value || [], undefined, 2)} + value={JSON.stringify(value, undefined, 2)} /> ); break; diff --git a/awx/ui/src/screens/Setting/shared/SharedFields.js b/awx/ui/src/screens/Setting/shared/SharedFields.js index 887547186b..d085761a93 100644 --- a/awx/ui/src/screens/Setting/shared/SharedFields.js +++ b/awx/ui/src/screens/Setting/shared/SharedFields.js @@ -440,10 +440,8 @@ const ObjectField = ({ name, config, isRequired = false }) => { const [field, meta, helpers] = useField({ name, validate }); const isValid = !(meta.touched && meta.error); - const emptyDefault = config?.type === 'list' ? '[]' : '{}'; - const defaultRevertValue = config?.default - ? JSON.stringify(config.default, null, 2) - : emptyDefault; + const defaultRevertValue = + config?.default !== null ? JSON.stringify(config.default, null, 2) : null; return config ? ( @@ -458,7 +456,12 @@ const ObjectField = ({ name, config, isRequired = false }) => { > {