Skip to content

Commit

Permalink
Merge pull request #1 from spherity/chore/update-ethers
Browse files Browse the repository at this point in the history
chore: upgrade ethers
  • Loading branch information
fermentfan committed Oct 6, 2023
2 parents ca5c62f + eab50a7 commit 219d360
Show file tree
Hide file tree
Showing 18 changed files with 13,774 additions and 30,124 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ database.sqlite
tsconfig.tsbuildinfo
.idea/
.DS_Store
lib
2 changes: 1 addition & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
"request": "launch",
"name": "debug integration tests",
"program": "${workspaceFolder}/node_modules/.bin/jest",
"args": ["--runInBand", "--coverage=false", "--config=jest.json"],
"args": ["--runInBand", "--coverage=false", "--config=jest.config.json"],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"disableOptimisticBPs": true,
Expand Down
7 changes: 4 additions & 3 deletions __tests__/localAgent.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import { EthrDIDProvider } from '@veramo/did-provider-ethr'
import { DIDResolverPlugin } from '@veramo/did-resolver'
import { getResolver as ethrDidResolver } from 'ethr-did-resolver'
import { EthrDidExtension } from '../src'
import { jest } from '@jest/globals'

jest.setTimeout(30000)

Expand Down Expand Up @@ -65,7 +66,7 @@ const setup = async (options?: IAgentOptions): Promise<boolean> => {
ttl: 60 * 60 * 24 * 30 * 12 + 1,
networks: [
{
chainId: 1337,
chainId: BigInt(1337),
name: 'ganache',
provider,
registry,
Expand All @@ -79,7 +80,7 @@ const setup = async (options?: IAgentOptions): Promise<boolean> => {
defaultKms: 'local',
networks: [
{
chainId: 1337,
chainId: BigInt(1337),
name: 'ganache',
provider,
registry,
Expand All @@ -92,7 +93,7 @@ const setup = async (options?: IAgentOptions): Promise<boolean> => {
networks: [
{
name: 'ganache',
chainId: 1337,
chainId: BigInt(1337),
provider,
registry,
},
Expand Down
4 changes: 2 additions & 2 deletions __tests__/restAgent.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ const setup = async (options?: IAgentOptions): Promise<boolean> => {
defaultKms: 'local',
networks: [
{
chainId: 1337,
chainId: BigInt(1337),
name: 'ganache',
provider,
registry,
Expand All @@ -114,7 +114,7 @@ const setup = async (options?: IAgentOptions): Promise<boolean> => {
networks: [
{
name: 'ganache',
chainId: 1337,
chainId: BigInt(1337),
provider,
registry,
},
Expand Down
2 changes: 1 addition & 1 deletion __tests__/shared/didExtensionEthrLogic.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { IDataStore, IDataStoreORM, IDIDManager, IIdentifier, IKeyManager, IResolver, TAgent } from '@veramo/core'
import { computeAddress } from '@ethersproject/transactions'
import { computeAddress } from 'ethers'
import { IEthrDidExtension } from '../../src'

type ConfiguredAgent = TAgent<IDIDManager & IKeyManager & IEthrDidExtension & IDataStore & IDataStoreORM & IResolver>
Expand Down
148 changes: 93 additions & 55 deletions __tests__/utils/ganache-provider.ts
Original file line number Diff line number Diff line change
@@ -1,69 +1,107 @@
import { Web3Provider } from '@ethersproject/providers'
import { Contract, ContractFactory } from '@ethersproject/contracts'
import type { JsonRpcError, JsonRpcPayload, JsonRpcResult } from 'ethers'
import { assertArgument, Contract, ContractFactory, JsonRpcApiProvider, Network } from 'ethers'
import { EthereumDIDRegistry } from 'ethr-did-resolver'
import type { EthereumProvider } from 'ganache'
import ganache from 'ganache'

export type GanacheConfig = Parameters<typeof ganache.provider>[0]

/**
* A JsonRpcApiProvider that connects to a local ganache instance.
*
* Code mostly copied from ethersjs test tooling
* (https://github.com/ethers-io/ext-provider-ganache/blob/335566b563b0a48844e2427ff9e3cd809e37d2b8/src.ts/provider-ganache.ts#L30)
*/
export class GanacheProvider extends JsonRpcApiProvider {
readonly ganache: EthereumProvider

constructor(providerOrOptions?: EthereumProvider | GanacheConfig) {
let provider: EthereumProvider
if (providerOrOptions == null || typeof (<any>providerOrOptions).getOptions !== 'function') {
provider = ganache.provider(<any>providerOrOptions)
} else {
provider = <EthereumProvider>providerOrOptions
}

const network = new Network('testnet', provider.getOptions().chain.chainId)
super(network, {
staticNetwork: network,
batchMaxCount: 1,
batchStallTime: 0,
cacheTimeout: -1,
})

this.ganache = provider
}

async _send(payload: JsonRpcPayload | Array<JsonRpcPayload>): Promise<Array<JsonRpcResult | JsonRpcError>> {
assertArgument(!Array.isArray(payload), 'batch requests unsupported', 'UNSUPPORTED_OPERATION', {
operation: '_send',
info: { payload },
})

const result = await this.ganache.request(<any>payload)
return [{ id: payload.id, result }]
}
}

/**
* Creates a Web3Provider that connects to a local ganache instance with a bunch of known keys and an ERC1056 contract.
*
* This provider can only be used in a single test suite, because of some concurrency issues with ganache.
*/
export async function createGanacheProvider(): Promise<{ provider: Web3Provider; registry: string }> {
const provider = new Web3Provider(
ganache.provider({
logging: { quiet: true },
accounts: [
{
secretKey: '0x278a5de700e29faae8e40e366ec5012b5ec63d36ec77e8a2417154cc1d25383f',
// address: '0xf3beac30c498d9e26865f34fcaa57dbb935b0d74',
// publicKey: '03fdd57adec3d438ea237fe46b33ee1e016eda6b585c3e27ea66686c2ea5358479'
balance: '0x1000000000000000000000',
},
{
secretKey: '0x0000000000000000000000000000000000000000000000000000000000000001',
// address: '0x7e5f4552091a69125d5dfcb7b8c2659029395bdf',
// publicKey: '0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798'
balance: '0x1000000000000000000000',
},
{
secretKey: '0x0000000000000000000000000000000000000000000000000000000000000002',
// address: '0x2b5ad5c4795c026514f8317c7a215e218dccd6cf',
// publicKey: '02c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5'
balance: '0x1000000000000000000000',
},
{
secretKey: '0x0000000000000000000000000000000000000000000000000000000000000003',
// address: '0x6813eb9362372eef6200f3b1dbc3f819671cba69',
// publicKey: '02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9'
balance: '0x1000000000000000000000',
},
{
secretKey: '0x0000000000000000000000000000000000000000000000000000000000000004',
// address: '0x1eff47bc3a10a45d4b230b5d10e37751fe6aa718',
// publicKey: '02e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13'
balance: '0x1000000000000000000000',
},
{
secretKey: '0x0000000000000000000000000000000000000000000000000000000000000005',
// address: '0xe1ab8145f7e55dc933d51a18c793f901a3a0b276'
// publicKey: '022f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4'
balance: '0x1000000000000000000000',
},
{
secretKey: '0x0000000000000000000000000000000000000000000000000000000000000006',
balance: `0x1000000000000000000000`,
},
],
}) as any
)
export async function createGanacheProvider(): Promise<{ provider: JsonRpcApiProvider; registry: string }> {
const provider = new GanacheProvider({
logging: { quiet: true },
accounts: [
{
secretKey: '0x278a5de700e29faae8e40e366ec5012b5ec63d36ec77e8a2417154cc1d25383f',
// address: '0xf3beac30c498d9e26865f34fcaa57dbb935b0d74',
// publicKey: '03fdd57adec3d438ea237fe46b33ee1e016eda6b585c3e27ea66686c2ea5358479'
balance: '0x1000000000000000000000',
},
{
secretKey: '0x0000000000000000000000000000000000000000000000000000000000000001',
// address: '0x7e5f4552091a69125d5dfcb7b8c2659029395bdf',
// publicKey: '0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798'
balance: '0x1000000000000000000000',
},
{
secretKey: '0x0000000000000000000000000000000000000000000000000000000000000002',
// address: '0x2b5ad5c4795c026514f8317c7a215e218dccd6cf',
// publicKey: '02c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5'
balance: '0x1000000000000000000000',
},
{
secretKey: '0x0000000000000000000000000000000000000000000000000000000000000003',
// address: '0x6813eb9362372eef6200f3b1dbc3f819671cba69',
// publicKey: '02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9'
balance: '0x1000000000000000000000',
},
{
secretKey: '0x0000000000000000000000000000000000000000000000000000000000000004',
// address: '0x1eff47bc3a10a45d4b230b5d10e37751fe6aa718',
// publicKey: '02e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13'
balance: '0x1000000000000000000000',
},
{
secretKey: '0x0000000000000000000000000000000000000000000000000000000000000005',
// address: '0xe1ab8145f7e55dc933d51a18c793f901a3a0b276'
// publicKey: '022f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4'
balance: '0x1000000000000000000000',
},
{
secretKey: '0x0000000000000000000000000000000000000000000000000000000000000006',
balance: `0x1000000000000000000000`,
},
],
})
await provider.ready
const factory = ContractFactory.fromSolidity(EthereumDIDRegistry).connect(provider.getSigner(0))
const factory = ContractFactory.fromSolidity(EthereumDIDRegistry).connect(await provider.getSigner(0))

let registryContract: Contract = await factory.deploy()
registryContract = await registryContract.deployed()

await registryContract.deployTransaction.wait()
registryContract = await registryContract.waitForDeployment()

const registry = registryContract.address
const registry = await registryContract.getAddress()
return { provider, registry }
}
Loading

0 comments on commit 219d360

Please sign in to comment.