Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions common/errorCodes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = {
ERR_MISSING_PASSPHRASE: 'ERR_MISSING_PASSPHRASE',
ERR_OSSL_BAD_DECRYPT: 'ERR_OSSL_BAD_DECRYPT',
};
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ module.exports = {
'Incorrect Okta username/password or MFA is enabled. Please, check credentials or use the "Identity Provider SSO (via external browser)" for MFA auth',
OKTA_MFA_ERROR:
'Native Okta auth doesn\'t support MFA. Please, use the "Identity Provider SSO (via external browser)" auth instead',
KEY_PAIR_ERROR: 'Please check that the passphrase is provided and matches the key.',
};
20 changes: 7 additions & 13 deletions forward_engineering/api.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
const _ = require('lodash');
const { commentDropStatements } = require('./helpers/commentHelpers/commentDropStatements');
const { DROP_STATEMENTS } = require('./helpers/constants');
const { getAlterScript } = require('./helpers/alterScriptFromDeltaHelper');
const { applyToInstance } = require('./helpers/applyToInstanceHelper');
const reApi = require('../reverse_engineering/api');
const { commentDropStatements } = require('./helpers/commentHelpers/commentDropStatements.js');
const { DROP_STATEMENTS } = require('./helpers/constants.js');
const { getAlterScript } = require('./helpers/alterScriptFromDeltaHelper.js');
const { applyToInstance } = require('./helpers/applyToInstanceHelper.js');
const reApi = require('../reverse_engineering/api.js');
const { handleError } = require('./helpers/handleError.js');

module.exports = {
generateScript(data, logger, callback, app) {
Expand Down Expand Up @@ -57,14 +58,7 @@ module.exports = {
.then(result => {
callback(null, result);
})
.catch(error => {
const err = {
message: error.message,
stack: error.stack,
};
logger.log('error', err, 'Error when applying to instance');
callback(err);
});
.catch(error => handleError(logger, error, callback));
},

async getExternalBrowserUrl(connectionInfo, logger, cb, app) {
Expand Down
22 changes: 22 additions & 0 deletions forward_engineering/helpers/handleError.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
const errorMessages = require('../../common/errorMessages.js');
const errorCodes = require('../../common/errorCodes.js');

const handleError = (logger, error, callback) => {
logger.log('error', error, 'Error when applying to instance');

if (error.code === errorCodes.ERR_MISSING_PASSPHRASE || error.code === errorCodes.ERR_OSSL_BAD_DECRYPT) {
return callback({
message: errorMessages.KEY_PAIR_ERROR,
type: 'simpleError',
});
}

return callback({
message: error.message,
stack: error.stack,
});
};

module.exports = {
handleError,
};
12 changes: 11 additions & 1 deletion reverse_engineering/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
const _ = require('lodash');
const snowflakeHelper = require('./helpers/snowflakeHelper');
const ssoHelper = require('./helpers/ssoHelper');
const errorMessages = require('../common/errorMessages.js');
const errorCodes = require('../common/errorCodes.js');

const connect = async (connectionInfo, logger, cb) => {
logger.clear();
Expand Down Expand Up @@ -270,9 +272,17 @@ const getSampleDocSize = (count, recordSamplingSettings) => {
};

const handleError = (logger, error, cb) => {
const message = _.isString(error) ? error : _.get(error, 'message', 'Reverse Engineering error');
logger.log('error', { error }, 'Reverse Engineering error');

if (error.code === errorCodes.ERR_MISSING_PASSPHRASE || error.code === errorCodes.ERR_OSSL_BAD_DECRYPT) {
return cb({
message: errorMessages.KEY_PAIR_ERROR,
type: 'simpleError',
});
}

const message = _.isString(error) ? error : _.get(error, 'message', 'Reverse Engineering error');

return cb({ message });
};

Expand Down
2 changes: 1 addition & 1 deletion reverse_engineering/helpers/connections/connection.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const snowflake = require('snowflake-sdk');

const errorMessages = require('../errorMessages.js');
const errorMessages = require('../../../common/errorMessages.js');
const { CONNECTION_TIMED_OUT_CODE } = require('./constants.js');

const noConnectionError = { message: errorMessages.CONNECTION_ERROR };
Expand Down
23 changes: 14 additions & 9 deletions reverse_engineering/helpers/connections/keyPairConnection.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
const { connectWithTimeout } = require('./connection.js');

const authByKeyPair = ({ account, role, timeout, username, privateKeyPath, privateKeyPass }) => {
return connectWithTimeout({
account,
role,
timeout,
username,
authenticator: 'SNOWFLAKE_JWT',
privateKeyPath,
...(privateKeyPass && { privateKeyPass }),
});
try {
return connectWithTimeout({
account,
role,
timeout,
username,
authenticator: 'SNOWFLAKE_JWT',
privateKeyPath,
...(privateKeyPass && { privateKeyPass }),
});
} catch (err) {
if (err.code === 'ERR_MISSING_PASSPHRASE') {
}
}
};

module.exports = {
Expand Down
2 changes: 1 addition & 1 deletion reverse_engineering/helpers/connections/oktaConnection.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const {
HACKOLADE_APPLICATION,
} = require('./constants.js');
const { getAccountName, getRole } = require('../common.js');
const errorMessages = require('../errorMessages.js');
const errorMessages = require('../../../common/errorMessages.js');

const authByOkta = async ({
account,
Expand Down
2 changes: 1 addition & 1 deletion reverse_engineering/helpers/snowflakeHelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const snowflake = require('snowflake-sdk');
const axios = require('axios');
const uuid = require('uuid');
const BSON = require('bson');
const errorMessages = require('./errorMessages.js');
const errorMessages = require('../../common/errorMessages.js');
const { getRole, getAccountName, removeQuotes } = require('./common.js');
const { authByOkta } = require('./connections/oktaConnection.js');
const { authByExternalBrowser } = require('./connections/externalBrowserConnection.js');
Expand Down
2 changes: 1 addition & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@
"forceConsistentCasingInFileNames": true,
"typeRoots": ["./node_modules/@types", "./types"]
},
"include": ["reverse_engineering", "forward_engineering"],
"include": ["reverse_engineering", "forward_engineering", "common/errorCodes.js", "common/errorMessages.js"],
"exclude": ["**/node_modules/**", "release/**/*"]
}