Skip to content

Commit

Permalink
fix: bug fixes in vaults service handlers
Browse files Browse the repository at this point in the history
  • Loading branch information
emmacasolin committed Jun 9, 2022
1 parent a01c7ea commit 9730e5a
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 21 deletions.
7 changes: 4 additions & 3 deletions src/agent/service/vaultsGitPackGet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,10 @@ function vaultsGitPackGet({
}
const nodeId = connectionInfo.remoteNodeId;
const nodeIdEncoded = nodesUtils.encodeNodeId(nodeId);
const nameOrId = meta.get('vaultNameOrId').pop()!.toString();
await db.withTransactionF(async (tran) => {
const vaultIdFromName = await vaultManager.getVaultId(
meta.get('vaultNameOrId').pop()!.toString() as VaultName,
nameOrId as VaultName,
tran,
);
const {
Expand All @@ -79,8 +80,8 @@ function vaultsGitPackGet({
);
},
{
vaultId: meta.get('vaultNameOrId').pop(),
actionType: meta.get('vaultAction').pop(),
vaultId: nameOrId,
actionType: meta.get('vaultAction').pop()!.toString(),
},
);
// Checking permissions
Expand Down
18 changes: 10 additions & 8 deletions src/client/service/vaultsClone.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { DB } from '@matrixai/db';
import type { Authenticate } from '../types';
import type VaultManager from '../../vaults/VaultManager';
import type { VaultId } from '../../vaults/types';
import type { VaultName, VaultId } from '../../vaults/types';
import type { NodeId } from '../../nodes/types';
import type * as vaultsPB from '../../proto/js/polykey/v1/vaults/vaults_pb';
import type Logger from '@matrixai/logger';
Expand Down Expand Up @@ -35,28 +35,30 @@ function vaultsClone({
const response = new utilsPB.StatusMessage();
const metadata = await authenticate(call.metadata);
call.sendMetadata(metadata);
// Node id
const {
nodeId,
vaultId,
}: {
nodeId: NodeId;
vaultId: VaultId;
} = validateSync(
(keyPath, value) => {
return matchSync(keyPath)(
[['nodeId'], () => validationUtils.parseNodeId(value)],
[['vaultId'], () => vaultsUtils.decodeVaultId(value) ?? value],
() => value,
);
},
{
nodeId: call.request.getNode()?.getNodeId(),
vaultId: call.request.getVault()?.getNameOrId(),
},
);
await db.withTransactionF(async (tran) =>
vaultManager.cloneVault(nodeId, vaultId, tran),
);
// Vault id
let vaultId;
const vaultNameOrId = call.request.getVault()?.getNameOrId();
vaultId = vaultsUtils.decodeVaultId(vaultNameOrId);
vaultId = vaultId ?? vaultNameOrId;
await db.withTransactionF(async (tran) => {
await vaultManager.cloneVault(nodeId, vaultId, tran);
});
response.setSuccess(true);
callback(null, response);
return;
Expand Down
16 changes: 9 additions & 7 deletions src/client/service/vaultsPull.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,15 @@ function vaultsPull({
const response = new utilsPB.StatusMessage();
const metadata = await authenticate(call.metadata);
call.sendMetadata(metadata);
let pullVaultId;
const pullVaultMessage = call.request.getPullVault();
if (pullVaultMessage == null) {
pullVaultId = null;
} else {
pullVaultId = vaultsUtils.decodeVaultId(pullVaultMessage.getNameOrId());
pullVaultId = pullVaultId ?? pullVaultMessage.getNameOrId();
if (pullVaultId == null) pullVaultId = pullVaultMessage.getNameOrId();
}
await db.withTransactionF(async (tran) => {
const vaultIdFromName = await vaultManager.getVaultId(
call.request.getVault()?.getNameOrId() as VaultName,
Expand All @@ -42,11 +51,9 @@ function vaultsPull({
const {
vaultId,
nodeId,
pullVaultId,
}: {
vaultId: VaultId;
nodeId: NodeId | undefined;
pullVaultId: VaultId | VaultName | undefined;
} = validateSync(
(keyPath, value) => {
return matchSync(keyPath)(
Expand All @@ -58,17 +65,12 @@ function vaultsPull({
['nodeId'],
() => (value ? validationUtils.parseNodeId(value) : undefined),
],
[
['pullVaultId'],
() => vaultsUtils.decodeVaultId(value) ?? value,
],
() => value,
);
},
{
vaultId: call.request.getVault()?.getNameOrId(),
nodeId: call.request.getNode()?.getNodeId(),
pullVaultId: call.request.getPullVault()?.getNameOrId(),
},
);
await vaultManager.pullVault({
Expand Down
4 changes: 2 additions & 2 deletions tests/bin/vaults/vaults.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -342,8 +342,8 @@ describe('CLI vaults', () => {
targetNodeIdEncoded,
];
result = await testBinUtils.pkStdio([...command], {}, dataDir);
expect(result.exitCode).toBe(sysexits.USAGE);
expect(result.stderr).toContain('ErrorVaultsVaultUndefined');
expect(result.exitCode).toBe(sysexits.DATAERR);
expect(result.stderr).toContain('ErrorValidation');

command = [
'vaults',
Expand Down
3 changes: 2 additions & 1 deletion tests/vaults/VaultManager.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import KeyManager from '@/keys/KeyManager';
import PolykeyAgent from '@/PolykeyAgent';
import VaultManager from '@/vaults/VaultManager';
import * as vaultsErrors from '@/vaults/errors';
import * as validationErrors from '@/validation/errors';
import NodeGraph from '@/nodes/NodeGraph';
import * as nodesUtils from '@/nodes/utils';
import Proxy from '@/network/Proxy';
Expand Down Expand Up @@ -743,7 +744,7 @@ describe('VaultManager', () => {
remoteKeynode1Id,
'not-existing' as VaultName,
),
vaultsErrors.ErrorVaultsVaultUndefined,
validationErrors.ErrorValidation,
);
} finally {
await vaultManager?.stop();
Expand Down

0 comments on commit 9730e5a

Please sign in to comment.