-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #125 from MatrixAI/feature-test-splitting
tests: split vaults and secrets tests into multiple test files
- Loading branch information
Showing
22 changed files
with
2,399 additions
and
1,200 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
import type { VaultName } from 'polykey/dist/vaults/types'; | ||
import path from 'path'; | ||
import fs from 'fs'; | ||
import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; | ||
import PolykeyAgent from 'polykey/dist/PolykeyAgent'; | ||
import { vaultOps } from 'polykey/dist/vaults'; | ||
import * as keysUtils from 'polykey/dist/keys/utils'; | ||
import * as testUtils from '../utils'; | ||
|
||
describe('commandCreateSecret', () => { | ||
const password = 'password'; | ||
const logger = new Logger('CLI Test', LogLevel.WARN, [new StreamHandler()]); | ||
let dataDir: string; | ||
let polykeyAgent: PolykeyAgent; | ||
let passwordFile: string; | ||
let command: Array<string>; | ||
|
||
beforeEach(async () => { | ||
dataDir = await fs.promises.mkdtemp( | ||
path.join(globalThis.tmpDir, 'polykey-test-'), | ||
); | ||
passwordFile = path.join(dataDir, 'passwordFile'); | ||
await fs.promises.writeFile(passwordFile, 'password'); | ||
polykeyAgent = await PolykeyAgent.createPolykeyAgent({ | ||
password, | ||
options: { | ||
nodePath: dataDir, | ||
agentServiceHost: '127.0.0.1', | ||
clientServiceHost: '127.0.0.1', | ||
keys: { | ||
passwordOpsLimit: keysUtils.passwordOpsLimits.min, | ||
passwordMemLimit: keysUtils.passwordMemLimits.min, | ||
strictMemoryLock: false, | ||
}, | ||
}, | ||
logger: logger, | ||
}); | ||
// Authorize session | ||
await testUtils.pkStdio( | ||
['agent', 'unlock', '-np', dataDir, '--password-file', passwordFile], | ||
{ | ||
env: {}, | ||
cwd: dataDir, | ||
}, | ||
); | ||
}); | ||
afterEach(async () => { | ||
await polykeyAgent.stop(); | ||
await fs.promises.rm(dataDir, { | ||
force: true, | ||
recursive: true, | ||
}); | ||
}); | ||
|
||
test( | ||
'should create secrets', | ||
async () => { | ||
const vaultName = 'Vault1' as VaultName; | ||
const vaultId = await polykeyAgent.vaultManager.createVault(vaultName); | ||
const secretPath = path.join(dataDir, 'secret'); | ||
await fs.promises.writeFile(secretPath, 'this is a secret'); | ||
|
||
command = [ | ||
'secrets', | ||
'create', | ||
'-np', | ||
dataDir, | ||
secretPath, | ||
`${vaultName}:MySecret`, | ||
]; | ||
|
||
const result = await testUtils.pkStdio([...command], { | ||
env: {}, | ||
cwd: dataDir, | ||
}); | ||
expect(result.exitCode).toBe(0); | ||
|
||
await polykeyAgent.vaultManager.withVaults([vaultId], async (vault) => { | ||
const list = await vaultOps.listSecrets(vault); | ||
expect(list.sort()).toStrictEqual(['MySecret']); | ||
expect( | ||
(await vaultOps.getSecret(vault, 'MySecret')).toString(), | ||
).toStrictEqual('this is a secret'); | ||
}); | ||
}, | ||
globalThis.defaultTimeout * 2, | ||
); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
import type { VaultName } from 'polykey/dist/vaults/types'; | ||
import path from 'path'; | ||
import fs from 'fs'; | ||
import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; | ||
import PolykeyAgent from 'polykey/dist/PolykeyAgent'; | ||
import { vaultOps } from 'polykey/dist/vaults'; | ||
import * as keysUtils from 'polykey/dist/keys/utils'; | ||
import * as testUtils from '../utils'; | ||
|
||
describe('commandDeleteSecret', () => { | ||
const password = 'password'; | ||
const logger = new Logger('CLI Test', LogLevel.WARN, [new StreamHandler()]); | ||
let dataDir: string; | ||
let polykeyAgent: PolykeyAgent; | ||
let passwordFile: string; | ||
let command: Array<string>; | ||
|
||
beforeEach(async () => { | ||
dataDir = await fs.promises.mkdtemp( | ||
path.join(globalThis.tmpDir, 'polykey-test-'), | ||
); | ||
passwordFile = path.join(dataDir, 'passwordFile'); | ||
await fs.promises.writeFile(passwordFile, 'password'); | ||
polykeyAgent = await PolykeyAgent.createPolykeyAgent({ | ||
password, | ||
options: { | ||
nodePath: dataDir, | ||
agentServiceHost: '127.0.0.1', | ||
clientServiceHost: '127.0.0.1', | ||
keys: { | ||
passwordOpsLimit: keysUtils.passwordOpsLimits.min, | ||
passwordMemLimit: keysUtils.passwordMemLimits.min, | ||
strictMemoryLock: false, | ||
}, | ||
}, | ||
logger: logger, | ||
}); | ||
// Authorize session | ||
await testUtils.pkStdio( | ||
['agent', 'unlock', '-np', dataDir, '--password-file', passwordFile], | ||
{ | ||
env: {}, | ||
cwd: dataDir, | ||
}, | ||
); | ||
}); | ||
afterEach(async () => { | ||
await polykeyAgent.stop(); | ||
await fs.promises.rm(dataDir, { | ||
force: true, | ||
recursive: true, | ||
}); | ||
}); | ||
|
||
test('should delete secrets', async () => { | ||
const vaultName = 'Vault2' as VaultName; | ||
const vaultId = await polykeyAgent.vaultManager.createVault(vaultName); | ||
|
||
await polykeyAgent.vaultManager.withVaults([vaultId], async (vault) => { | ||
await vaultOps.addSecret(vault, 'MySecret', 'this is the secret'); | ||
const list = await vaultOps.listSecrets(vault); | ||
expect(list.sort()).toStrictEqual(['MySecret']); | ||
}); | ||
|
||
command = ['secrets', 'delete', '-np', dataDir, `${vaultName}:MySecret`]; | ||
|
||
const result = await testUtils.pkStdio([...command], { | ||
env: {}, | ||
cwd: dataDir, | ||
}); | ||
expect(result.exitCode).toBe(0); | ||
|
||
await polykeyAgent.vaultManager.withVaults([vaultId], async (vault) => { | ||
const list = await vaultOps.listSecrets(vault); | ||
expect(list.sort()).toStrictEqual([]); | ||
}); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
import type { VaultName } from 'polykey/dist/vaults/types'; | ||
import path from 'path'; | ||
import fs from 'fs'; | ||
import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; | ||
import PolykeyAgent from 'polykey/dist/PolykeyAgent'; | ||
import { vaultOps } from 'polykey/dist/vaults'; | ||
import * as keysUtils from 'polykey/dist/keys/utils'; | ||
import * as testUtils from '../utils'; | ||
|
||
describe('commandGetSecret', () => { | ||
const password = 'password'; | ||
const logger = new Logger('CLI Test', LogLevel.WARN, [new StreamHandler()]); | ||
let dataDir: string; | ||
let polykeyAgent: PolykeyAgent; | ||
let passwordFile: string; | ||
let command: Array<string>; | ||
|
||
beforeEach(async () => { | ||
dataDir = await fs.promises.mkdtemp( | ||
path.join(globalThis.tmpDir, 'polykey-test-'), | ||
); | ||
passwordFile = path.join(dataDir, 'passwordFile'); | ||
await fs.promises.writeFile(passwordFile, 'password'); | ||
polykeyAgent = await PolykeyAgent.createPolykeyAgent({ | ||
password, | ||
options: { | ||
nodePath: dataDir, | ||
agentServiceHost: '127.0.0.1', | ||
clientServiceHost: '127.0.0.1', | ||
keys: { | ||
passwordOpsLimit: keysUtils.passwordOpsLimits.min, | ||
passwordMemLimit: keysUtils.passwordMemLimits.min, | ||
strictMemoryLock: false, | ||
}, | ||
}, | ||
logger: logger, | ||
}); | ||
// Authorize session | ||
await testUtils.pkStdio( | ||
['agent', 'unlock', '-np', dataDir, '--password-file', passwordFile], | ||
{ | ||
env: {}, | ||
cwd: dataDir, | ||
}, | ||
); | ||
}); | ||
afterEach(async () => { | ||
await polykeyAgent.stop(); | ||
await fs.promises.rm(dataDir, { | ||
force: true, | ||
recursive: true, | ||
}); | ||
}); | ||
|
||
test('should retrieve secrets', async () => { | ||
const vaultName = 'Vault3' as VaultName; | ||
const vaultId = await polykeyAgent.vaultManager.createVault(vaultName); | ||
|
||
await polykeyAgent.vaultManager.withVaults([vaultId], async (vault) => { | ||
await vaultOps.addSecret(vault, 'MySecret', 'this is the secret'); | ||
}); | ||
|
||
command = ['secrets', 'get', '-np', dataDir, `${vaultName}:MySecret`]; | ||
|
||
const result = await testUtils.pkStdio([...command], { | ||
env: {}, | ||
cwd: dataDir, | ||
}); | ||
expect(result.stdout).toBe('this is the secret'); | ||
expect(result.exitCode).toBe(0); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
import type { VaultName } from 'polykey/dist/vaults/types'; | ||
import path from 'path'; | ||
import fs from 'fs'; | ||
import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; | ||
import PolykeyAgent from 'polykey/dist/PolykeyAgent'; | ||
import { vaultOps } from 'polykey/dist/vaults'; | ||
import * as keysUtils from 'polykey/dist/keys/utils'; | ||
import * as testUtils from '../utils'; | ||
|
||
describe('commandListSecrets', () => { | ||
const password = 'password'; | ||
const logger = new Logger('CLI Test', LogLevel.WARN, [new StreamHandler()]); | ||
let dataDir: string; | ||
let polykeyAgent: PolykeyAgent; | ||
let passwordFile: string; | ||
let command: Array<string>; | ||
|
||
beforeEach(async () => { | ||
dataDir = await fs.promises.mkdtemp( | ||
path.join(globalThis.tmpDir, 'polykey-test-'), | ||
); | ||
passwordFile = path.join(dataDir, 'passwordFile'); | ||
await fs.promises.writeFile(passwordFile, 'password'); | ||
polykeyAgent = await PolykeyAgent.createPolykeyAgent({ | ||
password, | ||
options: { | ||
nodePath: dataDir, | ||
agentServiceHost: '127.0.0.1', | ||
clientServiceHost: '127.0.0.1', | ||
keys: { | ||
passwordOpsLimit: keysUtils.passwordOpsLimits.min, | ||
passwordMemLimit: keysUtils.passwordMemLimits.min, | ||
strictMemoryLock: false, | ||
}, | ||
}, | ||
logger: logger, | ||
}); | ||
// Authorize session | ||
await testUtils.pkStdio( | ||
['agent', 'unlock', '-np', dataDir, '--password-file', passwordFile], | ||
{ | ||
env: {}, | ||
cwd: dataDir, | ||
}, | ||
); | ||
}); | ||
afterEach(async () => { | ||
await polykeyAgent.stop(); | ||
await fs.promises.rm(dataDir, { | ||
force: true, | ||
recursive: true, | ||
}); | ||
}); | ||
|
||
test( | ||
'should list secrets', | ||
async () => { | ||
const vaultName = 'Vault4' as VaultName; | ||
const vaultId = await polykeyAgent.vaultManager.createVault(vaultName); | ||
|
||
await polykeyAgent.vaultManager.withVaults([vaultId], async (vault) => { | ||
await vaultOps.addSecret(vault, 'MySecret1', 'this is the secret 1'); | ||
await vaultOps.addSecret(vault, 'MySecret2', 'this is the secret 2'); | ||
await vaultOps.addSecret(vault, 'MySecret3', 'this is the secret 3'); | ||
}); | ||
|
||
command = ['secrets', 'list', '-np', dataDir, vaultName]; | ||
|
||
const result = await testUtils.pkStdio([...command], { | ||
env: {}, | ||
cwd: dataDir, | ||
}); | ||
expect(result.exitCode).toBe(0); | ||
}, | ||
globalThis.defaultTimeout * 2, | ||
); | ||
}); |
Oops, something went wrong.