Skip to content

Commit

Permalink
feat: add fee getters to queue and transactions
Browse files Browse the repository at this point in the history
Also moved fee validations to run method and added support for gas fees
  • Loading branch information
monitz87 committed Jul 6, 2020
1 parent 79398ad commit f6c30cf
Show file tree
Hide file tree
Showing 26 changed files with 712 additions and 438 deletions.
20 changes: 12 additions & 8 deletions src/api/procedures/__tests__/consumeAuthorizationRequests.ts
Expand Up @@ -115,8 +115,9 @@ describe('consumeAuthorizationRequests procedure', () => {
});

test('should add a batch accept authorization transaction to the queue and ignore expired requests', async () => {
const proc = procedureMockUtils.getInstance<ConsumeAuthorizationRequestsParams, void>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<ConsumeAuthorizationRequestsParams, void>(
mockContext
);

const transaction = dsMockUtils.createTxStub('identity', 'batchAcceptAuthorization');

Expand All @@ -136,8 +137,9 @@ describe('consumeAuthorizationRequests procedure', () => {
});

test('should add a batch remove authorization transaction to the queue and ignore expired requests', async () => {
const proc = procedureMockUtils.getInstance<ConsumeAuthorizationRequestsParams, void>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<ConsumeAuthorizationRequestsParams, void>(
mockContext
);

const transaction = dsMockUtils.createTxStub('identity', 'batchRemoveAuthorization');

Expand All @@ -158,8 +160,9 @@ describe('consumeAuthorizationRequests procedure', () => {

describe('isAuthorized', () => {
test('should return whether the current identity is the target of all non-expired requests if trying to accept', () => {
const proc = procedureMockUtils.getInstance<ConsumeAuthorizationRequestsParams, void>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<ConsumeAuthorizationRequestsParams, void>(
mockContext
);
const { did } = mockContext.getCurrentIdentity();
const constructorParams = [
{
Expand Down Expand Up @@ -200,8 +203,9 @@ describe('consumeAuthorizationRequests procedure', () => {
});

test('should return whether the current identity is the target or issuer of all non-expired requests if trying to remove', () => {
const proc = procedureMockUtils.getInstance<ConsumeAuthorizationRequestsParams, void>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<ConsumeAuthorizationRequestsParams, void>(
mockContext
);
const { did } = mockContext.getCurrentIdentity();
const constructorParams = [
{
Expand Down
12 changes: 4 additions & 8 deletions src/api/procedures/__tests__/createSecurityToken.ts
Expand Up @@ -199,8 +199,7 @@ describe('createSecurityToken procedure', () => {
expiryDate: null,
status: TickerReservationStatus.TokenCreated,
});
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

return expect(prepareCreateSecurityToken.call(proc, args)).rejects.toThrow(
`A Security Token with ticker "${ticker}" already exists`
Expand All @@ -213,17 +212,15 @@ describe('createSecurityToken procedure', () => {
expiryDate: null,
status: TickerReservationStatus.Free,
});
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

return expect(prepareCreateSecurityToken.call(proc, args)).rejects.toThrow(
`You must first reserve ticker "${ticker}" in order to create a Security Token with it`
);
});

test('should add a token creation transaction to the queue', async () => {
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

const result = await prepareCreateSecurityToken.call(proc, args);

Expand Down Expand Up @@ -262,8 +259,7 @@ describe('createSecurityToken procedure', () => {
});

test('should add a document add transaction to the queue', async () => {
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);
const tx = dsMockUtils.createTxStub('asset', 'addDocuments');

const result = await prepareCreateSecurityToken.call(proc, { ...args, documents });
Expand Down
15 changes: 5 additions & 10 deletions src/api/procedures/__tests__/issueTokens.ts
Expand Up @@ -74,8 +74,7 @@ describe('issueTokens procedure', () => {
},
});

const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

return expect(prepareIssueTokens.call(proc, args)).rejects.toThrow(
`Issuance amounts cannot have more than ${MAX_DECIMALS} decimals`
Expand All @@ -97,8 +96,7 @@ describe('issueTokens procedure', () => {
ticker,
};

const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

return expect(prepareIssueTokens.call(proc, args)).rejects.toThrow(
'Cannot issue decimal amounts of an indivisible token'
Expand Down Expand Up @@ -126,8 +124,7 @@ describe('issueTokens procedure', () => {
},
});

const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

let error;

Expand Down Expand Up @@ -164,8 +161,7 @@ describe('issueTokens procedure', () => {
},
});

const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

let error;

Expand Down Expand Up @@ -214,8 +210,7 @@ describe('issueTokens procedure', () => {
});

const transaction = dsMockUtils.createTxStub('asset', 'batchIssue');
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

const result = await prepareIssueTokens.call(proc, args);

Expand Down
12 changes: 4 additions & 8 deletions src/api/procedures/__tests__/modifyClaims.ts
Expand Up @@ -107,8 +107,7 @@ describe('modifyClaims procedure', () => {
test("should throw an error if some of the supplied target dids don't exist", async () => {
dsMockUtils.configureMocks({ contextOptions: { invalidDids: [otherDid] } });

const proc = procedureMockUtils.getInstance<ModifyClaimsParams, void>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<ModifyClaimsParams, void>(mockContext);

let error;

Expand All @@ -123,8 +122,7 @@ describe('modifyClaims procedure', () => {
});

test('should add an add claims batch transaction to the queue', async () => {
const proc = procedureMockUtils.getInstance<ModifyClaimsParams, void>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<ModifyClaimsParams, void>(mockContext);

await prepareModifyClaims.call(proc, args);

Expand Down Expand Up @@ -185,8 +183,7 @@ describe('modifyClaims procedure', () => {
});

test("should throw an error if any of the claims that will be modified weren't issued by the current identity", async () => {
const proc = procedureMockUtils.getInstance<ModifyClaimsParams, void>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<ModifyClaimsParams, void>(mockContext);

dsMockUtils.createApolloQueryStub(
didsWithClaims({
Expand All @@ -212,8 +209,7 @@ describe('modifyClaims procedure', () => {
});

test('should add a revoke claims batch transaction to the queue', async () => {
const proc = procedureMockUtils.getInstance<ModifyClaimsParams, void>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<ModifyClaimsParams, void>(mockContext);

dsMockUtils.createApolloQueryStub(
didsWithClaims({
Expand Down
24 changes: 8 additions & 16 deletions src/api/procedures/__tests__/modifyToken.ts
Expand Up @@ -56,8 +56,7 @@ describe('modifyToken procedure', () => {
});

test('should throw an error if the user has not passed any arguments', () => {
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

return expect(prepareModifyToken.call(proc, ({} as unknown) as Params)).rejects.toThrow(
'Nothing to modify'
Expand All @@ -69,8 +68,7 @@ describe('modifyToken procedure', () => {
isDivisible: true,
});

const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

return expect(
prepareModifyToken.call(proc, {
Expand All @@ -81,8 +79,7 @@ describe('modifyToken procedure', () => {
});

test('should throw an error if makeDivisible is set to false', () => {
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

return expect(
prepareModifyToken.call(proc, {
Expand All @@ -93,8 +90,7 @@ describe('modifyToken procedure', () => {
});

test('should throw an error if newName is the same name currently in the Security Token', () => {
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

return expect(
prepareModifyToken.call(proc, {
Expand All @@ -105,8 +101,7 @@ describe('modifyToken procedure', () => {
});

test('should throw an error if newFundingRound is the same funding round name currently in the Security Token', () => {
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

return expect(
prepareModifyToken.call(proc, {
Expand All @@ -117,8 +112,7 @@ describe('modifyToken procedure', () => {
});

test('should add a make divisible transaction to the queue', async () => {
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

const transaction = dsMockUtils.createTxStub('asset', 'makeDivisible');

Expand All @@ -136,8 +130,7 @@ describe('modifyToken procedure', () => {
const rawAssetName = dsMockUtils.createMockAssetName(newName);
stringToAssetNameStub.withArgs(newName, mockContext).returns(rawAssetName);

const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

const transaction = dsMockUtils.createTxStub('asset', 'renameAsset');

Expand All @@ -155,8 +148,7 @@ describe('modifyToken procedure', () => {
const rawFundingRound = dsMockUtils.createMockFundingRoundName(newFundingRound);
stringToFundingRoundNameStub.withArgs(newFundingRound, mockContext).returns(rawFundingRound);

const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

const transaction = dsMockUtils.createTxStub('asset', 'setFundingRound');

Expand Down
25 changes: 15 additions & 10 deletions src/api/procedures/__tests__/reserveTicker.ts
Expand Up @@ -91,8 +91,9 @@ describe('reserveTicker procedure', () => {
expiryDate,
status: TickerReservationStatus.Reserved,
});
const proc = procedureMockUtils.getInstance<ReserveTickerParams, TickerReservation>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<ReserveTickerParams, TickerReservation>(
mockContext
);

let error;

Expand All @@ -112,8 +113,9 @@ describe('reserveTicker procedure', () => {
expiryDate: null,
status: TickerReservationStatus.Reserved,
});
const proc = procedureMockUtils.getInstance<ReserveTickerParams, TickerReservation>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<ReserveTickerParams, TickerReservation>(
mockContext
);

let error;

Expand All @@ -133,8 +135,9 @@ describe('reserveTicker procedure', () => {
expiryDate: null,
status: TickerReservationStatus.TokenCreated,
});
const proc = procedureMockUtils.getInstance<ReserveTickerParams, TickerReservation>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<ReserveTickerParams, TickerReservation>(
mockContext
);

return expect(prepareReserveTicker.call(proc, args)).rejects.toThrow(
`A Security Token with ticker "${ticker}" already exists`
Expand All @@ -148,17 +151,19 @@ describe('reserveTicker procedure', () => {
expiryDate,
status: TickerReservationStatus.Free,
});
const proc = procedureMockUtils.getInstance<ReserveTickerParams, TickerReservation>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<ReserveTickerParams, TickerReservation>(
mockContext
);

return expect(prepareReserveTicker.call(proc, { ...args, extendPeriod: true })).rejects.toThrow(
'Ticker not reserved or the reservation has expired'
);
});

test('should add a register ticker transaction to the queue', async () => {
const proc = procedureMockUtils.getInstance<ReserveTickerParams, TickerReservation>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<ReserveTickerParams, TickerReservation>(
mockContext
);

let result = await prepareReserveTicker.call(proc, args);

Expand Down
12 changes: 4 additions & 8 deletions src/api/procedures/__tests__/setTokenDocuments.ts
Expand Up @@ -129,17 +129,15 @@ describe('setTokenDocuments procedure', () => {
dsMockUtils.createQueryStub('identity', 'links', {
entries: links.map(link => tuple([tokenSignatory, link.link_id], link)),
});
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

return expect(prepareSetTokenDocuments.call(proc, args)).rejects.toThrow(
'The supplied document list is equal to the current one'
);
});

test('should add a remove documents transaction and an add documents transaction to the queue', async () => {
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

const result = await prepareSetTokenDocuments.call(proc, args);

Expand All @@ -164,8 +162,7 @@ describe('setTokenDocuments procedure', () => {
dsMockUtils.createQueryStub('identity', 'links', {
entries: [],
});
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

const result = await prepareSetTokenDocuments.call(proc, args);

Expand All @@ -181,8 +178,7 @@ describe('setTokenDocuments procedure', () => {
});

test('should not add an add documents transaction if there are no documents passed as arguments', async () => {
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

const result = await prepareSetTokenDocuments.call(proc, { ...args, documents: [] });

Expand Down
12 changes: 4 additions & 8 deletions src/api/procedures/__tests__/setTokenRules.ts
Expand Up @@ -123,8 +123,7 @@ describe('setTokenTrustedClaimIssuers procedure', () => {
assetRulesMapStub.withArgs(rawTicker).returns({
rules: rawRules,
});
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

return expect(prepareSetTokenRules.call(proc, args)).rejects.toThrow(
'The supplied rule list is equal to the current one'
Expand All @@ -136,8 +135,7 @@ describe('setTokenTrustedClaimIssuers procedure', () => {
assetRulesMapStub.withArgs(rawTicker).returns({
rules: currentRules,
});
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

const result = await prepareSetTokenRules.call(proc, args);

Expand Down Expand Up @@ -165,8 +163,7 @@ describe('setTokenTrustedClaimIssuers procedure', () => {
assetRulesMapStub.withArgs(rawTicker).returns({
rules: [],
});
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

const result = await prepareSetTokenRules.call(proc, args);

Expand All @@ -189,8 +186,7 @@ describe('setTokenTrustedClaimIssuers procedure', () => {
assetRulesMapStub.withArgs(rawTicker).returns({
rules: currentRules,
});
const proc = procedureMockUtils.getInstance<Params, SecurityToken>();
proc.context = mockContext;
const proc = procedureMockUtils.getInstance<Params, SecurityToken>(mockContext);

const result = await prepareSetTokenRules.call(proc, { ...args, rules: [] });

Expand Down

0 comments on commit f6c30cf

Please sign in to comment.