Skip to content

Commit

Permalink
fix: add primaryIssuanceAgent as new param in checkSettle method
Browse files Browse the repository at this point in the history
  • Loading branch information
shuffledex committed Oct 14, 2020
1 parent dac5a85 commit 9e1ad3b
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 3 deletions.
6 changes: 5 additions & 1 deletion src/api/entities/SecurityToken/Compliance/Requirements.ts
Expand Up @@ -161,11 +161,15 @@ export class Requirements extends Namespace<SecurityToken> {
const fromDid = stringToIdentityId(signerToString(from), context);
const toDid = signerToString(to);

const securityToken = new SecurityToken({ ticker }, context);
const { primaryIssuanceAgent } = await securityToken.details();

// eslint-disable-next-line @typescript-eslint/no-explicit-any
const res: AssetComplianceResult = await (rpc as any).compliance.canTransfer(
stringToTicker(ticker, context),
fromDid,
stringToIdentityId(toDid, context)
stringToIdentityId(toDid, context),
primaryIssuanceAgent ? stringToIdentityId(primaryIssuanceAgent.did, context) : null
);

return assetComplianceResultToRequirementCompliance(res);
Expand Down
Expand Up @@ -3,6 +3,7 @@ import { AssetCompliance, AssetComplianceResult, IdentityId, Ticker } from 'poly
import sinon from 'sinon';

import { Namespace, SecurityToken } from '~/api/entities';
import { Identity } from '~/api/entities/Identity';
import { togglePauseRequirements } from '~/api/procedures';
import { Params, setAssetRequirements } from '~/api/procedures/setAssetRequirements';
import { Context, TransactionQueue } from '~/base';
Expand All @@ -13,17 +14,24 @@ import * as utilsModule from '~/utils';

import { Requirements } from '../Requirements';

jest.mock(
'~/api/entities/SecurityToken',
require('~/testUtils/mocks/entities').mockSecurityTokenModule('~/api/entities/SecurityToken')
);

describe('Requirements class', () => {
beforeAll(() => {
entityMockUtils.initMocks();
dsMockUtils.initMocks();
});

afterEach(() => {
entityMockUtils.reset();
dsMockUtils.reset();
});

afterAll(() => {
entityMockUtils.cleanup();
dsMockUtils.cleanup();
});

Expand Down Expand Up @@ -350,6 +358,8 @@ describe('Requirements class', () => {
let rawToDid: IdentityId;
let rawCurrentDid: IdentityId;
let rawTicker: Ticker;
let primaryIssuanceAgentDid: string;
let rawPrimaryIssuanceAgentDid: IdentityId;

let stringToIdentityIdStub: sinon.SinonStub;
let assetComplianceResultToRequirementComplianceStub: sinon.SinonStub;
Expand All @@ -358,6 +368,7 @@ describe('Requirements class', () => {
beforeAll(() => {
fromDid = 'fromDid';
toDid = 'toDid';
primaryIssuanceAgentDid = 'primaryIssuanceAgentDid';

stringToIdentityIdStub = sinon.stub(utilsModule, 'stringToIdentityId');
assetComplianceResultToRequirementComplianceStub = sinon.stub(
Expand All @@ -377,11 +388,15 @@ describe('Requirements class', () => {
rawToDid = dsMockUtils.createMockIdentityId(toDid);
rawCurrentDid = dsMockUtils.createMockIdentityId(currentDid);
rawTicker = dsMockUtils.createMockTicker(token.ticker);
rawPrimaryIssuanceAgentDid = dsMockUtils.createMockIdentityId(primaryIssuanceAgentDid);

stringToIdentityIdStub.withArgs(currentDid, context).returns(rawCurrentDid);
stringToIdentityIdStub.withArgs(fromDid, context).returns(rawFromDid);
stringToIdentityIdStub.withArgs(toDid, context).returns(rawToDid);
stringToTickerStub.withArgs(token.ticker, context).returns(rawTicker);
stringToIdentityIdStub
.withArgs(primaryIssuanceAgentDid, context)
.returns(rawPrimaryIssuanceAgentDid);
});

afterAll(() => {
Expand All @@ -391,9 +406,19 @@ describe('Requirements class', () => {
test('checkSettle should return the current requirement compliance and whether the transfer complies', async () => {
const rawResponse = ('response' as unknown) as AssetComplianceResult;

const primaryIssuanceAgent = new Identity({ did: primaryIssuanceAgentDid }, context);

entityMockUtils.configureMocks({
securityTokenOptions: {
details: {
primaryIssuanceAgent,
},
},
});

dsMockUtils
.createRpcStub('compliance', 'canTransfer')
.withArgs(rawTicker, rawCurrentDid, rawToDid)
.withArgs(rawTicker, rawCurrentDid, rawToDid, rawPrimaryIssuanceAgentDid)
.resolves(rawResponse);

const fakeResult = 'result';
Expand All @@ -408,9 +433,17 @@ describe('Requirements class', () => {
test('checkSettle should return the current requirement compliance and whether the transfer complies with another Identity', async () => {
const rawResponse = ('response' as unknown) as AssetComplianceResult;

entityMockUtils.configureMocks({
securityTokenOptions: {
details: {
primaryIssuanceAgent: null,
},
},
});

dsMockUtils
.createRpcStub('compliance', 'canTransfer')
.withArgs(rawTicker, rawFromDid, rawToDid)
.withArgs(rawTicker, rawFromDid, rawToDid, null)
.resolves(rawResponse);

const fakeResult = 'result';
Expand Down

0 comments on commit 9e1ad3b

Please sign in to comment.