permissionless
Version:
A utility library for working with ERC-4337
154 lines (135 loc) • 4.59 kB
text/typescript
import {
entryPoint06Address,
entryPoint07Address,
entryPoint08Address
} from "viem/account-abstraction"
import { describe, expect } from "vitest"
import { testWithRpc } from "../../../permissionless-test/src/testWithRpc"
import {
getBundlerClient,
getPimlicoClient,
getSimpleAccountClient
} from "../../../permissionless-test/src/utils"
import { validateSponsorshipPolicies } from "./validateSponsorshipPolicies"
describe("validateSponsorshipPolicies", () => {
testWithRpc("Validating sponsorship policies V06", async ({ rpc }) => {
const { paymasterRpc } = rpc
const simpleAccountClient = getBundlerClient({
account: await getSimpleAccountClient({
...rpc,
entryPoint: {
version: "0.6"
}
}),
entryPoint: {
version: "0.6"
},
...rpc
})
const userOperation = await simpleAccountClient.prepareUserOperation({
calls: [
{
to: "0x5af0d9827e0c53e4799bb226655a1de152a425a5",
data: "0x",
value: 0n
}
]
})
const pimlicoPaymasterClient = getPimlicoClient({
entryPointVersion: "0.6",
altoRpc: paymasterRpc
})
const policies = await validateSponsorshipPolicies(
pimlicoPaymasterClient,
{
entryPointAddress: entryPoint06Address,
userOperation: userOperation,
sponsorshipPolicyIds: ["sp_crazy_kangaroo"]
}
)
expect(policies).toBeTruthy()
expect(policies.length).toBeGreaterThan(0)
expect(Array.isArray(policies)).toBe(true)
expect(policies.length).toBe(1)
})
testWithRpc("Validating sponsorship policies V07", async ({ rpc }) => {
const { paymasterRpc } = rpc
const simpleAccountClient = getBundlerClient({
account: await getSimpleAccountClient({
...rpc,
entryPoint: {
version: "0.7"
}
}),
entryPoint: {
version: "0.7"
},
...rpc
})
const userOperation = await simpleAccountClient.prepareUserOperation({
calls: [
{
to: "0x5af0d9827e0c53e4799bb226655a1de152a425a5",
data: "0x",
value: 0n
}
]
})
const pimlicoPaymasterClient = getPimlicoClient({
entryPointVersion: "0.7",
altoRpc: paymasterRpc
})
const policies = await validateSponsorshipPolicies(
pimlicoPaymasterClient,
{
entryPointAddress: entryPoint07Address,
userOperation: userOperation,
sponsorshipPolicyIds: ["sp_crazy_kangaroo"]
}
)
expect(policies).toBeTruthy()
expect(policies.length).toBeGreaterThan(0)
expect(Array.isArray(policies)).toBe(true)
expect(policies.length).toBe(1)
})
testWithRpc("Validating sponsorship policies V08", async ({ rpc }) => {
const { paymasterRpc } = rpc
const simpleAccountClient = getBundlerClient({
account: await getSimpleAccountClient({
...rpc,
entryPoint: {
version: "0.8"
}
}),
entryPoint: {
version: "0.8"
},
...rpc
})
const userOperation = await simpleAccountClient.prepareUserOperation({
calls: [
{
to: "0x5af0d9827e0c53e4799bb226655a1de152a425a5",
data: "0x",
value: 0n
}
]
})
const pimlicoPaymasterClient = getPimlicoClient({
entryPointVersion: "0.8",
altoRpc: paymasterRpc
})
const policies = await validateSponsorshipPolicies(
pimlicoPaymasterClient,
{
entryPointAddress: entryPoint08Address,
userOperation: userOperation,
sponsorshipPolicyIds: ["sp_crazy_kangaroo"]
}
)
expect(policies).toBeTruthy()
expect(policies.length).toBeGreaterThan(0)
expect(Array.isArray(policies)).toBe(true)
expect(policies.length).toBe(1)
})
})