diff options
-rw-r--r-- | src/contract_wrappers/proxy_wrapper.ts | 10 | ||||
-rw-r--r-- | src/types.ts | 3 | ||||
-rw-r--r-- | test/proxy_wrapper_test.ts | 11 |
3 files changed, 24 insertions, 0 deletions
diff --git a/src/contract_wrappers/proxy_wrapper.ts b/src/contract_wrappers/proxy_wrapper.ts index 862bce131..f74c145bf 100644 --- a/src/contract_wrappers/proxy_wrapper.ts +++ b/src/contract_wrappers/proxy_wrapper.ts @@ -22,6 +22,16 @@ export class ProxyWrapper extends ContractWrapper { const isAuthorized = await proxyContractInstance.authorized.call(exchangeContractAddress); return isAuthorized; } + /** + * Get the list of all exchange addresses authorized by the Proxy contract. + * @param exchangeContractAddress The hex encoded address of the Exchange contract to use. + * @return The list of authorized addresses. + */ + public async getAuthorizedAddressesAsync(exchangeContractAddress: string): Promise<string[]> { + const proxyContractInstance = await this._getProxyContractAsync(); + const authorizedAddresses = await proxyContractInstance.getAuthorizedAddresses.call(); + return authorizedAddresses; + } private async _getProxyContractAsync(): Promise<ProxyContract> { if (!_.isUndefined(this._proxyContractIfExists)) { return this._proxyContractIfExists; diff --git a/src/types.ts b/src/types.ts index 2af778677..01c22c5ad 100644 --- a/src/types.ts +++ b/src/types.ts @@ -149,6 +149,9 @@ export interface EtherTokenContract extends ContractInstance { } export interface ProxyContract extends ContractInstance { + getAuthorizedAddresses: { + call: () => Promise<string[]>; + }; authorized: { call: (address: string) => Promise<boolean>; }; diff --git a/test/proxy_wrapper_test.ts b/test/proxy_wrapper_test.ts index ecda09e57..c60159b81 100644 --- a/test/proxy_wrapper_test.ts +++ b/test/proxy_wrapper_test.ts @@ -9,9 +9,11 @@ const expect = chai.expect; describe('ProxyWrapper', () => { let zeroEx: ZeroEx; + let exchangeContractAddress: string; before(async () => { const web3 = web3Factory.create(); zeroEx = new ZeroEx(web3.currentProvider); + [exchangeContractAddress] = await zeroEx.exchange.getAvailableContractAddressesAsync(); }); describe('#isAuthorizedAsync', () => { it('should return false if the address is not authorized', async () => { @@ -19,4 +21,13 @@ describe('ProxyWrapper', () => { expect(isAuthorized).to.be.false(); }); }); + describe('#getAuthorizedAddressesAsync', () => { + it('should return the list of authorized addresses', async () => { + const authorizedAddresses = await zeroEx.proxy.getAuthorizedAddressesAsync(exchangeContractAddress); + for (const authorizedAddress of authorizedAddresses) { + const isAuthorized = await zeroEx.proxy.isAuthorizedAsync(authorizedAddress); + expect(isAuthorized).to.be.true(); + } + }); + }); }); |