mirror of
https://github.com/nbd-wtf/go-nostr.git
synced 2025-03-17 13:22:56 +01:00
supposedly it is faster, and anyway it's better to use it since we're already using it for wasm/js. (previously named nhooyr/websocket).
78 lines
1.6 KiB
Go
78 lines
1.6 KiB
Go
//go:build js
|
|
|
|
package nostr
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
var testRelayURL = func() string {
|
|
url := os.Getenv("TEST_RELAY_URL")
|
|
if url != "" {
|
|
return url
|
|
}
|
|
return "wss://nos.lol"
|
|
}()
|
|
|
|
func TestConnectContext(t *testing.T) {
|
|
// relay client
|
|
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
|
|
defer cancel()
|
|
r, err := RelayConnect(ctx, testRelayURL)
|
|
assert.NoError(t, err)
|
|
|
|
defer r.Close()
|
|
}
|
|
|
|
func TestConnectContextCanceled(t *testing.T) {
|
|
// relay client
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
cancel() // make ctx expired
|
|
_, err := RelayConnect(ctx, testRelayURL)
|
|
assert.ErrorIs(t, err, context.Canceled)
|
|
}
|
|
|
|
func TestPublish(t *testing.T) {
|
|
// test note to be sent over websocket
|
|
priv, pub := makeKeyPair(t)
|
|
textNote := Event{
|
|
Kind: KindTextNote,
|
|
Content: "hello",
|
|
CreatedAt: Timestamp(1672068534), // random fixed timestamp
|
|
Tags: Tags{[]string{"foo", "bar"}},
|
|
PubKey: pub,
|
|
}
|
|
err := textNote.Sign(priv)
|
|
assert.NoError(t, err)
|
|
|
|
// connect a client and send the text note
|
|
rl := mustRelayConnect(t, testRelayURL)
|
|
err = rl.Publish(context.Background(), textNote)
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func makeKeyPair(t *testing.T) (priv, pub string) {
|
|
t.Helper()
|
|
|
|
privkey := GeneratePrivateKey()
|
|
pubkey, err := GetPublicKey(privkey)
|
|
assert.NoError(t, err)
|
|
|
|
return privkey, pubkey
|
|
}
|
|
|
|
func mustRelayConnect(t *testing.T, url string) *Relay {
|
|
t.Helper()
|
|
|
|
rl, err := RelayConnect(context.Background(), url)
|
|
require.NoError(t, err)
|
|
|
|
return rl
|
|
}
|