mirror of
https://github.com/inventree/InvenTree.git
synced 2025-07-10 23:14:13 +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 00bb6c5274
.
* 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;
|