create-pool.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import * as anchor from "@coral-xyz/anchor";
  2. import { Program } from "@coral-xyz/anchor";
  3. import { PublicKey } from "@solana/web3.js";
  4. import { SwapExample } from "../target/types/swap_example";
  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.SwapExample as Program<SwapExample>;
  11. let values: TestValues;
  12. beforeEach(async () => {
  13. values = createValues();
  14. await program.methods
  15. .createAmm(values.id, values.fee)
  16. .accounts({ amm: values.ammKey, admin: values.admin.publicKey })
  17. .rpc();
  18. console.log(values.ammKey);
  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. });