feat: add OTP and Passkey Tools to Toolbox 0.11.0

This commit is contained in:
2026-08-19 12:20:27 +02:00
parent 5ed7134d42
commit 0baeda8be8
19 changed files with 188 additions and 41 deletions
+1 -1
View File
@@ -83,7 +83,7 @@ function makeLock(artifact: string, sha256: string) {
return {
schemaVersion: 1,
releaseVersion: '0.1.0',
portalVersion: '0.2.12',
portalVersion: '0.2.13',
catalogue: {
id: 'de.add-ideas.toolbox',
name: 'Test Toolbox',
+34 -1
View File
@@ -85,7 +85,15 @@ describe('production deployment', () => {
expect(containerfile).toContain(
'COPY --from=release --chown=101:101 /tmp/toolbox/'
);
for (const app of ['pdf', 'xslt', 'onenote', 'av', 'regex', 'svg']) {
for (const app of [
'pdf',
'xslt',
'onenote',
'av',
'regex',
'svg',
'auth',
]) {
expect(containerfile).toContain(
`test -f /tmp/toolbox/apps/${app}/toolbox-app.json`
);
@@ -133,6 +141,31 @@ describe('production deployment', () => {
expect(compose).not.toMatch(/^\s+ports:/mu);
});
it('isolates live WebAuthn behind a dedicated hostname and path prefix', () => {
expect(environmentExample).toContain(
'AUTH_TOOLS_HOST=auth.toolbox.add-ideas.de'
);
expect(compose).toContain(
'traefik.http.routers.addideas-auth.rule: "Host(`${AUTH_TOOLS_HOST:-auth.toolbox.add-ideas.de}`)"'
);
expect(compose).toContain(
'traefik.http.routers.addideas-auth.entrypoints: websecure'
);
expect(compose).toContain(
'traefik.http.routers.addideas-auth.tls.certresolver: "${TRAEFIK_CERT_RESOLVER:-netcup}"'
);
expect(compose).toContain(
'traefik.http.routers.addideas-auth.middlewares: addideas-auth-prefix'
);
expect(compose).toContain(
'traefik.http.middlewares.addideas-auth-prefix.addprefix.prefix: /apps/auth'
);
expect(compose).toContain(
'traefik.http.routers.addideas-auth-http.middlewares: addideas-toolbox-https-redirect'
);
expect(compose).not.toContain('addideas-auth-stripprefix');
});
it('quotes nginx regular expressions that contain brace quantifiers', () => {
expect(nginxConfig).toContain(
'"~^/(?:.*/)?assets/.*-[A-Za-z0-9_-]{8,}\\.[^/]+$"'