mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-29 12:06:44 +00:00
* Remove django-allauth-2fa Fixes #6281 * fix req * fix file again * remove allauth_2fa flows * reintroduce otp * fix rq * remove old ref * remove otp things from settings * reintroduce otp codes * remove totp section * bump version * fix reqs * add missing model * ignore TOTP migration if the model is not laoded * add model deps * add extra migrations step for easier testing * add migration testing * remove old catch * cover static devies too * remove more old stuff * fix import * mrege migrations * bump API version * switch to allauth.usersessions * add headless * re-add saml/openid * user sessions cleanup * turn off normal allauth urls if CUI is not active * disable tests that rely on old endpoints - to be replaced * always track session changes * remove old allauth templates * remove old ref * add missing model * fix session lookup * always logout when pwd is changed * reimplement session ending * fix merge * upgrade reqs * lower cryptography version * clean allauth_2fa reference * disable test temporarly * fix migration check * disable tests temporarly * Re-implement auth flow using new APIs; adds MFA to PUI * re-implement logoff * stop failure message from appearing when in MFA flow * remove jwt mention * fix: email endpoints (to be cleaned TODO@matmair) * remove unused endpoints * ignore the now often-used 410 error * fix auth for email actions in MFA scenarios * add mfa listing use build-in forms * add dummy entry for missing frontend urls; see TODO@matmair * remove unneeded change of confirm url * add mfa reg endpoint (not fully implemented) * implement more provider stuff * simplify calls * make calls more robust * switch to browser based sessions * add todo's * update api version * remove x-session, not needed anymore * remove old urls * remove ui preference - there is no decision anymore * fix login redirect logic * change name to ensure 1p can detect field * add mfa table * fix remove sso provider account action; provider (user) admin stuff is done * reduce templates to the raw basics * fix tests * more exclusions * rewrite url structure * move buildin token test * re-enable registration tests * re-implement registrations * enable registration for now * re-implement password change * adjust tests * fix asserts * align names with allauth * simplify * refactor and rephrasing * fix nesting issue * clean up urls even more * add mfa add and remove screens * add type * revert dep change * fix api version * re-add settings * simplify urls * Add timeout to login wait for * fix url assertation * remove unneded mfa_enabled * add setting for configuring types * bump api version * fix password reset flow * change settings order * save auth context * rename var to remove confusion * make login/register seperate paths * make info text better * adjust urls * add error message * disable buttons if no email is set * add custom adapters for MFA and headless authentication to use upstreamed features * move auth settings to status * respect more settings * update settings * bump api version * remove depreceated docs part * remove dj_rest_auth stuff * fix api_version bump * remove temp fix * fix provider login * remove unsupported option * remove hash requirement for now * simplify customisation * implement email-verification * remove auth from api docs * fix override of get_frontend_url details in https://codeberg.org/allauth/django-allauth/pulls/4248 * bump api again * fix req * Revert "remove hash requirement for now" This reverts commit 00bb6c5274ee673948280ec084831edfa40ec3de. * remove usage of git repo * fix doc string * extend schema generation to just patch in allauth * patch allauth OAI ref names * reduce types * refactor code structure * fix ref patching a bit more * add param cleanup * ensure strings, number, bools are handled correctly in cleanup * move fnc * shorten names * bump allauth * re-add auth doc section * fix doc structure * revert playwrigth change * ckean up browser only path * clean up parameters that we do not use * re-add 2fa required middleware * fix mail sending hook * fix password set texts * Add forced mfa setup * remove type * adjust api_version * Remove debug prints * Add error message for TOTP creation * Handle failed TOTP login * fix reqs * Add error on 409 during login * fix tested url * fix api_version * fix allauth version * minimize req diff * further minimize diff --------- Co-authored-by: Oliver Walters <oliver.henry.walters@gmail.com>
94 lines
3.2 KiB
TypeScript
94 lines
3.2 KiB
TypeScript
import * as crypto from 'node:crypto';
|
|
import * as fs from 'node:fs';
|
|
import os from 'node:os';
|
|
import * as path from 'node:path';
|
|
import { test as baseTest } from '@playwright/test';
|
|
|
|
const istanbulCLIOutput = path.join(process.cwd(), '.nyc_output');
|
|
const platform = os.platform();
|
|
let systemKeyVar: string;
|
|
if (platform === 'darwin') {
|
|
systemKeyVar = 'Meta';
|
|
} else {
|
|
systemKeyVar = 'Control';
|
|
}
|
|
/* metaKey is the local action key (used for spotlight for example) */
|
|
export const systemKey = systemKeyVar;
|
|
|
|
export function generateUUID(): string {
|
|
return crypto.randomBytes(16).toString('hex');
|
|
}
|
|
|
|
export const test = baseTest.extend({
|
|
context: async ({ context }, use) => {
|
|
await context.addInitScript(() =>
|
|
window.addEventListener('beforeunload', () =>
|
|
(window as any).collectIstanbulCoverage(
|
|
JSON.stringify((window as any).__coverage__)
|
|
)
|
|
)
|
|
);
|
|
await fs.promises.mkdir(istanbulCLIOutput, { recursive: true });
|
|
await context.exposeFunction(
|
|
'collectIstanbulCoverage',
|
|
(coverageJSON: string) => {
|
|
if (coverageJSON)
|
|
fs.writeFileSync(
|
|
path.join(
|
|
istanbulCLIOutput,
|
|
`playwright_coverage_${generateUUID()}.json`
|
|
),
|
|
coverageJSON
|
|
);
|
|
}
|
|
);
|
|
await use(context);
|
|
for (const page of context.pages()) {
|
|
await page.evaluate(() =>
|
|
(window as any).collectIstanbulCoverage(
|
|
JSON.stringify((window as any).__coverage__)
|
|
)
|
|
);
|
|
}
|
|
},
|
|
// Ensure no errors are thrown in the console
|
|
page: async ({ baseURL, page }, use) => {
|
|
const messages = [];
|
|
page.on('console', (msg) => {
|
|
const url = msg.location().url;
|
|
if (
|
|
msg.type() === 'error' &&
|
|
!msg.text().startsWith('ERR: ') &&
|
|
msg.text().indexOf('downloadable font: download failed') < 0 &&
|
|
msg
|
|
.text()
|
|
.indexOf(
|
|
'Support for defaultProps will be removed from function components in a future major release'
|
|
) < 0 &&
|
|
msg.text() !=
|
|
'Failed to load resource: the server responded with a status of 400 (Bad Request)' &&
|
|
!msg.text().includes('http://localhost:8000/this/does/not/exist.js') &&
|
|
url != 'http://localhost:8000/this/does/not/exist.js' &&
|
|
url != 'http://localhost:8000/api/user/me/' &&
|
|
url != 'http://localhost:8000/api/user/token/' &&
|
|
url != 'http://localhost:8000/api/auth/v1/auth/login' &&
|
|
url != 'http://localhost:8000/api/auth/v1/auth/session' &&
|
|
url != 'http://localhost:8000/api/auth/v1/account/password/change' &&
|
|
url != 'http://localhost:8000/api/barcode/' &&
|
|
url != 'https://docs.inventree.org/en/versions.json' &&
|
|
url != 'http://localhost:5173/favicon.ico' &&
|
|
!url.startsWith('https://api.github.com/repos/inventree') &&
|
|
!url.startsWith('http://localhost:8000/api/news/') &&
|
|
!url.startsWith('http://localhost:8000/api/notifications/') &&
|
|
!url.startsWith('chrome://') &&
|
|
url.indexOf('99999') < 0
|
|
)
|
|
messages.push(msg);
|
|
});
|
|
await use(page);
|
|
expect(messages).toEqual([]);
|
|
}
|
|
});
|
|
|
|
export const expect = test.expect;
|