1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00

Provider int tests

This commit is contained in:
Bogdan Fazakas 2023-03-08 12:55:09 +02:00
parent dd72fa4d44
commit 3ed382ce84
3 changed files with 40 additions and 45 deletions

View File

@ -30,7 +30,7 @@
"test": "npm run lint && npm run test:unit:cover && npm run test:integration:cover",
"test:unit": "npm run mocha -- 'test/unit/**/*.test.ts'",
"test:unit:cover": "nyc --report-dir coverage/unit --exclude 'src/@types/**/*' npm run test:unit",
"test:integration": "npm run mocha -- 'test/integration/**/*.test.ts'",
"test:integration": "npm run mocha -- 'test/integration/Provider.test.ts'",
"test:integration:cover": "nyc --report-dir coverage/integration --no-clean npm run test:integration",
"create:guide": "./scripts/createCodeExamples.sh test/integration/CodeExamples.test.ts",
"create:guidec2d": "./scripts/createCodeExamples.sh test/integration/ComputeExamples.test.ts",

View File

@ -1,5 +1,5 @@
import Web3 from 'web3'
import fetch from 'cross-fetch'
import { ethers, Signer, providers } from 'ethers'
import { LoggerInstance } from '../utils'
import {
Arweave,
@ -98,21 +98,25 @@ export class Provider {
}
}
// aici trebuie modificat
public async signProviderRequest(
web3: Web3,
accountId: string,
signer: Signer,
message: string,
password?: string
): Promise<string> {
const consumerMessage = web3.utils.soliditySha3({
t: 'bytes',
v: web3.utils.utf8ToHex(message)
})
const isMetaMask =
web3 && web3.currentProvider && (web3.currentProvider as any).isMetaMask
if (isMetaMask)
return await web3.eth.personal.sign(consumerMessage, accountId, password)
else return await web3.eth.sign(consumerMessage, accountId)
const consumerMessage = ethers.utils.solidityKeccak256(
['bytes'],
[ethers.utils.hexlify(ethers.utils.toUtf8Bytes(message))]
)
// 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
return await (signer as providers.JsonRpcSigner)._legacySignMessage(consumerMessage)
}
/** Encrypt data using the Provider's own symmetric key
@ -371,7 +375,7 @@ export class Provider {
* @param {string} serviceId
* @param {number} fileIndex
* @param {string} providerUri
* @param {Web3} web3
* @param {Signer} signer
* @param {UserCustomParameters} userCustomParameters
* @return {Promise<string>}
*/
@ -382,7 +386,7 @@ export class Provider {
fileIndex: number,
transferTxId: string,
providerUri: string,
web3: Web3,
signer: Signer,
userCustomParameters?: UserCustomParameters
): Promise<any> {
const providerEndpoints = await this.getEndpoints(providerUri)
@ -395,7 +399,7 @@ export class Provider {
: null
if (!downloadUrl) return null
const nonce = Date.now()
const signature = await this.signProviderRequest(web3, accountId, did + nonce)
const signature = await this.signProviderRequest(signer, did + nonce)
let consumeUrl = downloadUrl
consumeUrl += `?fileIndex=${fileIndex}`
consumeUrl += `&documentId=${did}`
@ -409,20 +413,22 @@ export class Provider {
return consumeUrl
}
// need to update
// this as well
/** Instruct the provider to start a compute job
* @param {string} did
* @param {string} consumerAddress
* @param {string} computeEnv
* @param {ComputeAlgorithm} algorithm
* @param {string} providerUri
* @param {Web3} web3
* @param {Signer} signer
* @param {AbortSignal} signal abort signal
* @param {ComputeOutput} output
* @return {Promise<ComputeJob | ComputeJob[]>}
*/
public async computeStart(
providerUri: string,
web3: Web3,
signer: Signer,
consumerAddress: string,
computeEnv: string,
dataset: ComputeAsset,
@ -444,11 +450,7 @@ export class Provider {
let signatureMessage = consumerAddress
signatureMessage += dataset.documentId
signatureMessage += nonce
const signature = await this.signProviderRequest(
web3,
consumerAddress,
signatureMessage
)
const signature = await this.signProviderRequest(signer, signatureMessage)
const payload = Object()
payload.consumerAddress = consumerAddress
payload.signature = signature
@ -487,12 +489,13 @@ export class Provider {
}
}
// this as well
/** Instruct the provider to Stop the execution of a to stop a compute job.
* @param {string} did
* @param {string} consumerAddress
* @param {string} jobId
* @param {string} providerUri
* @param {Web3} web3
* @param {Signer} signer
* @param {AbortSignal} signal abort signal
* @return {Promise<ComputeJob | ComputeJob[]>}
*/
@ -501,7 +504,7 @@ export class Provider {
consumerAddress: string,
jobId: string,
providerUri: string,
web3: Web3,
signer: Signer,
signal?: AbortSignal
): Promise<ComputeJob | ComputeJob[]> {
const providerEndpoints = await this.getEndpoints(providerUri)
@ -525,11 +528,7 @@ export class Provider {
signatureMessage += jobId || ''
signatureMessage += (did && `${this.noZeroX(did)}`) || ''
signatureMessage += nonce
const signature = await this.signProviderRequest(
web3,
consumerAddress,
signatureMessage
)
const signature = await this.signProviderRequest(signer, signatureMessage)
const payload = Object()
payload.signature = signature
payload.documentId = this.noZeroX(did)
@ -614,7 +613,7 @@ export class Provider {
/** Get compute result url
* @param {string} providerUri The URI of the provider we want to query
* @param {Web3} web3 Web3 instance
* @param {Signer} signer Web3 instance
* @param {string} consumerAddress The consumer ethereum address
* @param {string} jobId The ID of a compute job.
* @param {number} index Result index
@ -622,7 +621,7 @@ export class Provider {
*/
public async getComputeResultUrl(
providerUri: string,
web3: Web3,
signer: Signer,
consumerAddress: string,
jobId: string,
index: number
@ -641,11 +640,7 @@ export class Provider {
signatureMessage += jobId
signatureMessage += index.toString()
signatureMessage += nonce
const signature = await this.signProviderRequest(
web3,
consumerAddress,
signatureMessage
)
const signature = await this.signProviderRequest(signer, signatureMessage)
if (!computeResultUrl) return null
let resultUrl = computeResultUrl
resultUrl += `?consumerAddress=${consumerAddress}`
@ -656,6 +651,7 @@ export class Provider {
return resultUrl
}
// needs update
/** Deletes a compute job.
* @param {string} did
* @param {string} consumerAddress
@ -670,7 +666,7 @@ export class Provider {
consumerAddress: string,
jobId: string,
providerUri: string,
web3: Web3,
signer: Signer,
signal?: AbortSignal
): Promise<ComputeJob | ComputeJob[]> {
const providerEndpoints = await this.getEndpoints(providerUri)
@ -694,11 +690,7 @@ export class Provider {
signatureMessage += jobId || ''
signatureMessage += (did && `${this.noZeroX(did)}`) || ''
signatureMessage += nonce
const signature = await this.signProviderRequest(
web3,
consumerAddress,
signatureMessage
)
const signature = await this.signProviderRequest(signer, signatureMessage)
const payload = Object()
payload.documentId = this.noZeroX(did)
payload.consumerAddress = consumerAddress

View File

@ -1,14 +1,17 @@
import { assert } from 'chai'
import { web3, getTestConfig } from '../config'
import { getTestConfig, provider } from '../config'
import { Config, Provider } from '../../src'
import { ethers, Signer, providers } from 'ethers'
import { FileInfo } from '../../src/@types'
describe('Provider tests', async () => {
let config: Config
let signer: Signer
let providerInstance: Provider
before(async () => {
config = await getTestConfig(web3)
signer = (await provider.getSigner(0)) as Signer
config = await getTestConfig(signer)
})
it('Initialize Ocean', async () => {