chore: support pump create
This commit is contained in:
@@ -777,3 +777,122 @@ func TestParseRaydiumLaunchLabCreate2(t *testing.T) {
|
||||
t.Fatalf("expected IsToken2022 true, got false")
|
||||
}
|
||||
}
|
||||
|
||||
func manuallyLoadAddressTable(t *testing.T, client *rpc.Client, tablePubkey solana.PublicKey) *AddressTables {
|
||||
loader := NewAddressTables(client, false)
|
||||
table, err := loader.loadAddressTable(tablePubkey)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to load address table: %s", err)
|
||||
}
|
||||
|
||||
loader.tables.Add(tablePubkey, &TableInfo{
|
||||
addresses: table,
|
||||
})
|
||||
|
||||
return loader
|
||||
}
|
||||
|
||||
func TestParsePumpCreate(t *testing.T) {
|
||||
rpcUrl := os.Getenv("SOL_RPC_URL")
|
||||
if rpcUrl == "" {
|
||||
t.Fatalf("SOL_RPC_URL is not set")
|
||||
}
|
||||
|
||||
client := rpc.New(rpcUrl)
|
||||
loader := manuallyLoadAddressTable(t, client, solana.MustPublicKeyFromBase58("AXVvmhWaaPtV52jqYuTNqp1xRrkbxhfJfeHQKxq5cbvZ"))
|
||||
ch := make(chan TxSignal)
|
||||
closed := make(chan struct{})
|
||||
go func() {
|
||||
ParseTransactionForSubscribe(
|
||||
context.Background(),
|
||||
getTransaction(t, client, "3vUAHpBUoxeoZheo9m3XmufNUWmJWRAN4xZjSqDos71GL6tCKSTmJV6YeMS5XdVAbRAfqQi1rPusjbmEhoam4x9Y"),
|
||||
loader,
|
||||
ch,
|
||||
closed,
|
||||
)
|
||||
}()
|
||||
go func() {
|
||||
<-closed
|
||||
close(ch)
|
||||
}()
|
||||
signals := make([]TxSignal, 0)
|
||||
for signal := range ch {
|
||||
signals = append(signals, signal)
|
||||
}
|
||||
|
||||
if len(signals) == 0 {
|
||||
t.Fatalf("expected at least 1 signal, got %d", len(signals))
|
||||
}
|
||||
|
||||
signal := signals[0]
|
||||
if signal.Label != "pump" {
|
||||
t.Fatalf("expected pump signal, got %s", signal.Label)
|
||||
}
|
||||
if signal.Event != "create" {
|
||||
t.Fatalf("expected create event, got %s", signal.Event)
|
||||
}
|
||||
if signal.Maker != "8oVJLE69qH1i5jotFABcCoaPS38DAyZ7djRg6uuD3Cb7" {
|
||||
t.Fatalf("expected maker 8oVJLE69qH1i5jotFABcCoaPS38DAyZ7djRg6uuD3Cb7, got %s", signal.Maker)
|
||||
}
|
||||
if signal.Token0Address != "AtaWsdyfcANLsHNdpYJyFdNvwSQnUzvhRN2MCCP9pump" {
|
||||
t.Fatalf("expected token0 address AtaWsdyfcANLsHNdpYJyFdNvwSQnUzvhRN2MCCP9pump, got %s", signal.Token0Address)
|
||||
}
|
||||
if !signal.IsToken2022 {
|
||||
t.Fatalf("expected IsToken2022 true, got false")
|
||||
}
|
||||
if signal.IsCashbackEnabled {
|
||||
t.Fatalf("expected IsCashbackEnabled true, got false")
|
||||
}
|
||||
}
|
||||
|
||||
func TestParsePumpCreate2(t *testing.T) {
|
||||
rpcUrl := os.Getenv("SOL_RPC_URL")
|
||||
if rpcUrl == "" {
|
||||
t.Fatalf("SOL_RPC_URL is not set")
|
||||
}
|
||||
|
||||
client := rpc.New(rpcUrl)
|
||||
ch := make(chan TxSignal)
|
||||
closed := make(chan struct{})
|
||||
go func() {
|
||||
ParseTransactionForSubscribe(
|
||||
context.Background(),
|
||||
getTransaction(t, client, "3EKKjtNFzhtQaA9GyPt5UJHLr5mWT2XodaxWoenUrcaPpN8BKm84ATVapdUJcb9sJVFyS4iKD9spGBKfqkSFutea"),
|
||||
nil,
|
||||
ch,
|
||||
closed,
|
||||
)
|
||||
}()
|
||||
go func() {
|
||||
<-closed
|
||||
close(ch)
|
||||
}()
|
||||
signals := make([]TxSignal, 0)
|
||||
for signal := range ch {
|
||||
signals = append(signals, signal)
|
||||
}
|
||||
|
||||
if len(signals) == 0 {
|
||||
t.Fatalf("expected at least 1 signal, got %d", len(signals))
|
||||
}
|
||||
|
||||
signal := signals[0]
|
||||
if signal.Label != "pump" {
|
||||
t.Fatalf("expected pump signal, got %s", signal.Label)
|
||||
}
|
||||
if signal.Event != "create" {
|
||||
t.Fatalf("expected create event, got %s", signal.Event)
|
||||
}
|
||||
if signal.Maker != "5mGqXMqUbJzxQ9aqbBttB4JUfAMqceSTmrtpt6RuPXdC" {
|
||||
t.Fatalf("expected maker 5mGqXMqUbJzxQ9aqbBttB4JUfAMqceSTmrtpt6RuPXdC, got %s", signal.Maker)
|
||||
}
|
||||
if signal.Token0Address != "J9Hqi5VddcTNJ2F5EyxSZxC2JpJeymfJXjLhsCVPZpna" {
|
||||
t.Fatalf("expected token0 address J9Hqi5VddcTNJ2F5EyxSZxC2JpJeymfJXjLhsCVPZpna, got %s", signal.Token0Address)
|
||||
}
|
||||
if !signal.IsToken2022 {
|
||||
t.Fatalf("expected IsToken2022 true, got false")
|
||||
}
|
||||
if signal.IsCashbackEnabled {
|
||||
t.Fatalf("expected IsCashbackEnabled true, got false")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user