SYNC: cloud test - use test login

This commit is contained in:
SPRINX0\prochazka
2025-06-27 10:51:10 +02:00
committed by Diflow
parent 74b78141b4
commit 930b3d4538
4 changed files with 66 additions and 25 deletions

View File

@@ -14,35 +14,37 @@ beforeEach(() => {
describe('Cloud tests', () => { describe('Cloud tests', () => {
it('Private cloud', () => { it('Private cloud', () => {
cy.testid('WidgetIconPanel_cloudAccount').click(); cy.window().then(win => {
win.__loginToCloudTest('dbgate.test@gmail.com');
cy.origin('https://identity.dbgate.io', () => {
cy.contains('Sign in with GitHub').click();
}); });
cy.origin('https://github.com', () => { // cy.testid('WidgetIconPanel_cloudAccount').click();
cy.get('#login_field').type('dbgatetest');
cy.get('#password').type('Pwd2020Db');
cy.get('input[type="submit"]').click();
});
cy.wait(3000); // cy.origin('https://identity.dbgate.io', () => {
// cy.contains('Sign in with GitHub').click();
// });
cy.location('origin').then(origin => { // cy.origin('https://github.com', () => {
if (origin === 'https://github.com') { // cy.get('#login_field').type('dbgatetest');
// Still on github.com → an authorization step is waiting // cy.get('#password').type('Pwd2020Db');
cy.origin('https://github.com', () => { // cy.get('input[type="submit"]').click();
// Try once, don't wait the full default timeout // });
cy.get('button[data-octo-click="oauth_application_authorization"]', { timeout: 500, log: false }).click(); // if the button exists it will be clicked
// if not, the short timeout elapses and we drop out
});
} else {
// Already back on localhost nothing to authorize
cy.log('OAuth redirect skipped the Authorize screen');
}
});
cy.themeshot('private-cloud-login'); // cy.wait(3000);
// cy.location('origin').then(origin => {
// if (origin === 'https://github.com') {
// // Still on github.com → an authorization step is waiting
// cy.origin('https://github.com', () => {
// // Try once, don't wait the full default timeout
// cy.get('button[data-octo-click="oauth_application_authorization"]', { timeout: 500, log: false }).click(); // if the button exists it will be clicked
// // if not, the short timeout elapses and we drop out
// });
// } else {
// // Already back on localhost nothing to authorize
// cy.log('OAuth redirect skipped the Authorize screen');
// }
// });
cy.contains('Testing Connections').rightclick(); cy.contains('Testing Connections').rightclick();
cy.contains('Administrate access').click(); cy.contains('Administrate access').click();

View File

@@ -13,7 +13,12 @@ const {
} = require('../auth/authProvider'); } = require('../auth/authProvider');
const storage = require('./storage'); const storage = require('./storage');
const { decryptPasswordString } = require('../utility/crypting'); const { decryptPasswordString } = require('../utility/crypting');
const { createDbGateIdentitySession, startCloudTokenChecking, readCloudTokenHolder } = require('../utility/cloudIntf'); const {
createDbGateIdentitySession,
startCloudTokenChecking,
readCloudTokenHolder,
readCloudTestTokenHolder,
} = require('../utility/cloudIntf');
const socket = require('../utility/socket'); const socket = require('../utility/socket');
const logger = getLogger('auth'); const logger = getLogger('auth');
@@ -154,5 +159,11 @@ module.exports = {
return tokenHolder; return tokenHolder;
}, },
cloudTestLogin_meta: true,
async cloudTestLogin({ email }) {
const tokenHolder = await readCloudTestTokenHolder(email);
return tokenHolder;
},
authMiddleware, authMiddleware,
}; };

View File

@@ -93,6 +93,22 @@ async function readCloudTokenHolder(sid) {
return null; return null;
} }
async function readCloudTestTokenHolder(email) {
const resp = await axios.default.post(
`${DBGATE_IDENTITY_URL}/api/test-token`,
{ email },
{
headers: {
...getLicenseHttpHeaders(),
},
}
);
if (resp.data?.email) {
return resp.data;
}
return null;
}
async function loadCloudFiles() { async function loadCloudFiles() {
try { try {
const fileContent = await fs.readFile(path.join(datadir(), 'cloud-files.jsonl'), 'utf-8'); const fileContent = await fs.readFile(path.join(datadir(), 'cloud-files.jsonl'), 'utf-8');
@@ -410,4 +426,5 @@ module.exports = {
putCloudContent, putCloudContent,
removeCloudCachedConnection, removeCloudCachedConnection,
readCloudTokenHolder, readCloudTokenHolder,
readCloudTestTokenHolder,
}; };

View File

@@ -329,3 +329,14 @@ function disableApiLog() {
window['enableApiLog'] = enableApiLog; window['enableApiLog'] = enableApiLog;
window['disableApiLog'] = disableApiLog; window['disableApiLog'] = disableApiLog;
window['__loginToCloudTest'] = async email => {
const tokenHolder = await apiCall('auth/cloud-test-login', { email });
if (tokenHolder) {
cloudSigninTokenHolder.set(tokenHolder);
selectedWidget.set('cloud-private');
} else {
showSnackbarError('Login failed');
}
};