From cec117459bcb024520e420c255df6df594484845 Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Tue, 25 Feb 2025 23:02:19 +0100 Subject: [PATCH] [PM-18599] Forbid unknown property and element in tests (#13556) Fail tests when relying on unknownProperties or unknownElements. Existing instances are whitelist and have tickets created and assigned to the relevant teams. --- apps/browser/test.setup.ts | 2 +- apps/browser/tsconfig.json | 1 + apps/desktop/test.setup.ts | 2 +- apps/desktop/tsconfig.json | 1 + .../app/auth/recover-two-factor.component.spec.ts | 2 ++ .../reports/pages/breach-report.component.spec.ts | 3 +++ .../pages/exposed-passwords-report.component.spec.ts | 3 +++ .../inactive-two-factor-report.component.spec.ts | 2 ++ .../pages/reused-passwords-report.component.spec.ts | 2 ++ .../unsecured-websites-report.component.spec.ts | 2 ++ .../pages/weak-passwords-report.component.spec.ts | 2 ++ apps/web/test.setup.ts | 2 +- apps/web/tsconfig.json | 1 + bitwarden_license/bit-common/test.setup.ts | 2 +- bitwarden_license/bit-common/tsconfig.json | 1 + bitwarden_license/bit-web/tsconfig.json | 1 + libs/admin-console/test.setup.ts | 2 +- libs/angular/test.setup.ts | 2 +- libs/auth/test.setup.ts | 2 +- libs/billing/test.setup.ts | 2 +- libs/components/test.setup.ts | 2 +- libs/components/tsconfig.json | 3 ++- libs/key-management-ui/test.setup.ts | 2 +- libs/key-management/test.setup.ts | 2 +- libs/platform/test.setup.ts | 2 +- libs/shared/tsconfig.spec.json | 1 + libs/tools/card/test.setup.ts | 2 +- .../send-list-filters.component.spec.ts | 2 ++ libs/tools/send/send-ui/test.setup.ts | 2 +- libs/ui/common/package.json | 10 +++++++++- libs/ui/common/src/setup-jest.ts | 12 ++++++++++++ .../cipher-form-generator.component.spec.ts | 2 ++ libs/vault/test.setup.ts | 2 +- tsconfig.json | 1 + 34 files changed, 65 insertions(+), 17 deletions(-) create mode 100644 libs/ui/common/src/setup-jest.ts diff --git a/apps/browser/test.setup.ts b/apps/browser/test.setup.ts index 27f53e9de1..eb635e646e 100644 --- a/apps/browser/test.setup.ts +++ b/apps/browser/test.setup.ts @@ -1,4 +1,4 @@ -import "jest-preset-angular/setup-jest"; +import "@bitwarden/ui-common/setup-jest"; import { addCustomMatchers } from "@bitwarden/common/spec"; addCustomMatchers(); diff --git a/apps/browser/tsconfig.json b/apps/browser/tsconfig.json index 6b6096825a..e836af1327 100644 --- a/apps/browser/tsconfig.json +++ b/apps/browser/tsconfig.json @@ -32,6 +32,7 @@ "@bitwarden/send-ui": ["../../libs/tools/send/send-ui/src"], "@bitwarden/tools-card": ["../../libs/tools/card/src"], "@bitwarden/ui-common": ["../../libs/ui/common/src"], + "@bitwarden/ui-common/setup-jest": ["../../libs/ui/common/src/setup-jest"], "@bitwarden/vault-export-core": [ "../../libs/tools/export/vault-export/vault-export-core/src" ], diff --git a/apps/desktop/test.setup.ts b/apps/desktop/test.setup.ts index 224262ec83..5c248668a6 100644 --- a/apps/desktop/test.setup.ts +++ b/apps/desktop/test.setup.ts @@ -1,4 +1,4 @@ -import "jest-preset-angular/setup-jest"; +import "@bitwarden/ui-common/setup-jest"; Object.defineProperty(window, "CSS", { value: null }); Object.defineProperty(window, "getComputedStyle", { diff --git a/apps/desktop/tsconfig.json b/apps/desktop/tsconfig.json index 05253fc47d..78b3512405 100644 --- a/apps/desktop/tsconfig.json +++ b/apps/desktop/tsconfig.json @@ -31,6 +31,7 @@ "@bitwarden/send-ui": ["../../libs/tools/send/send-ui/src"], "@bitwarden/tools-card": ["../../libs/tools/card/src"], "@bitwarden/ui-common": ["../../libs/ui/common/src"], + "@bitwarden/ui-common/setup-jest": ["../../libs/ui/common/src/setup-jest"], "@bitwarden/vault-export-core": [ "../../libs/tools/export/vault-export/vault-export-core/src" ], diff --git a/apps/web/src/app/auth/recover-two-factor.component.spec.ts b/apps/web/src/app/auth/recover-two-factor.component.spec.ts index e9e75dca50..40182dee01 100644 --- a/apps/web/src/app/auth/recover-two-factor.component.spec.ts +++ b/apps/web/src/app/auth/recover-two-factor.component.spec.ts @@ -70,6 +70,8 @@ describe("RecoverTwoFactorComponent", () => { }, ], imports: [I18nPipe], + // FIXME(PM-18598): Replace unknownElements and unknownProperties with actual imports + errorOnUnknownElements: false, }); fixture = TestBed.createComponent(RecoverTwoFactorComponent); diff --git a/apps/web/src/app/tools/reports/pages/breach-report.component.spec.ts b/apps/web/src/app/tools/reports/pages/breach-report.component.spec.ts index 1574389a1a..0edde21061 100644 --- a/apps/web/src/app/tools/reports/pages/breach-report.component.spec.ts +++ b/apps/web/src/app/tools/reports/pages/breach-report.component.spec.ts @@ -66,6 +66,9 @@ describe("BreachReportComponent", () => { useValue: mock(), }, ], + // FIXME(PM-18598): Replace unknownElements and unknownProperties with actual imports + errorOnUnknownElements: false, + errorOnUnknownProperties: false, }).compileComponents(); }); diff --git a/apps/web/src/app/tools/reports/pages/exposed-passwords-report.component.spec.ts b/apps/web/src/app/tools/reports/pages/exposed-passwords-report.component.spec.ts index 23bee58521..cf7d8bcb05 100644 --- a/apps/web/src/app/tools/reports/pages/exposed-passwords-report.component.spec.ts +++ b/apps/web/src/app/tools/reports/pages/exposed-passwords-report.component.spec.ts @@ -84,6 +84,9 @@ describe("ExposedPasswordsReportComponent", () => { }, ], schemas: [], + // FIXME(PM-18598): Replace unknownElements and unknownProperties with actual imports + errorOnUnknownElements: false, + errorOnUnknownProperties: false, }).compileComponents(); }); diff --git a/apps/web/src/app/tools/reports/pages/inactive-two-factor-report.component.spec.ts b/apps/web/src/app/tools/reports/pages/inactive-two-factor-report.component.spec.ts index da2395ef1b..fb378b0984 100644 --- a/apps/web/src/app/tools/reports/pages/inactive-two-factor-report.component.spec.ts +++ b/apps/web/src/app/tools/reports/pages/inactive-two-factor-report.component.spec.ts @@ -82,6 +82,8 @@ describe("InactiveTwoFactorReportComponent", () => { }, ], schemas: [], + // FIXME(PM-18598): Replace unknownElements and unknownProperties with actual imports + errorOnUnknownElements: false, }).compileComponents(); }); diff --git a/apps/web/src/app/tools/reports/pages/reused-passwords-report.component.spec.ts b/apps/web/src/app/tools/reports/pages/reused-passwords-report.component.spec.ts index cd0e21dda9..b0232225d6 100644 --- a/apps/web/src/app/tools/reports/pages/reused-passwords-report.component.spec.ts +++ b/apps/web/src/app/tools/reports/pages/reused-passwords-report.component.spec.ts @@ -77,6 +77,8 @@ describe("ReusedPasswordsReportComponent", () => { }, ], schemas: [], + // FIXME(PM-18598): Replace unknownElements and unknownProperties with actual imports + errorOnUnknownElements: false, }).compileComponents(); }); diff --git a/apps/web/src/app/tools/reports/pages/unsecured-websites-report.component.spec.ts b/apps/web/src/app/tools/reports/pages/unsecured-websites-report.component.spec.ts index ada582dbf6..c0ae8d53c9 100644 --- a/apps/web/src/app/tools/reports/pages/unsecured-websites-report.component.spec.ts +++ b/apps/web/src/app/tools/reports/pages/unsecured-websites-report.component.spec.ts @@ -86,6 +86,8 @@ describe("UnsecuredWebsitesReportComponent", () => { }, ], schemas: [], + // FIXME(PM-18598): Replace unknownElements and unknownProperties with actual imports + errorOnUnknownElements: false, }).compileComponents(); }); diff --git a/apps/web/src/app/tools/reports/pages/weak-passwords-report.component.spec.ts b/apps/web/src/app/tools/reports/pages/weak-passwords-report.component.spec.ts index 739deee286..ab202bffb5 100644 --- a/apps/web/src/app/tools/reports/pages/weak-passwords-report.component.spec.ts +++ b/apps/web/src/app/tools/reports/pages/weak-passwords-report.component.spec.ts @@ -85,6 +85,8 @@ describe("WeakPasswordsReportComponent", () => { }, ], schemas: [], + // FIXME(PM-18598): Replace unknownElements and unknownProperties with actual imports + errorOnUnknownElements: false, }).compileComponents(); }); diff --git a/apps/web/test.setup.ts b/apps/web/test.setup.ts index 224262ec83..5c248668a6 100644 --- a/apps/web/test.setup.ts +++ b/apps/web/test.setup.ts @@ -1,4 +1,4 @@ -import "jest-preset-angular/setup-jest"; +import "@bitwarden/ui-common/setup-jest"; Object.defineProperty(window, "CSS", { value: null }); Object.defineProperty(window, "getComputedStyle", { diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index d1da8ac453..3d62a30bc0 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -26,6 +26,7 @@ "@bitwarden/send-ui": ["../../libs/tools/send/send-ui/src"], "@bitwarden/tools-card": ["../../libs/tools/card/src"], "@bitwarden/ui-common": ["../../libs/ui/common/src"], + "@bitwarden/ui-common/setup-jest": ["../../libs/ui/common/src/setup-jest"], "@bitwarden/vault-export-core": [ "../../libs/tools/export/vault-export/vault-export-core/src" ], diff --git a/bitwarden_license/bit-common/test.setup.ts b/bitwarden_license/bit-common/test.setup.ts index a702c63396..3f9ef28ad0 100644 --- a/bitwarden_license/bit-common/test.setup.ts +++ b/bitwarden_license/bit-common/test.setup.ts @@ -1 +1 @@ -import "jest-preset-angular/setup-jest"; +import "@bitwarden/ui-common/setup-jest"; diff --git a/bitwarden_license/bit-common/tsconfig.json b/bitwarden_license/bit-common/tsconfig.json index bc36576f1b..641b0ac6aa 100644 --- a/bitwarden_license/bit-common/tsconfig.json +++ b/bitwarden_license/bit-common/tsconfig.json @@ -22,6 +22,7 @@ "@bitwarden/send-ui": ["../../libs/tools/send/send-ui/src"], "@bitwarden/tools-card": ["../../libs/tools/card/src"], "@bitwarden/ui-common": ["../../libs/ui/common/src"], + "@bitwarden/ui-common/setup-jest": ["../../libs/ui/common/src/setup-jest"], "@bitwarden/vault-export-core": [ "../../libs/tools/export/vault-export/vault-export-core/src" ], diff --git a/bitwarden_license/bit-web/tsconfig.json b/bitwarden_license/bit-web/tsconfig.json index 82e0b7f57f..679513a656 100644 --- a/bitwarden_license/bit-web/tsconfig.json +++ b/bitwarden_license/bit-web/tsconfig.json @@ -27,6 +27,7 @@ "@bitwarden/key-management-ui": ["../../libs/key-management-ui/src"], "@bitwarden/platform": ["../../libs/platform/src"], "@bitwarden/ui-common": ["../../libs/ui/common/src"], + "@bitwarden/ui-common/setup-jest": ["../../libs/ui/common/src/setup-jest"], "@bitwarden/send-ui": ["../../libs/tools/send/send-ui/src"], "@bitwarden/tools-card": ["../../libs/tools/card/src"], "@bitwarden/vault": ["../../libs/vault/src"], diff --git a/libs/admin-console/test.setup.ts b/libs/admin-console/test.setup.ts index 8ab102f2cf..7656954fec 100644 --- a/libs/admin-console/test.setup.ts +++ b/libs/admin-console/test.setup.ts @@ -1,7 +1,7 @@ import { webcrypto } from "crypto"; import { addCustomMatchers } from "@bitwarden/common/spec"; -import "jest-preset-angular/setup-jest"; +import "@bitwarden/ui-common/setup-jest"; addCustomMatchers(); diff --git a/libs/angular/test.setup.ts b/libs/angular/test.setup.ts index 6be6e7b8dd..159c28d2be 100644 --- a/libs/angular/test.setup.ts +++ b/libs/angular/test.setup.ts @@ -1,5 +1,5 @@ import { webcrypto } from "crypto"; -import "jest-preset-angular/setup-jest"; +import "@bitwarden/ui-common/setup-jest"; Object.defineProperty(window, "CSS", { value: null }); Object.defineProperty(window, "getComputedStyle", { diff --git a/libs/auth/test.setup.ts b/libs/auth/test.setup.ts index 6be6e7b8dd..159c28d2be 100644 --- a/libs/auth/test.setup.ts +++ b/libs/auth/test.setup.ts @@ -1,5 +1,5 @@ import { webcrypto } from "crypto"; -import "jest-preset-angular/setup-jest"; +import "@bitwarden/ui-common/setup-jest"; Object.defineProperty(window, "CSS", { value: null }); Object.defineProperty(window, "getComputedStyle", { diff --git a/libs/billing/test.setup.ts b/libs/billing/test.setup.ts index 6be6e7b8dd..159c28d2be 100644 --- a/libs/billing/test.setup.ts +++ b/libs/billing/test.setup.ts @@ -1,5 +1,5 @@ import { webcrypto } from "crypto"; -import "jest-preset-angular/setup-jest"; +import "@bitwarden/ui-common/setup-jest"; Object.defineProperty(window, "CSS", { value: null }); Object.defineProperty(window, "getComputedStyle", { diff --git a/libs/components/test.setup.ts b/libs/components/test.setup.ts index a702c63396..3f9ef28ad0 100644 --- a/libs/components/test.setup.ts +++ b/libs/components/test.setup.ts @@ -1 +1 @@ -import "jest-preset-angular/setup-jest"; +import "@bitwarden/ui-common/setup-jest"; diff --git a/libs/components/tsconfig.json b/libs/components/tsconfig.json index abd5830d42..eceaf0f381 100644 --- a/libs/components/tsconfig.json +++ b/libs/components/tsconfig.json @@ -21,7 +21,8 @@ "paths": { "@bitwarden/common/*": ["../common/src/*"], "@bitwarden/platform": ["../platform/src"], - "@bitwarden/ui-common": ["../ui/common/src"] + "@bitwarden/ui-common": ["../ui/common/src"], + "@bitwarden/ui-common/setup-jest": ["../ui/common/src/setup-jest"] }, "plugins": [ { diff --git a/libs/key-management-ui/test.setup.ts b/libs/key-management-ui/test.setup.ts index 6be6e7b8dd..159c28d2be 100644 --- a/libs/key-management-ui/test.setup.ts +++ b/libs/key-management-ui/test.setup.ts @@ -1,5 +1,5 @@ import { webcrypto } from "crypto"; -import "jest-preset-angular/setup-jest"; +import "@bitwarden/ui-common/setup-jest"; Object.defineProperty(window, "CSS", { value: null }); Object.defineProperty(window, "getComputedStyle", { diff --git a/libs/key-management/test.setup.ts b/libs/key-management/test.setup.ts index 6be6e7b8dd..159c28d2be 100644 --- a/libs/key-management/test.setup.ts +++ b/libs/key-management/test.setup.ts @@ -1,5 +1,5 @@ import { webcrypto } from "crypto"; -import "jest-preset-angular/setup-jest"; +import "@bitwarden/ui-common/setup-jest"; Object.defineProperty(window, "CSS", { value: null }); Object.defineProperty(window, "getComputedStyle", { diff --git a/libs/platform/test.setup.ts b/libs/platform/test.setup.ts index 6be6e7b8dd..159c28d2be 100644 --- a/libs/platform/test.setup.ts +++ b/libs/platform/test.setup.ts @@ -1,5 +1,5 @@ import { webcrypto } from "crypto"; -import "jest-preset-angular/setup-jest"; +import "@bitwarden/ui-common/setup-jest"; Object.defineProperty(window, "CSS", { value: null }); Object.defineProperty(window, "getComputedStyle", { diff --git a/libs/shared/tsconfig.spec.json b/libs/shared/tsconfig.spec.json index 9c98378659..6d2c749812 100644 --- a/libs/shared/tsconfig.spec.json +++ b/libs/shared/tsconfig.spec.json @@ -24,6 +24,7 @@ "@bitwarden/send-ui": ["../tools/send/send-ui/src"], "@bitwarden/tools-card": ["../tools/card/src"], "@bitwarden/ui-common": ["../ui/common/src"], + "@bitwarden/ui-common/setup-jest": ["../ui/common/src/setup-jest"], "@bitwarden/vault-export-core": ["../tools/export/vault-export/vault-export-core/src"], "@bitwarden/vault-export-ui": ["../tools/export/vault-export/vault-export-ui/src"], "@bitwarden/vault": ["../vault/src"] diff --git a/libs/tools/card/test.setup.ts b/libs/tools/card/test.setup.ts index a702c63396..3f9ef28ad0 100644 --- a/libs/tools/card/test.setup.ts +++ b/libs/tools/card/test.setup.ts @@ -1 +1 @@ -import "jest-preset-angular/setup-jest"; +import "@bitwarden/ui-common/setup-jest"; diff --git a/libs/tools/send/send-ui/src/send-list-filters/send-list-filters.component.spec.ts b/libs/tools/send/send-ui/src/send-list-filters/send-list-filters.component.spec.ts index 2f6bf691c1..b832ac36ca 100644 --- a/libs/tools/send/send-ui/src/send-list-filters/send-list-filters.component.spec.ts +++ b/libs/tools/send/send-ui/src/send-list-filters/send-list-filters.component.spec.ts @@ -51,6 +51,8 @@ describe("SendListFiltersComponent", () => { { provide: BillingAccountProfileStateService, useValue: billingAccountProfileStateService }, { provide: AccountService, useValue: accountService }, ], + // FIXME(PM-18598): Replace unknownElements and unknownProperties with actual imports + errorOnUnknownProperties: false, }).compileComponents(); fixture = TestBed.createComponent(SendListFiltersComponent); diff --git a/libs/tools/send/send-ui/test.setup.ts b/libs/tools/send/send-ui/test.setup.ts index a702c63396..3f9ef28ad0 100644 --- a/libs/tools/send/send-ui/test.setup.ts +++ b/libs/tools/send/send-ui/test.setup.ts @@ -1 +1 @@ -import "jest-preset-angular/setup-jest"; +import "@bitwarden/ui-common/setup-jest"; diff --git a/libs/ui/common/package.json b/libs/ui/common/package.json index f1b03a3ebd..4ea0f8aed7 100644 --- a/libs/ui/common/package.json +++ b/libs/ui/common/package.json @@ -11,5 +11,13 @@ "type": "git", "url": "https://github.com/bitwarden/clients" }, - "license": "GPL-3.0" + "license": "GPL-3.0", + "exports": { + ".": { + "import": "./src/index.ts" + }, + "./setup-jest": { + "import": "./src/setup-jest.ts" + } + } } diff --git a/libs/ui/common/src/setup-jest.ts b/libs/ui/common/src/setup-jest.ts new file mode 100644 index 0000000000..cada139500 --- /dev/null +++ b/libs/ui/common/src/setup-jest.ts @@ -0,0 +1,12 @@ +import "jest-preset-angular/setup-jest"; +import { getTestBed } from "@angular/core/testing"; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting, +} from "@angular/platform-browser-dynamic/testing"; + +getTestBed().resetTestEnvironment(); +getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { + errorOnUnknownElements: true, + errorOnUnknownProperties: true, +}); diff --git a/libs/vault/src/cipher-form/components/cipher-generator/cipher-form-generator.component.spec.ts b/libs/vault/src/cipher-form/components/cipher-generator/cipher-form-generator.component.spec.ts index 8adda7d1a0..7949c1fcc1 100644 --- a/libs/vault/src/cipher-form/components/cipher-generator/cipher-form-generator.component.spec.ts +++ b/libs/vault/src/cipher-form/components/cipher-generator/cipher-form-generator.component.spec.ts @@ -32,6 +32,8 @@ describe("CipherFormGeneratorComponent", () => { await TestBed.configureTestingModule({ imports: [CipherFormGeneratorComponent], providers: [{ provide: I18nService, useValue: { t: (key: string) => key } }], + // FIXME(PM-18598): Replace unknownElements and unknownProperties with actual imports + errorOnUnknownProperties: false, }) .overrideComponent(CipherFormGeneratorComponent, { remove: { imports: [GeneratorModule] }, diff --git a/libs/vault/test.setup.ts b/libs/vault/test.setup.ts index 6be6e7b8dd..159c28d2be 100644 --- a/libs/vault/test.setup.ts +++ b/libs/vault/test.setup.ts @@ -1,5 +1,5 @@ import { webcrypto } from "crypto"; -import "jest-preset-angular/setup-jest"; +import "@bitwarden/ui-common/setup-jest"; Object.defineProperty(window, "CSS", { value: null }); Object.defineProperty(window, "getComputedStyle", { diff --git a/tsconfig.json b/tsconfig.json index cfc33f572e..37f7aac05d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -38,6 +38,7 @@ "@bitwarden/send-ui": ["./libs/tools/send/send-ui/src"], "@bitwarden/tools-card": ["./libs/tools/card/src"], "@bitwarden/ui-common": ["./libs/ui/common/src"], + "@bitwarden/ui-common/setup-jest": ["./libs/ui/common/src/setup-jest"], "@bitwarden/vault-export-core": ["./libs/tools/export/vault-export/vault-export-core/src"], "@bitwarden/vault-export-ui": ["./libs/tools/export/vault-export/vault-export-ui/src"], "@bitwarden/vault": ["./libs/vault/src"],