Skip to content

Commit d21d39e

Browse files
committed
Implementation of getSessionKeyData for JLP
1 parent deba11d commit d21d39e

3 files changed

Lines changed: 29 additions & 5 deletions

File tree

lib/ContractInteract/TokenHolder.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ class TokenHolder {
110110
* @returns {string} Executable data to revoke a session.
111111
*/
112112
getRevokeSessionExecutableData(sessionKey) {
113+
if (!Web3.utils.isAddress(sessionKey)) {
114+
const err = new TypeError(`Invalid sessionKey address: ${sessionKey}.`);
115+
return Promise.reject(err);
116+
}
113117
return this.contract.methods.revokeSession(sessionKey).encodeABI();
114118
}
115119

@@ -192,10 +196,16 @@ class TokenHolder {
192196
/**
193197
* It returns the session key data object.
194198
*
199+
* @param {string} sessionKey Authorized session key address.
200+
*
195201
* @return {Promise<Object>} Promise that resolves current GnosisSafe nonce.
196202
*/
197203
getSessionKeyData(sessionKey) {
198-
return Promise.resolve(this.contract.methods.sessionKeys().call(sessionKey));
204+
if (!Web3.utils.isAddress(sessionKey)) {
205+
const err = new TypeError(`Invalid sessionKey address: ${sessionKey}.`);
206+
return Promise.reject(err);
207+
}
208+
return Promise.resolve(this.contract.methods.sessionKeys(sessionKey).call());
199209
}
200210
}
201211

test/unit/TokenHolder/getRevokeSessionExecutableData.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const sinon = require('sinon');
55
const { assert } = require('chai');
66

77
const Spy = require('../../../utils/Spy');
8+
const AssertAsync = require('../../../utils/AssertAsync');
89
const TokenHolder = require('../../../lib/ContractInteract/TokenHolder');
910

1011
describe('TokenHolder.getAuthorizeSessionWithExecutableData()', () => {
@@ -32,4 +33,9 @@ describe('TokenHolder.getAuthorizeSessionWithExecutableData()', () => {
3233
assert.strictEqual(response, mockRevokeSession);
3334
Spy.assert(revokeSessionSpy, 1, [[sessionKey]]);
3435
});
36+
37+
it('should throw an error when to address is undefined', async () => {
38+
const sessionKey = undefined;
39+
await AssertAsync.reject(tokenHolder.getSessionKeyData(sessionKey), `Invalid sessionKey address: undefined.`);
40+
});
3541
});

test/unit/TokenHolder/getSessionKeyData.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ const sinon = require('sinon');
55
const { assert } = require('chai');
66

77
const Spy = require('../../../utils/Spy');
8+
const AssertAsync = require('../../../utils/AssertAsync');
89
const TokenHolder = require('../../../lib/ContractInteract/TokenHolder');
910

10-
describe('TokenHolder.getLogoutExecutableData()', () => {
11+
describe('TokenHolder.getSessionKeyData()', () => {
1112
let tokenHolder;
1213

1314
beforeEach(() => {
@@ -17,17 +18,24 @@ describe('TokenHolder.getLogoutExecutableData()', () => {
1718
});
1819

1920
it('should construct with correct parameters', async () => {
21+
const sessionKey = '0x0000000000000000000000000000000000000003';
22+
2023
const mockSessionKeyData = 'mockSessionKeyData';
21-
const logoutSpy = sinon.replace(
24+
const sessionKeyDataSpy = sinon.replace(
2225
tokenHolder.contract.methods,
2326
'sessionKeys',
2427
sinon.fake.returns({
2528
call: () => Promise.resolve(mockSessionKeyData)
2629
})
2730
);
28-
const response = await tokenHolder.getSessionKeyData();
31+
const response = await tokenHolder.getSessionKeyData(sessionKey);
2932

3033
assert.strictEqual(response, mockSessionKeyData);
31-
Spy.assert(logoutSpy, 1, [[]]);
34+
Spy.assert(sessionKeyDataSpy, 1, [[sessionKey]]);
35+
});
36+
37+
it('should throw an error when to address is undefined', async () => {
38+
const sessionKey = undefined;
39+
await AssertAsync.reject(tokenHolder.getSessionKeyData(sessionKey), `Invalid sessionKey address: undefined.`);
3240
});
3341
});

0 commit comments

Comments
 (0)