Skip to content

Commit

Permalink
Added support for Oracle db connection (#12752)
Browse files Browse the repository at this point in the history
* Added support for Oracle db connection

* Added changelog

* Fixed test

* Added test for role setting

* Skip full acceptance test in case of oracle db

* Fix db role test

* Update changelog

* Fix db role fields after rebase

* Added missing test
  • Loading branch information
arnav28 committed Oct 11, 2021
1 parent f7ab7aa commit d919e32
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 0 deletions.
3 changes: 3 additions & 0 deletions changelog/12752.txt
@@ -0,0 +1,3 @@
```release-note:feature
**Oracle DB in the UI**: Oracle DB connection is now supported in the UI
```
18 changes: 18 additions & 0 deletions ui/app/models/database/connection.js
Expand Up @@ -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' },
],
}
];

/**
Expand Down
2 changes: 2 additions & 0 deletions ui/app/utils/database-role-fields.js
Expand Up @@ -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'],
Expand All @@ -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'],
},
};

Expand Down
26 changes: 26 additions & 0 deletions ui/tests/acceptance/secrets/backend/database/secret-test.js
Expand Up @@ -185,6 +185,27 @@ 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-input="root_rotation_statements"]')
.exists(`Root rotation statements exists for ${name}`);
},
},
];

module('Acceptance | secrets/database/*', function(hooks) {
Expand Down Expand Up @@ -235,6 +256,11 @@ 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;
}
testCase.requiredFields(assert, testCase.name);
await connectionPage.toggleVerify();
await connectionPage.save();
Expand Down
Expand Up @@ -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', 'ttl', 'max_ttl'],
},
];

// used to calculate checks that fields do NOT show up
Expand Down

0 comments on commit d919e32

Please sign in to comment.