added test
This commit is contained in:
parent
191f196204
commit
1a50462516
|
@ -27,7 +27,7 @@
|
|||
"types": "lib/cjs/index.d.ts",
|
||||
"scripts": {
|
||||
"docgen": "typedoc --entryPoints src/index.ts --out ../../website/static/api/sbv2-utils",
|
||||
"test": "echo \"No test script for @switchboard-xyz/sbv2-utils\" && exit 0",
|
||||
"test": "ts-mocha -p ./tsconfig.cjs.json -t 1000000 ./tests/*.tests.ts",
|
||||
"build": "shx rm -rf lib && tsc && tsc -p tsconfig.cjs.json",
|
||||
"watch": "tsc -p tsconfig.cjs.json --watch",
|
||||
"prepublishOnly": "shx rm -rf lib && yarn build"
|
||||
|
@ -44,12 +44,15 @@
|
|||
"chalk": "4",
|
||||
"decimal.js": "^10.3.1",
|
||||
"dotenv": "^16.0.1",
|
||||
"mocha": "^9.1.1",
|
||||
"toml": "^3.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/big.js": "^6.1.3",
|
||||
"@types/mocha": "^9.0.0",
|
||||
"@types/node": "^17.0.45",
|
||||
"shx": "^0.3.4",
|
||||
"ts-mocha": "^9.0.2",
|
||||
"typedoc": "^0.23.8",
|
||||
"typescript": "^4.6.3"
|
||||
}
|
||||
|
|
|
@ -258,7 +258,7 @@ export async function createAggregatorReq(
|
|||
aggregator: aggregatorKeypair.publicKey,
|
||||
authority,
|
||||
queue: params.queueAccount.publicKey,
|
||||
authorWallet: params.authorWallet ?? state.tokenVault,
|
||||
// authorWallet: params.authorWallet ?? state.tokenVault,
|
||||
programState: programStateAccount.publicKey,
|
||||
})
|
||||
.instruction(),
|
||||
|
@ -266,7 +266,7 @@ export async function createAggregatorReq(
|
|||
.permissionInit({})
|
||||
.accounts({
|
||||
permission: permissionAccount.publicKey,
|
||||
authority: params.authority,
|
||||
authority: queue.authority,
|
||||
granter: queueAccount.publicKey,
|
||||
grantee: aggregatorKeypair.publicKey,
|
||||
payer: payerPubkey,
|
||||
|
@ -289,9 +289,7 @@ export async function createAggregatorReq(
|
|||
payerPubkey,
|
||||
leaseEscrow,
|
||||
leaseAccount.publicKey,
|
||||
mint.address,
|
||||
spl.TOKEN_PROGRAM_ID,
|
||||
spl.ASSOCIATED_TOKEN_PROGRAM_ID
|
||||
mint.address
|
||||
),
|
||||
await program.methods
|
||||
.leaseInit({
|
||||
|
@ -328,7 +326,7 @@ export async function createAggregatorReq(
|
|||
})
|
||||
.accounts({
|
||||
aggregator: aggregatorKeypair.publicKey,
|
||||
authority: payerPubkey,
|
||||
authority,
|
||||
job: jobAccount.publicKey,
|
||||
})
|
||||
.instruction();
|
||||
|
|
|
@ -228,10 +228,11 @@ export class SwitchboardTestContext implements ISwitchboardTestContext {
|
|||
);
|
||||
if (!balance) {
|
||||
try {
|
||||
await provider.connection.requestAirdrop(
|
||||
const airdropSignature = await provider.connection.requestAirdrop(
|
||||
payerKeypair.publicKey,
|
||||
1_000_000_000
|
||||
);
|
||||
await provider.connection.confirmTransaction(airdropSignature);
|
||||
} catch {}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,169 @@
|
|||
import * as anchor from "@project-serum/anchor";
|
||||
import {
|
||||
AnchorWallet,
|
||||
JobAccount,
|
||||
OracleJob,
|
||||
} from "@switchboard-xyz/switchboard-v2";
|
||||
import fs from "fs";
|
||||
import "mocha";
|
||||
import {
|
||||
awaitOpenRound,
|
||||
createAggregator,
|
||||
SwitchboardTestContext,
|
||||
} from "../lib/cjs";
|
||||
|
||||
describe("Feed tests", () => {
|
||||
// const payer = anchor.web3.Keypair.generate();
|
||||
|
||||
const payer = anchor.web3.Keypair.fromSecretKey(
|
||||
new Uint8Array(
|
||||
JSON.parse(fs.readFileSync("../../../payer-keypair.json", "utf8"))
|
||||
)
|
||||
);
|
||||
|
||||
let switchboard: SwitchboardTestContext;
|
||||
|
||||
before(async () => {
|
||||
try {
|
||||
const localnetConnection = new anchor.web3.Connection(
|
||||
"http://localhost:8899"
|
||||
);
|
||||
const provider = new anchor.AnchorProvider(
|
||||
localnetConnection,
|
||||
new AnchorWallet(payer),
|
||||
{ commitment: "confirmed" }
|
||||
);
|
||||
switchboard = await SwitchboardTestContext.loadFromEnv(provider);
|
||||
console.log("local env detected");
|
||||
return;
|
||||
} catch (error: any) {}
|
||||
|
||||
try {
|
||||
const devnetConnection = new anchor.web3.Connection(
|
||||
"https://devnet.genesysgo.net/"
|
||||
);
|
||||
const provider = new anchor.AnchorProvider(
|
||||
devnetConnection,
|
||||
new AnchorWallet(payer),
|
||||
{ commitment: "confirmed" }
|
||||
);
|
||||
// const airdropSignature = await devnetConnection.requestAirdrop(
|
||||
// payer.publicKey,
|
||||
// anchor.web3.LAMPORTS_PER_SOL
|
||||
// );
|
||||
// await devnetConnection.confirmTransaction(airdropSignature);
|
||||
switchboard = await SwitchboardTestContext.loadDevnetQueue(
|
||||
provider,
|
||||
"F8ce7MsckeZAbAGmxjJNetxYXQa9mKr9nnrC3qKubyYy"
|
||||
);
|
||||
console.log("devnet detected");
|
||||
return;
|
||||
} catch (error: any) {
|
||||
// console.log(`Error: SBV2 Devnet - ${error.message}`);
|
||||
console.error(error);
|
||||
}
|
||||
|
||||
if (!switchboard) {
|
||||
// If fails, throw error
|
||||
throw new Error(
|
||||
`Failed to load the SwitchboardTestContext from devnet or from a switchboard.env file`
|
||||
);
|
||||
}
|
||||
|
||||
const airdropSignature =
|
||||
await switchboard.program.provider.connection.requestAirdrop(
|
||||
payer.publicKey,
|
||||
anchor.web3.LAMPORTS_PER_SOL
|
||||
);
|
||||
await switchboard.program.provider.connection.confirmTransaction(
|
||||
airdropSignature
|
||||
);
|
||||
});
|
||||
|
||||
it("Creates a switchboard feed", async () => {
|
||||
const job1 = await JobAccount.create(switchboard.program, {
|
||||
name: Buffer.from("Job1"),
|
||||
authority: payer.publicKey,
|
||||
data: Buffer.from(
|
||||
OracleJob.encodeDelimited(
|
||||
OracleJob.create({
|
||||
tasks: [
|
||||
OracleJob.Task.create({
|
||||
httpTask: OracleJob.HttpTask.create({
|
||||
url: `https://ftx.us/api/markets/SOL_USD`,
|
||||
}),
|
||||
}),
|
||||
OracleJob.Task.create({
|
||||
jsonParseTask: OracleJob.JsonParseTask.create({
|
||||
path: "$.result.price",
|
||||
}),
|
||||
}),
|
||||
],
|
||||
})
|
||||
).finish()
|
||||
),
|
||||
});
|
||||
const job2 = await JobAccount.create(switchboard.program, {
|
||||
name: Buffer.from("Job1"),
|
||||
authority: payer.publicKey,
|
||||
data: Buffer.from(
|
||||
OracleJob.encodeDelimited(
|
||||
OracleJob.create({
|
||||
tasks: [
|
||||
OracleJob.Task.create({
|
||||
httpTask: OracleJob.HttpTask.create({
|
||||
url: "https://www.binance.com/api/v3/ticker/price?symbol=SOLUSDT",
|
||||
}),
|
||||
}),
|
||||
OracleJob.Task.create({
|
||||
jsonParseTask: OracleJob.JsonParseTask.create({
|
||||
path: "$.price",
|
||||
}),
|
||||
}),
|
||||
OracleJob.Task.create({
|
||||
multiplyTask: OracleJob.MultiplyTask.create({
|
||||
aggregatorPubkey:
|
||||
"ETAaeeuQBwsh9mC2gCov9WdhJENZuffRMXY2HgjCcSL9",
|
||||
}),
|
||||
}),
|
||||
],
|
||||
})
|
||||
).finish()
|
||||
),
|
||||
});
|
||||
try {
|
||||
const newAggregator = await createAggregator(
|
||||
switchboard.program,
|
||||
switchboard.queue,
|
||||
{
|
||||
name: Buffer.from("Test Feed"),
|
||||
batchSize: 1,
|
||||
minRequiredOracleResults: 1,
|
||||
minRequiredJobResults: 1,
|
||||
minUpdateDelaySeconds: 10,
|
||||
queueAccount: switchboard.queue,
|
||||
},
|
||||
[
|
||||
[job1, 1],
|
||||
[job2, 1],
|
||||
]
|
||||
);
|
||||
|
||||
console.log(`Created Aggregator: ${newAggregator.publicKey}`);
|
||||
|
||||
// call openRound
|
||||
const value = await awaitOpenRound(
|
||||
newAggregator,
|
||||
switchboard.queue,
|
||||
switchboard.payerTokenWallet,
|
||||
undefined,
|
||||
45
|
||||
);
|
||||
|
||||
console.log(`Aggregator Value: ${value.toString()}`);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
});
|
|
@ -1,9 +1,12 @@
|
|||
{
|
||||
"include": ["./src/**/*"],
|
||||
"exclude": ["tests/**/*", "lib", "node_modules"],
|
||||
"files": ["./src/index.ts"],
|
||||
"compilerOptions": {
|
||||
"target": "es2019",
|
||||
// "target": "es2019",
|
||||
"composite": true,
|
||||
"sourceMap": true,
|
||||
"inlineSources": true,
|
||||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
|
@ -11,8 +14,8 @@
|
|||
"emitDecoratorMetadata": true,
|
||||
"esModuleInterop": true,
|
||||
"resolveJsonModule": true,
|
||||
"composite": true,
|
||||
"skipLibCheck": true,
|
||||
"types": ["mocha", "node", "long"],
|
||||
// strict
|
||||
"strict": true,
|
||||
"noImplicitThis": true,
|
||||
|
@ -23,11 +26,7 @@
|
|||
"noImplicitReturns": true,
|
||||
"strictPropertyInitialization": true,
|
||||
"paths": {
|
||||
"@switchboard-xyz/switchboard-v2": ["../ts"],
|
||||
"@solana/spl-token": [
|
||||
"../../node_modules/@solana/spl-token",
|
||||
"./node_modules/@solana/spl-token"
|
||||
]
|
||||
"@switchboard-xyz/switchboard-v2": ["../ts"]
|
||||
}
|
||||
},
|
||||
"references": [{ "path": "../ts" }]
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
"build:esm": "tsc && yarn build:esm:protos",
|
||||
"build": "yarn build:protos && yarn build:cjs && yarn build:esm",
|
||||
"watch": "tsc -p tsconfig.cjs.json --watch",
|
||||
"test": "mocha --extension ts --require ts-node/register -t 1000000 tests/",
|
||||
"test": "ts-mocha -p ./tsconfig.cjs.json --require ts-node/register -t 1000000 ./tests/*.tests.ts",
|
||||
"lint": "eslint --fix-dry-run --ext .ts src/**/*.ts",
|
||||
"prepublish": "shx rm -rf lib && yarn build"
|
||||
},
|
||||
|
@ -52,7 +52,6 @@
|
|||
"@solana/spl-governance": "^0.0.34",
|
||||
"@solana/spl-token-v2": "npm:@solana/spl-token@^0.2.0",
|
||||
"@solana/web3.js": "^1.44.3",
|
||||
"@types/big.js": "^6.1.4",
|
||||
"assert": "^2.0.0",
|
||||
"big.js": "^6.2.0",
|
||||
"bs58": "^5.0.0",
|
||||
|
@ -70,6 +69,7 @@
|
|||
"@types/mocha": "^9.0.0",
|
||||
"@types/node": "^17.0.45",
|
||||
"shx": "^0.3.4",
|
||||
"ts-mocha": "^9.0.2",
|
||||
"typedoc": "^0.23.8",
|
||||
"typescript": "^4.7"
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue