create-pool.ts 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import * as anchor from "@project-serum/anchor";
  2. import { Program } from "@project-serum/anchor";
  3. import { PublicKey } from "@solana/web3.js";
  4. import { AmmTutorial } from "../target/types/amm_tutorial";
  5. import { TestValues, createValues, expectRevert, mintingTokens } from "./utils";
  6. describe("Create pool", () => {
  7. const provider = anchor.AnchorProvider.env();
  8. const connection = provider.connection;
  9. anchor.setProvider(provider);
  10. const program = anchor.workspace.AmmTutorial as Program<AmmTutorial>;
  11. let values: TestValues;
  12. beforeEach(async () => {
  13. values = createValues();
  14. console.log("values",values)
  15. await program.methods
  16. .createAmm(values.id, values.fee)
  17. .accounts({ amm: values.ammKey, admin: values.admin.publicKey })
  18. .rpc();
  19. await mintingTokens({
  20. connection,
  21. creator: values.admin,
  22. mintAKeypair: values.mintAKeypair,
  23. mintBKeypair: values.mintBKeypair,
  24. });
  25. });
  26. it("Creation", async () => {
  27. await program.methods
  28. .createPool()
  29. .accounts({
  30. amm: values.ammKey,
  31. pool: values.poolKey,
  32. poolAuthority: values.poolAuthority,
  33. mintLiquidity: values.mintLiquidity,
  34. mintA: values.mintAKeypair.publicKey,
  35. mintB: values.mintBKeypair.publicKey,
  36. poolAccountA: values.poolAccountA,
  37. poolAccountB: values.poolAccountB,
  38. })
  39. .rpc({ skipPreflight: true });
  40. });
  41. it("Invalid mints", async () => {
  42. values = createValues({
  43. mintBKeypair: values.mintAKeypair,
  44. poolKey: PublicKey.findProgramAddressSync(
  45. [
  46. values.id.toBuffer(),
  47. values.mintAKeypair.publicKey.toBuffer(),
  48. values.mintBKeypair.publicKey.toBuffer(),
  49. ],
  50. program.programId
  51. )[0],
  52. poolAuthority: PublicKey.findProgramAddressSync(
  53. [
  54. values.id.toBuffer(),
  55. values.mintAKeypair.publicKey.toBuffer(),
  56. values.mintBKeypair.publicKey.toBuffer(),
  57. Buffer.from("authority"),
  58. ],
  59. program.programId
  60. )[0],
  61. });
  62. await expectRevert(
  63. program.methods
  64. .createPool()
  65. .accounts({
  66. amm: values.ammKey,
  67. pool: values.poolKey,
  68. poolAuthority: values.poolAuthority,
  69. mintLiquidity: values.mintLiquidity,
  70. mintA: values.mintAKeypair.publicKey,
  71. mintB: values.mintBKeypair.publicKey,
  72. poolAccountA: values.poolAccountA,
  73. poolAccountB: values.poolAccountB,
  74. })
  75. .rpc()
  76. );
  77. });
  78. });