diff --git a/package.json b/package.json index 1a19e79c..514274c6 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "mocha": "TS_NODE_PROJECT='./test/tsconfig.json' mocha --config=test/.mocharc.json --node-env=test --exit", "test": "npm run lint && npm run test:unit:cover && npm run test:integration:cover", "test:unit": "npm run mocha -- 'test/unit/**/*.test.ts'", - "test:integration": "npm run mocha -- 'test/integration/Provider.test.ts' 'test/integration/PublishFlow.test.ts' 'test/integration/PublishEditConsume.test.ts'", + "test:integration": "npm run mocha -- 'test/integration/Provider.test.ts' 'test/integration/PublishFlow.test.ts' 'test/integration/PublishEditConsume.test.ts'", "test:unit:cover": "nyc --report-dir coverage/unit npm run test:unit", "test:integration:cover": "nyc --report-dir coverage/integration --no-clean npm run test:integration", "create:guide": "./scripts/createCodeExamples.sh test/integration/CodeExamples.test.ts", diff --git a/src/services/Provider.ts b/src/services/Provider.ts index a468dae0..852f5bc0 100644 --- a/src/services/Provider.ts +++ b/src/services/Provider.ts @@ -99,28 +99,20 @@ export class Provider { } } - public async signProviderRequest( - signer: Signer, - message: string, - web3?: Web3 - ): Promise { + public async signProviderRequest(signer: Signer, message: string): Promise { const consumerMessage = ethers.utils.solidityKeccak256( ['bytes'], [ethers.utils.hexlify(ethers.utils.toUtf8Bytes(message))] ) + // const isMetaMask = web3 && web3.currentProvider && (web3.currentProvider as any).isMetaMask + // if (isMetaMask) return await web3.eth.personal.sign(consumerMessage, accountId, password) + // await web3.eth.sign(consumerMessage, await signer.getAddress()) - // const isMetaMask = - // web3 && web3.currentProvider && (web3.currentProvider as any).isMetaMask - - // return await web3.eth.personal.sign(consumerMessage, accountId, password) - // if (isMetaMask) - // (signer as providers.JsonRpcSigner)._legacySignMessage(consumerMessage) - // else - const oldSignature = await web3.eth.sign(consumerMessage, await signer.getAddress()) - console.log('initial signature = ', oldSignature) - const newSignature = await (signer as providers.JsonRpcSigner)._legacySignMessage( - consumerMessage + const messageHashBytes = ethers.utils.arrayify(consumerMessage) + let newSignature = await (signer as providers.JsonRpcSigner)._legacySignMessage( + messageHashBytes ) + console.log('new signature = ', newSignature) return newSignature } @@ -395,7 +387,6 @@ export class Provider { transferTxId: string, providerUri: string, signer: Signer, - web3: Web3, userCustomParameters?: UserCustomParameters ): Promise { const providerEndpoints = await this.getEndpoints(providerUri) @@ -408,7 +399,7 @@ export class Provider { : null if (!downloadUrl) return null const nonce = Date.now() - const signature = await this.signProviderRequest(signer, did + nonce, web3) + const signature = await this.signProviderRequest(signer, did + nonce) let consumeUrl = downloadUrl consumeUrl += `?fileIndex=${fileIndex}` consumeUrl += `&documentId=${did}` diff --git a/test/integration/PublishEditConsume.test.ts b/test/integration/PublishEditConsume.test.ts index bd895d45..066bc3b0 100644 --- a/test/integration/PublishEditConsume.test.ts +++ b/test/integration/PublishEditConsume.test.ts @@ -396,77 +396,76 @@ describe('Publish consume test', async () => { }) it('Should download the datasets files', async () => { - // const urlDownloadUrl = await ProviderInstance.getDownloadUrl( - // resolvedUrlAssetDdo.id, - // resolvedUrlAssetDdo.services[0].id, - // 0, - // urlOrderTx.transactionHash, - // providerUrl, - // consumerAccount, - // web3 - // ) - // assert(urlDownloadUrl, 'Provider getDownloadUrl failed for url dataset') - // try { - // await downloadFile(urlDownloadUrl) - // } catch (e) { - // assert.fail(`Download url dataset failed: ${e}`) - // } - // const arwaveDownloadURL = await ProviderInstance.getDownloadUrl( - // resolvedArweaveAssetDdo.id, - // resolvedArweaveAssetDdo.services[0].id, - // 0, - // arwaveOrderTx.transactionHash, - // providerUrl, - // consumerAccount - // ) - // assert(arwaveDownloadURL, 'Provider getDownloadUrl failed for arwave dataset') - // try { - // await downloadFile(arwaveDownloadURL) - // } catch (e) { - // assert.fail(`Download arwave dataset failed: ${e}`) - // } - // const ipfsDownloadURL = await ProviderInstance.getDownloadUrl( - // resolvedIpfsAssetDdo.id, - // resolvedIpfsAssetDdo.services[0].id, - // 0, - // ipfsOrderTx.transactionHash, - // providerUrl, - // consumerAccount - // ) - // assert(ipfsDownloadURL, 'Provider getDownloadUrl failed for ipfs dataset') - // try { - // await downloadFile(ipfsDownloadURL) - // } catch (e) { - // assert.fail(`Download ipfs dataset failed ${e}`) - // } - // const onchainDownloadURL = await ProviderInstance.getDownloadUrl( - // resolvedOnchainAssetDdo.id, - // resolvedOnchainAssetDdo.services[0].id, - // 0, - // onchainOrderTx.transactionHash, - // providerUrl, - // consumerAccount - // ) - // assert(onchainDownloadURL, 'Provider getDownloadUrl failed for onchain dataset') - // try { - // await downloadFile(onchainDownloadURL) - // } catch (e) { - // assert.fail(`Download onchain dataset failed ${e}`) - // } - // const graphqlDownloadURL = await ProviderInstance.getDownloadUrl( - // resolvedGraphqlAssetDdo.id, - // resolvedGraphqlAssetDdo.services[0].id, - // 0, - // grapqlOrderTx.transactionHash, - // providerUrl, - // consumerAccount - // ) - // assert(graphqlDownloadURL, 'Provider getDownloadUrl failed for graphql dataset') - // try { - // await downloadFile(graphqlDownloadURL) - // } catch (e) { - // assert.fail(`Download graphql dataset failed ${e}`) - // } + const urlDownloadUrl = await ProviderInstance.getDownloadUrl( + resolvedUrlAssetDdo.id, + resolvedUrlAssetDdo.services[0].id, + 0, + urlOrderTx.transactionHash, + providerUrl, + consumerAccount + ) + assert(urlDownloadUrl, 'Provider getDownloadUrl failed for url dataset') + try { + await downloadFile(urlDownloadUrl) + } catch (e) { + assert.fail(`Download url dataset failed: ${e}`) + } + const arwaveDownloadURL = await ProviderInstance.getDownloadUrl( + resolvedArweaveAssetDdo.id, + resolvedArweaveAssetDdo.services[0].id, + 0, + arwaveOrderTx.transactionHash, + providerUrl, + consumerAccount + ) + assert(arwaveDownloadURL, 'Provider getDownloadUrl failed for arwave dataset') + try { + await downloadFile(arwaveDownloadURL) + } catch (e) { + assert.fail(`Download arwave dataset failed: ${e}`) + } + const ipfsDownloadURL = await ProviderInstance.getDownloadUrl( + resolvedIpfsAssetDdo.id, + resolvedIpfsAssetDdo.services[0].id, + 0, + ipfsOrderTx.transactionHash, + providerUrl, + consumerAccount + ) + assert(ipfsDownloadURL, 'Provider getDownloadUrl failed for ipfs dataset') + try { + await downloadFile(ipfsDownloadURL) + } catch (e) { + assert.fail(`Download ipfs dataset failed ${e}`) + } + const onchainDownloadURL = await ProviderInstance.getDownloadUrl( + resolvedOnchainAssetDdo.id, + resolvedOnchainAssetDdo.services[0].id, + 0, + onchainOrderTx.transactionHash, + providerUrl, + consumerAccount + ) + assert(onchainDownloadURL, 'Provider getDownloadUrl failed for onchain dataset') + try { + await downloadFile(onchainDownloadURL) + } catch (e) { + assert.fail(`Download onchain dataset failed ${e}`) + } + const graphqlDownloadURL = await ProviderInstance.getDownloadUrl( + resolvedGraphqlAssetDdo.id, + resolvedGraphqlAssetDdo.services[0].id, + 0, + grapqlOrderTx.transactionHash, + providerUrl, + consumerAccount + ) + assert(graphqlDownloadURL, 'Provider getDownloadUrl failed for graphql dataset') + try { + await downloadFile(graphqlDownloadURL) + } catch (e) { + assert.fail(`Download graphql dataset failed ${e}`) + } }) it('Should update datasets metadata', async () => { diff --git a/test/integration/helpers.ts b/test/integration/helpers.ts index 2974d87d..90fd1487 100644 --- a/test/integration/helpers.ts +++ b/test/integration/helpers.ts @@ -180,8 +180,6 @@ export async function orderAsset( providerUrl ) - console.log('intialized', initializeData) - const providerFees: ProviderFees = { providerFeeAddress: initializeData.providerFee.providerFeeAddress, providerFeeToken: initializeData.providerFee.providerFeeToken, @@ -194,11 +192,13 @@ export async function orderAsset( } // make the payment - const orderTx = await datatoken.startOrder( + const tx = await datatoken.startOrder( datatokenAddress, consumerAccount, 0, providerFees ) - return orderTx + const orderTx = await tx.wait() + const OrderStartedTx = getEventFromTx(orderTx, 'OrderStarted') + return OrderStartedTx }