mirror of
https://github.com/bitwarden/jslib
synced 2025-12-22 03:03:15 +00:00
WIP - Split up tests to their proper project
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "@bitwarden/jslib-common",
|
"name": "@bitwarden/jslib-angular",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"description": "Common code used across Bitwarden JavaScript projects.",
|
"description": "Common code used across Bitwarden JavaScript projects.",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
83
common/karma.conf.js
Normal file
83
common/karma.conf.js
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
const webpack = require('webpack');
|
||||||
|
|
||||||
|
module.exports = (config) => {
|
||||||
|
config.set({
|
||||||
|
// base path that will be used to resolve all patterns (eg. files, exclude)
|
||||||
|
basePath: '',
|
||||||
|
|
||||||
|
// frameworks to use
|
||||||
|
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
|
||||||
|
frameworks: ['jasmine', 'webpack'],
|
||||||
|
|
||||||
|
// list of files / patterns to load in the browser
|
||||||
|
files: [
|
||||||
|
{ pattern: 'spec/**/*.spec.ts', watched: false },
|
||||||
|
],
|
||||||
|
|
||||||
|
browsers: [
|
||||||
|
'Chrome'
|
||||||
|
],
|
||||||
|
|
||||||
|
// list of files to exclude
|
||||||
|
exclude: [],
|
||||||
|
|
||||||
|
// preprocess matching files before serving them to the browser
|
||||||
|
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
|
||||||
|
preprocessors: {
|
||||||
|
'spec/**/*.ts': ['webpack', 'sourcemap'],
|
||||||
|
},
|
||||||
|
|
||||||
|
// test results reporter to use
|
||||||
|
// possible values: 'dots', 'progress'
|
||||||
|
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
|
||||||
|
reporters: ['progress', 'kjhtml'],
|
||||||
|
|
||||||
|
// web server port
|
||||||
|
port: 9876,
|
||||||
|
|
||||||
|
// enable / disable colors in the output (reporters and logs)
|
||||||
|
colors: true,
|
||||||
|
|
||||||
|
// level of logging
|
||||||
|
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
|
||||||
|
logLevel: config.LOG_INFO,
|
||||||
|
|
||||||
|
// Concurrency level
|
||||||
|
// how many browser should be started simultaneous
|
||||||
|
concurrency: Infinity,
|
||||||
|
|
||||||
|
client: {
|
||||||
|
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
||||||
|
},
|
||||||
|
|
||||||
|
webpack: {
|
||||||
|
mode: 'development',
|
||||||
|
resolve: {
|
||||||
|
extensions: ['.js', '.ts', '.tsx'],
|
||||||
|
fallback: {
|
||||||
|
"util": require.resolve("util/"),
|
||||||
|
"url": require.resolve("url/"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
new webpack.ProvidePlugin({
|
||||||
|
process: 'process/browser',
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.tsx?$/,
|
||||||
|
loader: 'ts-loader',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
stats: {
|
||||||
|
colors: true,
|
||||||
|
modules: true,
|
||||||
|
reasons: true,
|
||||||
|
errorDetails: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
6150
common/package-lock.json
generated
6150
common/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -17,17 +17,37 @@
|
|||||||
"build": "npm run clean && tsc",
|
"build": "npm run clean && tsc",
|
||||||
"build:watch": "npm run clean && tsc -watch",
|
"build:watch": "npm run clean && tsc -watch",
|
||||||
"lint": "tslint 'src/**/*.ts' 'spec/**/*.ts'",
|
"lint": "tslint 'src/**/*.ts' 'spec/**/*.ts'",
|
||||||
"lint:fix": "tslint 'src/**/*.ts' 'spec/**/*.ts' --fix"
|
"lint:fix": "tslint 'src/**/*.ts' 'spec/**/*.ts' --fix",
|
||||||
|
"test": "karma start --single-run",
|
||||||
|
"test:node": "npm run build && jasmine"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@fluffy-spoon/substitute": "^1.208.0",
|
||||||
|
"@types/jasmine": "^3.10.2",
|
||||||
"@types/lunr": "^2.3.3",
|
"@types/lunr": "^2.3.3",
|
||||||
"@types/node": "^14.17.1",
|
"@types/node": "^14.17.1",
|
||||||
"@types/node-forge": "^0.9.7",
|
"@types/node-forge": "^0.9.7",
|
||||||
"@types/papaparse": "^5.2.5",
|
"@types/papaparse": "^5.2.5",
|
||||||
"@types/tldjs": "^2.3.0",
|
"@types/tldjs": "^2.3.0",
|
||||||
"@types/zxcvbn": "^4.4.1",
|
"@types/zxcvbn": "^4.4.1",
|
||||||
|
"fs": "^0.0.1-security",
|
||||||
|
"jasmine": "^3.10.0",
|
||||||
|
"jasmine-core": "^3.10.1",
|
||||||
|
"jasmine-ts-console-reporter": "^3.1.1",
|
||||||
|
"jsdom": "^19.0.0",
|
||||||
|
"karma": "^6.3.9",
|
||||||
|
"karma-chrome-launcher": "^3.1.0",
|
||||||
|
"karma-jasmine": "^4.0.1",
|
||||||
|
"karma-jasmine-html-reporter": "^1.7.0",
|
||||||
|
"karma-sourcemap-loader": "^0.3.8",
|
||||||
|
"karma-webpack": "^5.0.0",
|
||||||
|
"path": "^0.12.7",
|
||||||
|
"process": "^0.11.10",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"typescript": "4.3.5"
|
"ts-loader": "^9.2.6",
|
||||||
|
"typescript": "4.3.5",
|
||||||
|
"url": "^0.11.0",
|
||||||
|
"util": "^0.12.4"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@microsoft/signalr": "5.0.10",
|
"@microsoft/signalr": "5.0.10",
|
||||||
|
|||||||
9
common/spec/helpers.ts
Normal file
9
common/spec/helpers.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
// tslint:disable-next-line
|
||||||
|
const TSConsoleReporter = require('jasmine-ts-console-reporter');
|
||||||
|
jasmine.getEnv().clearReporters(); // Clear default console reporter
|
||||||
|
jasmine.getEnv().addReporter(new TSConsoleReporter());
|
||||||
|
|
||||||
|
// Polyfills
|
||||||
|
// tslint:disable-next-line
|
||||||
|
const jsdom: any = require('jsdom');
|
||||||
|
(global as any).DOMParser = new jsdom.JSDOM().window.DOMParser;
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import { FirefoxCsvImporter as Importer } from 'jslib-common/importers/firefoxCsvImporter';
|
import { FirefoxCsvImporter as Importer } from '../../src/importers/firefoxCsvImporter';
|
||||||
|
|
||||||
import { CipherView } from 'jslib-common/models/view/cipherView';
|
import { CipherView } from '../../src/models/view/cipherView';
|
||||||
import { LoginUriView } from 'jslib-common/models/view/loginUriView';
|
import { LoginUriView } from '../../src/models/view/loginUriView';
|
||||||
import { LoginView } from 'jslib-common/models/view/loginView';
|
import { LoginView } from '../../src/models/view/loginView';
|
||||||
|
|
||||||
import { data as firefoxAccountsData } from './testData/firefoxCsv/firefoxAccountsData.csv';
|
import { data as firefoxAccountsData } from './testData/firefoxCsv/firefoxAccountsData.csv';
|
||||||
import { data as simplePasswordData } from './testData/firefoxCsv/simplePasswordData.csv';
|
import { data as simplePasswordData } from './testData/firefoxCsv/simplePasswordData.csv';
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { KeePass2XmlImporter as Importer } from 'jslib-common/importers/keepass2XmlImporter';
|
import { KeePass2XmlImporter as Importer } from '../../src/importers/keepass2XmlImporter';
|
||||||
|
|
||||||
const TestData: string = `<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
const TestData: string = `<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||||
<KeePassFile>
|
<KeePassFile>
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
import { LastPassCsvImporter as Importer } from 'jslib-common/importers/lastpassCsvImporter';
|
import { LastPassCsvImporter as Importer } from '../../src/importers/lastpassCsvImporter';
|
||||||
|
|
||||||
import { ImportResult } from 'jslib-common/models/domain/importResult';
|
import { ImportResult } from '../../src/models/domain/importResult';
|
||||||
import { CipherView } from 'jslib-common/models/view/cipherView';
|
import { CipherView } from '../../src/models/view/cipherView';
|
||||||
import { FieldView } from 'jslib-common/models/view/fieldView';
|
import { FieldView } from '../../src/models/view/fieldView';
|
||||||
|
|
||||||
import { CipherType } from 'jslib-common/enums/cipherType';
|
import { CipherType } from '../../src/enums/cipherType';
|
||||||
import { FieldType } from 'jslib-common/enums/fieldType';
|
import { FieldType } from '../../src/enums/fieldType';
|
||||||
|
|
||||||
function baseExcept(result: ImportResult) {
|
function baseExcept(result: ImportResult) {
|
||||||
expect(result).not.toBeNull();
|
expect(result).not.toBeNull();
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
import { NordPassCsvImporter as Importer } from 'jslib-common/importers/nordpassCsvImporter';
|
import { NordPassCsvImporter as Importer } from '../../src/importers/nordpassCsvImporter';
|
||||||
|
|
||||||
import { CipherType } from 'jslib-common/enums/cipherType';
|
import { CipherType } from '../../src/enums/cipherType';
|
||||||
import { SecureNoteType } from 'jslib-common/enums/secureNoteType';
|
import { SecureNoteType } from '../../src/enums/secureNoteType';
|
||||||
import { CipherView } from 'jslib-common/models/view/cipherView';
|
import { CipherView } from '../../src/models/view/cipherView';
|
||||||
import { IdentityView } from 'jslib-common/models/view/identityView';
|
import { IdentityView } from '../../src/models/view/identityView';
|
||||||
|
|
||||||
import { data as creditCardData } from './testData/nordpassCsv/nordpass.card.csv';
|
import { data as creditCardData } from './testData/nordpassCsv/nordpass.card.csv';
|
||||||
import { data as identityData } from './testData/nordpassCsv/nordpass.identity.csv';
|
import { data as identityData } from './testData/nordpassCsv/nordpass.identity.csv';
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { FieldType } from 'jslib-common/enums/fieldType';
|
import { FieldType } from '../../src/enums/fieldType';
|
||||||
import { OnePassword1PifImporter as Importer } from 'jslib-common/importers/onepasswordImporters/onepassword1PifImporter';
|
import { OnePassword1PifImporter as Importer } from '../../src/importers/onepasswordImporters/onepassword1PifImporter';
|
||||||
|
|
||||||
const TestData: string = '***aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee***\n' +
|
const TestData: string = '***aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee***\n' +
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import { OnePasswordMacCsvImporter as Importer } from 'jslib-common/importers/onepasswordImporters/onepasswordMacCsvImporter';
|
import { OnePasswordMacCsvImporter as Importer } from '../../src/importers/onepasswordImporters/onepasswordMacCsvImporter';
|
||||||
|
|
||||||
import { CipherType } from 'jslib-common/enums/cipherType';
|
import { CipherType } from '../../src/enums/cipherType';
|
||||||
import { CipherView } from 'jslib-common/models/view/cipherView';
|
import { CipherView } from '../../src/models/view/cipherView';
|
||||||
|
|
||||||
import { data as creditCardData } from './testData/onePasswordCsv/creditCard.mac.csv';
|
import { data as creditCardData } from './testData/onePasswordCsv/creditCard.mac.csv';
|
||||||
import { data as identityData } from './testData/onePasswordCsv/identity.mac.csv';
|
import { data as identityData } from './testData/onePasswordCsv/identity.mac.csv';
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
import { OnePasswordWinCsvImporter as Importer } from 'jslib-common/importers/onepasswordImporters/onepasswordWinCsvImporter';
|
import { OnePasswordWinCsvImporter as Importer } from '../../src/importers/onepasswordImporters/onepasswordWinCsvImporter';
|
||||||
|
|
||||||
import { CipherType } from 'jslib-common/enums/cipherType';
|
import { CipherType } from '../../src/enums/cipherType';
|
||||||
import { FieldType } from 'jslib-common/enums/fieldType';
|
import { FieldType } from '../../src/enums/fieldType';
|
||||||
import { CipherView } from 'jslib-common/models/view/cipherView';
|
import { CipherView } from '../../src/models/view/cipherView';
|
||||||
import { FieldView } from 'jslib-common/models/view/fieldView';
|
import { FieldView } from '../../src/models/view/fieldView';
|
||||||
|
|
||||||
import { data as creditCardData } from './testData/onePasswordCsv/creditCard.windows.csv';
|
import { data as creditCardData } from './testData/onePasswordCsv/creditCard.windows.csv';
|
||||||
import { data as identityData } from './testData/onePasswordCsv/identity.windows.csv';
|
import { data as identityData } from './testData/onePasswordCsv/identity.windows.csv';
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { sequentialize } from 'jslib-common/misc/sequentialize';
|
import { sequentialize } from '../../src/misc/sequentialize';
|
||||||
|
|
||||||
describe('sequentialize decorator', () => {
|
describe('sequentialize decorator', () => {
|
||||||
it('should call the function once', async () => {
|
it('should call the function once', async () => {
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { sequentialize } from 'jslib-common/misc/sequentialize';
|
import { sequentialize } from '../../src/misc/sequentialize';
|
||||||
import { throttle } from 'jslib-common/misc/throttle';
|
import { throttle } from '../../src/misc/throttle';
|
||||||
|
|
||||||
describe('throttle decorator', () => {
|
describe('throttle decorator', () => {
|
||||||
it('should call the function once at a time', async () => {
|
it('should call the function once at a time', async () => {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Utils } from 'jslib-common/misc/utils';
|
import { Utils } from '../../src/misc/utils';
|
||||||
|
|
||||||
describe('Utils Service', () => {
|
describe('Utils Service', () => {
|
||||||
describe('getDomain', () => {
|
describe('getDomain', () => {
|
||||||
@@ -1,21 +1,21 @@
|
|||||||
import { Arg, Substitute, SubstituteOf } from '@fluffy-spoon/substitute';
|
import { Arg, Substitute, SubstituteOf } from '@fluffy-spoon/substitute';
|
||||||
|
|
||||||
import { ApiService } from 'jslib-common/abstractions/api.service';
|
import { ApiService } from '../../src/abstractions/api.service';
|
||||||
import { CryptoService } from 'jslib-common/abstractions/crypto.service';
|
import { CryptoService } from '../../src/abstractions/crypto.service';
|
||||||
import { FileUploadService } from 'jslib-common/abstractions/fileUpload.service';
|
import { FileUploadService } from '../../src/abstractions/fileUpload.service';
|
||||||
import { I18nService } from 'jslib-common/abstractions/i18n.service';
|
import { I18nService } from '../../src/abstractions/i18n.service';
|
||||||
import { LogService } from 'jslib-common/abstractions/log.service';
|
import { LogService } from '../../src/abstractions/log.service';
|
||||||
import { SearchService } from 'jslib-common/abstractions/search.service';
|
import { SearchService } from '../../src/abstractions/search.service';
|
||||||
import { SettingsService } from 'jslib-common/abstractions/settings.service';
|
import { SettingsService } from '../../src/abstractions/settings.service';
|
||||||
import { StorageService } from 'jslib-common/abstractions/storage.service';
|
import { StorageService } from '../../src/abstractions/storage.service';
|
||||||
import { UserService } from 'jslib-common/abstractions/user.service';
|
import { UserService } from '../../src/abstractions/user.service';
|
||||||
import { Utils } from 'jslib-common/misc/utils';
|
import { Utils } from '../../src/misc/utils';
|
||||||
import { Cipher } from 'jslib-common/models/domain/cipher';
|
import { Cipher } from '../../src/models/domain/cipher';
|
||||||
import { EncArrayBuffer } from 'jslib-common/models/domain/encArrayBuffer';
|
import { EncArrayBuffer } from '../../src/models/domain/encArrayBuffer';
|
||||||
import { EncString } from 'jslib-common/models/domain/encString';
|
import { EncString } from '../../src/models/domain/encString';
|
||||||
import { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';
|
import { SymmetricCryptoKey } from '../../src/models/domain/symmetricCryptoKey';
|
||||||
|
|
||||||
import { CipherService } from 'jslib-common/services/cipher.service';
|
import { CipherService } from '../../src/services/cipher.service';
|
||||||
|
|
||||||
const ENCRYPTED_TEXT = 'This data has been encrypted';
|
const ENCRYPTED_TEXT = 'This data has been encrypted';
|
||||||
const ENCRYPTED_BYTES = new EncArrayBuffer(Utils.fromUtf8ToArray(ENCRYPTED_TEXT).buffer);
|
const ENCRYPTED_BYTES = new EncArrayBuffer(Utils.fromUtf8ToArray(ENCRYPTED_TEXT).buffer);
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ConsoleLogService } from 'jslib-common/services/consoleLog.service';
|
import { ConsoleLogService } from '../../src/services/consoleLog.service';
|
||||||
|
|
||||||
const originalConsole = console;
|
const originalConsole = console;
|
||||||
let caughtMessage: any;
|
let caughtMessage: any;
|
||||||
@@ -1,22 +1,22 @@
|
|||||||
import { Substitute, SubstituteOf } from '@fluffy-spoon/substitute';
|
import { Substitute, SubstituteOf } from '@fluffy-spoon/substitute';
|
||||||
|
|
||||||
import { ApiService } from 'jslib-common/abstractions/api.service';
|
import { ApiService } from '../../src/abstractions/api.service';
|
||||||
import { CipherService } from 'jslib-common/abstractions/cipher.service';
|
import { CipherService } from '../../src/abstractions/cipher.service';
|
||||||
import { CryptoService } from 'jslib-common/abstractions/crypto.service';
|
import { CryptoService } from '../../src/abstractions/crypto.service';
|
||||||
import { FolderService } from 'jslib-common/abstractions/folder.service';
|
import { FolderService } from '../../src/abstractions/folder.service';
|
||||||
|
|
||||||
import { ExportService } from 'jslib-common/services/export.service';
|
import { ExportService } from '../../src/services/export.service';
|
||||||
|
|
||||||
import { Cipher } from 'jslib-common/models/domain/cipher';
|
import { Cipher } from '../../src/models/domain/cipher';
|
||||||
import { EncString } from 'jslib-common/models/domain/encString';
|
import { EncString } from '../../src/models/domain/encString';
|
||||||
import { Login } from 'jslib-common/models/domain/login';
|
import { Login } from '../../src/models/domain/login';
|
||||||
import { CipherWithIds as CipherExport } from 'jslib-common/models/export/cipherWithIds';
|
import { CipherWithIds as CipherExport } from '../../src/models/export/cipherWithIds';
|
||||||
|
|
||||||
import { CipherType } from 'jslib-common/enums/cipherType';
|
import { CipherType } from '../../src/enums/cipherType';
|
||||||
import { CipherView } from 'jslib-common/models/view/cipherView';
|
import { CipherView } from '../../src/models/view/cipherView';
|
||||||
import { LoginView } from 'jslib-common/models/view/loginView';
|
import { LoginView } from '../../src/models/view/loginView';
|
||||||
|
|
||||||
import { BuildTestObject, GetUniqueString } from '../../utils';
|
import { BuildTestObject, GetUniqueString } from '../utils';
|
||||||
|
|
||||||
const UserCipherViews = [
|
const UserCipherViews = [
|
||||||
generateCipherView(false),
|
generateCipherView(false),
|
||||||
11
common/spec/support/jasmine.json
Normal file
11
common/spec/support/jasmine.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"spec_dir": "dist/spec",
|
||||||
|
"spec_files": [
|
||||||
|
"**/*[sS]pec.js"
|
||||||
|
],
|
||||||
|
"helpers": [
|
||||||
|
"helpers.js"
|
||||||
|
],
|
||||||
|
"stopSpecOnExpectationFailure": false,
|
||||||
|
"random": true
|
||||||
|
}
|
||||||
16
common/spec/utils.ts
Normal file
16
common/spec/utils.ts
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
function newGuid() {
|
||||||
|
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
|
||||||
|
// tslint:disable:no-bitwise
|
||||||
|
const r = Math.random() * 16 | 0;
|
||||||
|
const v = c === 'x' ? r : (r & 0x3 | 0x8);
|
||||||
|
return v.toString(16);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function GetUniqueString(prefix: string = '') {
|
||||||
|
return prefix + '_' + newGuid();
|
||||||
|
}
|
||||||
|
|
||||||
|
export function BuildTestObject<T, K extends keyof T = keyof T>(def: Partial<Pick<T, K>> | T, constructor?: (new () => T)): T {
|
||||||
|
return Object.assign(constructor === null ? {} : new constructor(), def) as T;
|
||||||
|
}
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
|
"baseUrl": ".",
|
||||||
|
"rootDir": ".",
|
||||||
"pretty": true,
|
"pretty": true,
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"noImplicitAny": true,
|
"noImplicitAny": true,
|
||||||
@@ -12,10 +14,7 @@
|
|||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"emitDecoratorMetadata": true,
|
"emitDecoratorMetadata": true,
|
||||||
"declarationDir": "dist/types",
|
"declarationDir": "dist/types",
|
||||||
"outDir": "dist",
|
"outDir": "dist"
|
||||||
"typeRoots": [
|
|
||||||
"node_modules/@types"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"include": [
|
"include": [
|
||||||
"src",
|
"src",
|
||||||
|
|||||||
12503
package-lock.json
generated
12503
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
40
package.json
40
package.json
@@ -23,40 +23,12 @@
|
|||||||
"test:node": "npm run build && jasmine",
|
"test:node": "npm run build && jasmine",
|
||||||
"test:node:watch": "concurrently -k -n TSC,Node -c yellow,cyan \"npm run build:watch\" \"nodemon -w ./dist --delay 500ms --exec jasmine\""
|
"test:node:watch": "concurrently -k -n TSC,Node -c yellow,cyan \"npm run build:watch\" \"nodemon -w ./dist --delay 500ms --exec jasmine\""
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"workspaces": [
|
||||||
"@fluffy-spoon/substitute": "^1.202.0",
|
"common",
|
||||||
"@types/jasmine": "^3.7.6",
|
"angular",
|
||||||
"@types/node": "^14.17.1",
|
"electron",
|
||||||
"concurrently": "^6.1.0",
|
"node"
|
||||||
"jasmine": "^3.7.0",
|
],
|
||||||
"jasmine-core": "^3.7.1",
|
|
||||||
"jasmine-ts-console-reporter": "^3.1.1",
|
|
||||||
"jsdom": "^16.5.3",
|
|
||||||
"karma": "^6.3.2",
|
|
||||||
"karma-chrome-launcher": "^3.1.0",
|
|
||||||
"karma-cli": "^2.0.0",
|
|
||||||
"karma-detect-browsers": "^2.3.3",
|
|
||||||
"karma-firefox-launcher": "^2.1.0",
|
|
||||||
"karma-jasmine": "^4.0.1",
|
|
||||||
"karma-jasmine-html-reporter": "^1.5.4",
|
|
||||||
"karma-safari-launcher": "^1.0.0",
|
|
||||||
"karma-webpack": "^4.0.2",
|
|
||||||
"nodemon": "^2.0.7",
|
|
||||||
"rimraf": "^3.0.2",
|
|
||||||
"ts-loader": "^8.1.0",
|
|
||||||
"tslint": "^6.1.3",
|
|
||||||
"ttypescript": "^1.5.12",
|
|
||||||
"typemoq": "^2.1.0",
|
|
||||||
"typescript": "4.1.5",
|
|
||||||
"typescript-transform-paths": "^2.2.3",
|
|
||||||
"webpack": "^4.46.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@bitwarden/jslib-angular": "file:angular",
|
|
||||||
"@bitwarden/jslib-common": "file:common",
|
|
||||||
"@bitwarden/jslib-electron": "file:electron",
|
|
||||||
"@bitwarden/jslib-node": "file:node"
|
|
||||||
},
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "~14",
|
"node": "~14",
|
||||||
"npm": "~7"
|
"npm": "~7"
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
import { ElectronLogService } from 'jslib-electron/services/electronLog.service';
|
|
||||||
|
|
||||||
describe('ElectronLogService', () => {
|
|
||||||
it('sets dev based on electron method', () => {
|
|
||||||
process.env.ELECTRON_IS_DEV = '1';
|
|
||||||
const logService = new ElectronLogService();
|
|
||||||
expect(logService).toEqual(jasmine.objectContaining({ isDev: true }) as any);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
import { cleanUserAgent } from 'jslib-electron/utils';
|
|
||||||
|
|
||||||
const expectedUserAgent = `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${process.versions.chrome} Safari/537.36`;
|
|
||||||
|
|
||||||
describe('cleanUserAgent', () => {
|
|
||||||
it('cleans mac agent', () => {
|
|
||||||
const initialMacAgent = `Mozilla/5.0 (Macintosh; Intel Mac OS X 11_6_0) AppleWebKit/537.36 (KHTML, like Gecko) Bitwarden/${process.version} Chrome/${process.versions.chrome} Electron/${process.versions.electron} Safari/537.36`;
|
|
||||||
expect(cleanUserAgent(initialMacAgent)).toEqual(expectedUserAgent);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('cleans windows agent', () => {
|
|
||||||
const initialWindowsAgent = `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Bitwarden/${process.version} Chrome/${process.versions.chrome} Electron/${process.versions.electron} Safari/537.36`;
|
|
||||||
expect(cleanUserAgent(initialWindowsAgent)).toEqual(expectedUserAgent);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('cleans linux agent', () => {
|
|
||||||
const initialWindowsAgent = `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Bitwarden/${process.version} Chrome/${process.versions.chrome} Electron/${process.versions.electron} Safari/537.36`;
|
|
||||||
expect(cleanUserAgent(initialWindowsAgent)).toEqual(expectedUserAgent);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('does not change version numbers', () => {
|
|
||||||
const expected = `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36`;
|
|
||||||
const initialAgent = `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Bitwarden/1.28.3 Chrome/87.0.4280.141 Electron/11.4.5 Safari/537.36`;
|
|
||||||
|
|
||||||
expect(cleanUserAgent(initialAgent)).toEqual(expected);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"spec_dir": "dist/spec",
|
"spec_dir": "dist/common/spec",
|
||||||
"spec_files": [
|
"spec_files": [
|
||||||
"common/**/*[sS]pec.js",
|
"common/**/*[sS]pec.js",
|
||||||
"node/**/*[sS]pec.js",
|
"node/**/*[sS]pec.js",
|
||||||
|
|||||||
Reference in New Issue
Block a user