80 lines
2.5 KiB
JavaScript
80 lines
2.5 KiB
JavaScript
// @flow
|
|
import chai from 'chai';
|
|
import chaiAsPromised from 'chai-as-promised';
|
|
import {Keypair, PublicKey} from '@solana/web3.js';
|
|
|
|
import {ASSOCIATED_TOKEN_PROGRAM_ID, Token, TOKEN_PROGRAM_ID} from '../client/token';
|
|
|
|
chai.use(chaiAsPromised);
|
|
const expect = chai.expect;
|
|
|
|
describe('Token', () => {
|
|
it('createTransfer', () => {
|
|
const ix = Token.createTransferCheckedInstruction(
|
|
TOKEN_PROGRAM_ID,
|
|
Keypair.generate().publicKey,
|
|
Keypair.generate().publicKey,
|
|
Keypair.generate().publicKey,
|
|
Keypair.generate().publicKey,
|
|
[],
|
|
1,
|
|
9,
|
|
);
|
|
expect(ix.programId).to.eql(TOKEN_PROGRAM_ID);
|
|
expect(ix.keys).to.have.length(4);
|
|
});
|
|
|
|
it('createInitMint', () => {
|
|
const ix = Token.createInitMintInstruction(
|
|
TOKEN_PROGRAM_ID,
|
|
Keypair.generate().publicKey,
|
|
9,
|
|
Keypair.generate().publicKey,
|
|
null,
|
|
);
|
|
expect(ix.programId).to.eql(TOKEN_PROGRAM_ID);
|
|
expect(ix.keys).to.have.length(2);
|
|
});
|
|
|
|
it('getAssociatedTokenAddress', async () => {
|
|
const associatedPublicKey = await Token.getAssociatedTokenAddress(
|
|
ASSOCIATED_TOKEN_PROGRAM_ID,
|
|
TOKEN_PROGRAM_ID,
|
|
new PublicKey('7o36UsWR1JQLpZ9PE2gn9L4SQ69CNNiWAXd4Jt7rqz9Z'),
|
|
new PublicKey('B8UwBUUnKwCyKuGMbFKWaG7exYdDk2ozZrPg72NyVbfj'),
|
|
);
|
|
expect(associatedPublicKey.toString()).to.eql(
|
|
new PublicKey('DShWnroshVbeUp28oopA3Pu7oFPDBtC1DBmPECXXAQ9n').toString(),
|
|
);
|
|
await expect(Token.getAssociatedTokenAddress(
|
|
ASSOCIATED_TOKEN_PROGRAM_ID,
|
|
TOKEN_PROGRAM_ID,
|
|
new PublicKey('7o36UsWR1JQLpZ9PE2gn9L4SQ69CNNiWAXd4Jt7rqz9Z'),
|
|
associatedPublicKey,
|
|
)).to.be.rejectedWith(`Owner cannot sign: ${associatedPublicKey.toString()}`);
|
|
const associatedPublicKey2 = await Token.getAssociatedTokenAddress(
|
|
ASSOCIATED_TOKEN_PROGRAM_ID,
|
|
TOKEN_PROGRAM_ID,
|
|
new PublicKey('7o36UsWR1JQLpZ9PE2gn9L4SQ69CNNiWAXd4Jt7rqz9Z'),
|
|
associatedPublicKey,
|
|
true,
|
|
)
|
|
expect(associatedPublicKey2.toString()).to.eql(
|
|
new PublicKey('F3DmXZFqkfEWFA7MN2vDPs813GeEWPaT6nLk4PSGuWJd').toString(),
|
|
);
|
|
});
|
|
|
|
it('createAssociatedTokenAccount', () => {
|
|
const ix = Token.createAssociatedTokenAccountInstruction(
|
|
ASSOCIATED_TOKEN_PROGRAM_ID,
|
|
TOKEN_PROGRAM_ID,
|
|
Keypair.generate().publicKey,
|
|
Keypair.generate().publicKey,
|
|
Keypair.generate().publicKey,
|
|
Keypair.generate().publicKey,
|
|
);
|
|
expect(ix.programId).to.eql(ASSOCIATED_TOKEN_PROGRAM_ID);
|
|
expect(ix.keys).to.have.length(7);
|
|
});
|
|
});
|