From b46fe865eb61b400da8968b566261f70ca531273 Mon Sep 17 00:00:00 2001 From: Arnav Palnitkar Date: Wed, 6 Oct 2021 11:06:21 -0700 Subject: [PATCH 1/9] Added support for Oracle db connection --- ui/app/models/database/connection.js | 18 +++++++++++++++ .../secrets/backend/database/secret-test.js | 22 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/ui/app/models/database/connection.js b/ui/app/models/database/connection.js index 86ba691e0feea..849d266b57b69 100644 --- a/ui/app/models/database/connection.js +++ b/ui/app/models/database/connection.js @@ -141,6 +141,24 @@ const AVAILABLE_PLUGIN_TYPES = [ { attr: 'username_template', group: 'pluginConfig' }, ], }, + { + value: 'oracle-database-plugin', + displayName: 'Oracle', + fields: [ + { attr: 'plugin_name' }, + { attr: 'name' }, + { attr: 'verify_connection' }, + { attr: 'password_policy' }, + { attr: 'connection_url', group: 'pluginConfig' }, + { attr: 'username', group: 'pluginConfig', show: false }, + { attr: 'password', group: 'pluginConfig', show: false }, + { attr: 'max_open_connections', group: 'pluginConfig' }, + { attr: 'max_idle_connections', group: 'pluginConfig' }, + { attr: 'max_connection_lifetime', group: 'pluginConfig' }, + { attr: 'username_template', group: 'pluginConfig' }, + { attr: 'root_rotation_statements', group: 'statements' }, + ], + } ]; /** diff --git a/ui/tests/acceptance/secrets/backend/database/secret-test.js b/ui/tests/acceptance/secrets/backend/database/secret-test.js index e1aca5bc1c223..2bb50e99a4225 100644 --- a/ui/tests/acceptance/secrets/backend/database/secret-test.js +++ b/ui/tests/acceptance/secrets/backend/database/secret-test.js @@ -185,6 +185,28 @@ const connectionTests = [ .exists(`Root rotation statements exists for ${name}`); }, }, + { + name: 'oracle-connection', + plugin: 'oracle-database-plugin', + url: `{{username}}/{{password}}@localhost:1521/OraDoc.localhost`, + requiredFields: async (assert, name) => { + assert.dom('[data-test-input="username"]').exists(`Username field exists for ${name}`); + assert.dom('[data-test-input="password"]').exists(`Password field exists for ${name}`); + assert + .dom('[data-test-input="max_open_connections"]') + .exists(`Max open connections exists for ${name}`); + assert + .dom('[data-test-input="max_idle_connections"]') + .exists(`Max idle connections exists for ${name}`); + assert + .dom('[data-test-input="max_connection_lifetime"]') + .exists(`Max connection lifetime exists for ${name}`); + assert.dom('[data-test-toggle-group="TLS options"]').exists('TLS options toggle exists'); + assert + .dom('[data-test-input="root_rotation_statements"]') + .exists(`Root rotation statements exists for ${name}`); + }, + }, ]; module('Acceptance | secrets/database/*', function(hooks) { From 5601a44385c045c8b066a177d3ac790ab2b5650f Mon Sep 17 00:00:00 2001 From: Arnav Palnitkar Date: Wed, 6 Oct 2021 11:08:58 -0700 Subject: [PATCH 2/9] Added changelog --- changelog/12752.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changelog/12752.txt diff --git a/changelog/12752.txt b/changelog/12752.txt new file mode 100644 index 0000000000000..37fa34959aa18 --- /dev/null +++ b/changelog/12752.txt @@ -0,0 +1,3 @@ +```release-note:feature +ui: Support for Oracle database +``` \ No newline at end of file From be72de5d1af2713643162b76d8e066539305758e Mon Sep 17 00:00:00 2001 From: Arnav Palnitkar Date: Wed, 6 Oct 2021 12:14:21 -0700 Subject: [PATCH 3/9] Fixed test --- ui/tests/acceptance/secrets/backend/database/secret-test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/ui/tests/acceptance/secrets/backend/database/secret-test.js b/ui/tests/acceptance/secrets/backend/database/secret-test.js index 2bb50e99a4225..24fbfd585211e 100644 --- a/ui/tests/acceptance/secrets/backend/database/secret-test.js +++ b/ui/tests/acceptance/secrets/backend/database/secret-test.js @@ -179,7 +179,6 @@ const connectionTests = [ assert .dom('[data-test-input="max_connection_lifetime"]') .exists(`Max connection lifetime exists for ${name}`); - assert.dom('[data-test-toggle-group="TLS options"]').exists('TLS options toggle exists'); assert .dom('[data-test-input="root_rotation_statements"]') .exists(`Root rotation statements exists for ${name}`); From 385e625cde729cfd7af30c82e1f0f784129470e6 Mon Sep 17 00:00:00 2001 From: Arnav Palnitkar Date: Wed, 6 Oct 2021 13:11:26 -0700 Subject: [PATCH 4/9] Added test for role setting --- .../components/database-role-setting-form-test.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ui/tests/integration/components/database-role-setting-form-test.js b/ui/tests/integration/components/database-role-setting-form-test.js index f0b153bde1b81..78433e6dd54b4 100644 --- a/ui/tests/integration/components/database-role-setting-form-test.js +++ b/ui/tests/integration/components/database-role-setting-form-test.js @@ -55,6 +55,11 @@ const testCases = [ staticRoleFields: ['username', 'rotation_period'], dynamicRoleFields: ['creation_statements', 'revocation_statements', 'ttl', 'max_ttl'], }, + { + pluginType: 'oracle-database-plugin', + staticRoleFields: ['username', 'rotation_period'], + dynamicRoleFields: ['creation_statements', 'revocation_statements'], + }, ]; // used to calculate checks that fields do NOT show up From 34bac30f75b07007004d2de8ee1d742136d35e20 Mon Sep 17 00:00:00 2001 From: Arnav Palnitkar Date: Wed, 6 Oct 2021 16:21:43 -0700 Subject: [PATCH 5/9] Skip full acceptance test in case of oracle db --- ui/tests/acceptance/secrets/backend/database/secret-test.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ui/tests/acceptance/secrets/backend/database/secret-test.js b/ui/tests/acceptance/secrets/backend/database/secret-test.js index 24fbfd585211e..38e2c13eec062 100644 --- a/ui/tests/acceptance/secrets/backend/database/secret-test.js +++ b/ui/tests/acceptance/secrets/backend/database/secret-test.js @@ -200,7 +200,6 @@ const connectionTests = [ assert .dom('[data-test-input="max_connection_lifetime"]') .exists(`Max connection lifetime exists for ${name}`); - assert.dom('[data-test-toggle-group="TLS options"]').exists('TLS options toggle exists'); assert .dom('[data-test-input="root_rotation_statements"]') .exists(`Root rotation statements exists for ${name}`); @@ -256,6 +255,10 @@ module('Acceptance | secrets/database/*', function(hooks) { } else { await connectionPage.connectionUrl(testCase.url); } + if (testCase.plugin === 'oracle-database-plugin') { + testCase.requiredFields(assert, testCase.name); + continue; + } testCase.requiredFields(assert, testCase.name); await connectionPage.toggleVerify(); await connectionPage.save(); From 7cae7dcdd23ec4875caa085b50fdfa3856ace604 Mon Sep 17 00:00:00 2001 From: Arnav Palnitkar Date: Thu, 7 Oct 2021 09:19:24 -0700 Subject: [PATCH 6/9] Fix db role test --- .../integration/components/database-role-setting-form-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/tests/integration/components/database-role-setting-form-test.js b/ui/tests/integration/components/database-role-setting-form-test.js index 78433e6dd54b4..6d0ac9fb632bf 100644 --- a/ui/tests/integration/components/database-role-setting-form-test.js +++ b/ui/tests/integration/components/database-role-setting-form-test.js @@ -58,7 +58,7 @@ const testCases = [ { pluginType: 'oracle-database-plugin', staticRoleFields: ['username', 'rotation_period'], - dynamicRoleFields: ['creation_statements', 'revocation_statements'], + dynamicRoleFields: ['creation_statements', 'revocation_statements', 'ttl', 'max_ttl'], }, ]; From 8f62056b79318bbb637fd5f0f6b22d461ba9edf5 Mon Sep 17 00:00:00 2001 From: Arnav Palnitkar Date: Thu, 7 Oct 2021 14:33:25 -0700 Subject: [PATCH 7/9] Update changelog --- changelog/12752.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog/12752.txt b/changelog/12752.txt index 37fa34959aa18..c5f1856b8de30 100644 --- a/changelog/12752.txt +++ b/changelog/12752.txt @@ -1,3 +1,3 @@ ```release-note:feature -ui: Support for Oracle database +**Oracle DB in the UI**: Oracle DB connection is now supported in the UI ``` \ No newline at end of file From 46b88078fab263105e74f7273754c421212494e1 Mon Sep 17 00:00:00 2001 From: Arnav Palnitkar Date: Thu, 7 Oct 2021 14:57:15 -0700 Subject: [PATCH 8/9] Fix db role fields after rebase --- ui/app/utils/database-role-fields.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ui/app/utils/database-role-fields.js b/ui/app/utils/database-role-fields.js index b420644bf6440..3dbf1957759c8 100644 --- a/ui/app/utils/database-role-fields.js +++ b/ui/app/utils/database-role-fields.js @@ -13,6 +13,7 @@ export const STATEMENT_FIELDS = { 'mysql-rds-database-plugin': [], 'mysql-legacy-database-plugin': [], 'elasticsearch-database-plugin': [], + 'oracle-database-plugin': [], }, dynamic: { default: ['creation_statements', 'revocation_statements', 'rollback_statements', 'renew_statements'], @@ -23,6 +24,7 @@ export const STATEMENT_FIELDS = { 'mysql-rds-database-plugin': ['creation_statements', 'revocation_statements'], 'mysql-legacy-database-plugin': ['creation_statements', 'revocation_statements'], 'elasticsearch-database-plugin': ['creation_statement'], + 'oracle-database-plugin': ['creation_statements', 'revocation_statements'], }, }; From a5827e031411c565555a3317fcf532a447ac80fa Mon Sep 17 00:00:00 2001 From: Arnav Palnitkar Date: Fri, 8 Oct 2021 10:41:22 -0700 Subject: [PATCH 9/9] Added missing test --- ui/tests/acceptance/secrets/backend/database/secret-test.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ui/tests/acceptance/secrets/backend/database/secret-test.js b/ui/tests/acceptance/secrets/backend/database/secret-test.js index 38e2c13eec062..8ab2744bae4c4 100644 --- a/ui/tests/acceptance/secrets/backend/database/secret-test.js +++ b/ui/tests/acceptance/secrets/backend/database/secret-test.js @@ -179,6 +179,7 @@ const connectionTests = [ assert .dom('[data-test-input="max_connection_lifetime"]') .exists(`Max connection lifetime exists for ${name}`); + assert.dom('[data-test-toggle-group="TLS options"]').exists('TLS options toggle exists'); assert .dom('[data-test-input="root_rotation_statements"]') .exists(`Root rotation statements exists for ${name}`); @@ -255,6 +256,7 @@ module('Acceptance | secrets/database/*', function(hooks) { } else { await connectionPage.connectionUrl(testCase.url); } + // skip adding oracle db connection since plugin doesn't exists if (testCase.plugin === 'oracle-database-plugin') { testCase.requiredFields(assert, testCase.name); continue;