186 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import { expect } from "chai";
 | 
						|
import { init, Pubkey } from "crate";
 | 
						|
init();
 | 
						|
 | 
						|
// TODO: wasm_bindgen doesn't currently support exporting constants
 | 
						|
const MAX_SEED_LEN = 32;
 | 
						|
 | 
						|
describe("Pubkey", function () {
 | 
						|
  it("invalid", () => {
 | 
						|
    expect(() => {
 | 
						|
      new Pubkey([
 | 
						|
        3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
						|
        0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
						|
      ]);
 | 
						|
    }).to.throw();
 | 
						|
 | 
						|
    expect(() => {
 | 
						|
      new Pubkey([
 | 
						|
        'invalid', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
						|
        0, 0, 0, 0, 0, 0, 0,
 | 
						|
      ]);
 | 
						|
    }).to.throw();
 | 
						|
 | 
						|
    expect(() => {
 | 
						|
      new Pubkey(
 | 
						|
        "0x300000000000000000000000000000000000000000000000000000000000000000000"
 | 
						|
      );
 | 
						|
    }).to.throw();
 | 
						|
 | 
						|
    expect(() => {
 | 
						|
      new Pubkey(
 | 
						|
        "0x300000000000000000000000000000000000000000000000000000000000000"
 | 
						|
      );
 | 
						|
    }).to.throw();
 | 
						|
 | 
						|
    expect(() => {
 | 
						|
      new Pubkey(
 | 
						|
        "135693854574979916511997248057056142015550763280047535983739356259273198796800000"
 | 
						|
      );
 | 
						|
    }).to.throw();
 | 
						|
 | 
						|
    expect(() => {
 | 
						|
      new Pubkey("12345");
 | 
						|
    }).to.throw();
 | 
						|
  });
 | 
						|
 | 
						|
  it("toString", () => {
 | 
						|
    const key = new Pubkey("CiDwVBFgWV9E5MvXWoLgnEgn2hK7rJikbvfWavzAQz3");
 | 
						|
    expect(key.toString()).to.eq("CiDwVBFgWV9E5MvXWoLgnEgn2hK7rJikbvfWavzAQz3");
 | 
						|
 | 
						|
    const key2 = new Pubkey("1111111111111111111111111111BukQL");
 | 
						|
    expect(key2.toString()).to.eq("1111111111111111111111111111BukQL");
 | 
						|
 | 
						|
    const key3 = new Pubkey("11111111111111111111111111111111");
 | 
						|
    expect(key3.toString()).to.eq("11111111111111111111111111111111");
 | 
						|
 | 
						|
    const key4 = new Pubkey([
 | 
						|
      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
						|
      0, 0, 0, 0, 0, 0, 0,
 | 
						|
    ]);
 | 
						|
    expect(key4.toString()).to.eq("11111111111111111111111111111111");
 | 
						|
  });
 | 
						|
 | 
						|
  it("toBytes", () => {
 | 
						|
    const key = new Pubkey("CiDwVBFgWV9E5MvXWoLgnEgn2hK7rJikbvfWavzAQz3");
 | 
						|
    expect(key.toBytes()).to.deep.equal(
 | 
						|
      new Uint8Array([
 | 
						|
        3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
						|
        0, 0, 0, 0, 0, 0, 0, 0,
 | 
						|
      ])
 | 
						|
    );
 | 
						|
 | 
						|
    const key2 = new Pubkey();
 | 
						|
    expect(key2.toBytes()).to.deep.equal(
 | 
						|
      new Uint8Array([
 | 
						|
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
						|
        0, 0, 0, 0, 0, 0, 0, 0,
 | 
						|
      ])
 | 
						|
    );
 | 
						|
  });
 | 
						|
 | 
						|
  it("isOnCurve", () => {
 | 
						|
    let onCurve = new Pubkey("J4NYrSRccTUGXP7wmFwiByakqWKZb5RwpiAoskpgAQRb");
 | 
						|
    expect(onCurve.isOnCurve()).to.be.true;
 | 
						|
 | 
						|
    let offCurve = new Pubkey("12rqwuEgBYiGhBrDJStCiqEtzQpTTiZbh7teNVLuYcFA");
 | 
						|
    expect(offCurve.isOnCurve()).to.be.false;
 | 
						|
  });
 | 
						|
 | 
						|
  it("equals", () => {
 | 
						|
    const arrayKey = new Pubkey([
 | 
						|
      3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
						|
      0, 0, 0, 0, 0, 0, 0,
 | 
						|
    ]);
 | 
						|
    const base58Key = new Pubkey("CiDwVBFgWV9E5MvXWoLgnEgn2hK7rJikbvfWavzAQz3");
 | 
						|
 | 
						|
    expect(arrayKey.equals(base58Key)).to.be.true;
 | 
						|
  });
 | 
						|
 | 
						|
  it("createWithSeed", async () => {
 | 
						|
    const defaultPublicKey = new Pubkey("11111111111111111111111111111111");
 | 
						|
    const derivedKey = Pubkey.createWithSeed(
 | 
						|
      defaultPublicKey,
 | 
						|
      "limber chicken: 4/45",
 | 
						|
      defaultPublicKey
 | 
						|
    );
 | 
						|
 | 
						|
    expect(
 | 
						|
      derivedKey.equals(
 | 
						|
        new Pubkey("9h1HyLCW5dZnBVap8C5egQ9Z6pHyjsh5MNy83iPqqRuq")
 | 
						|
      )
 | 
						|
    ).to.be.true;
 | 
						|
  });
 | 
						|
 | 
						|
  it("createProgramAddress", async () => {
 | 
						|
    const programId = new Pubkey("BPFLoader1111111111111111111111111111111111");
 | 
						|
    const publicKey = new Pubkey("SeedPubey1111111111111111111111111111111111");
 | 
						|
 | 
						|
    let programAddress = Pubkey.createProgramAddress(
 | 
						|
      [Buffer.from("", "utf8"), Buffer.from([1])],
 | 
						|
      programId
 | 
						|
    );
 | 
						|
    expect(
 | 
						|
      programAddress.equals(
 | 
						|
        new Pubkey("3gF2KMe9KiC6FNVBmfg9i267aMPvK37FewCip4eGBFcT")
 | 
						|
      )
 | 
						|
    ).to.be.true;
 | 
						|
 | 
						|
    programAddress = Pubkey.createProgramAddress(
 | 
						|
      [Buffer.from("☉", "utf8")],
 | 
						|
      programId
 | 
						|
    );
 | 
						|
    expect(
 | 
						|
      programAddress.equals(
 | 
						|
        new Pubkey("7ytmC1nT1xY4RfxCV2ZgyA7UakC93do5ZdyhdF3EtPj7")
 | 
						|
      )
 | 
						|
    ).to.be.true;
 | 
						|
 | 
						|
    programAddress = Pubkey.createProgramAddress(
 | 
						|
      [Buffer.from("Talking", "utf8"), Buffer.from("Squirrels", "utf8")],
 | 
						|
      programId
 | 
						|
    );
 | 
						|
    expect(
 | 
						|
      programAddress.equals(
 | 
						|
        new Pubkey("HwRVBufQ4haG5XSgpspwKtNd3PC9GM9m1196uJW36vds")
 | 
						|
      )
 | 
						|
    ).to.be.true;
 | 
						|
 | 
						|
    programAddress = Pubkey.createProgramAddress(
 | 
						|
      [publicKey.toBytes()],
 | 
						|
      programId
 | 
						|
    );
 | 
						|
    expect(
 | 
						|
      programAddress.equals(
 | 
						|
        new Pubkey("GUs5qLUfsEHkcMB9T38vjr18ypEhRuNWiePW2LoK4E3K")
 | 
						|
      )
 | 
						|
    ).to.be.true;
 | 
						|
 | 
						|
    const programAddress2 = Pubkey.createProgramAddress(
 | 
						|
      [Buffer.from("Talking", "utf8")],
 | 
						|
      programId
 | 
						|
    );
 | 
						|
    expect(programAddress.equals(programAddress2)).to.eq(false);
 | 
						|
 | 
						|
    expect(() => {
 | 
						|
      Pubkey.createProgramAddress([Buffer.alloc(MAX_SEED_LEN + 1)], programId);
 | 
						|
    }).to.throw();
 | 
						|
  });
 | 
						|
 | 
						|
  it("findProgramAddress", async () => {
 | 
						|
    const programId = new Pubkey("BPFLoader1111111111111111111111111111111111");
 | 
						|
    let [programAddress, nonce] = Pubkey.findProgramAddress(
 | 
						|
      [Buffer.from("", "utf8")],
 | 
						|
      programId
 | 
						|
    );
 | 
						|
    expect(
 | 
						|
      programAddress.equals(
 | 
						|
        Pubkey.createProgramAddress(
 | 
						|
          [Buffer.from("", "utf8"), Buffer.from([nonce])],
 | 
						|
          programId
 | 
						|
        )
 | 
						|
      )
 | 
						|
    ).to.be.true;
 | 
						|
  });
 | 
						|
});
 |