34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import { assertEquals } from '@std/assert'
|
|
import { extractReadRelays, type RelayListLoader, loadReadRelays } from '../src/core/relays.ts'
|
|
import type { SignedEvent } from '../src/core/types.ts'
|
|
|
|
const KIND_10002: SignedEvent = {
|
|
id: 'r', pubkey: 'P', created_at: 1, kind: 10002, sig: 's', content: '',
|
|
tags: [
|
|
['r', 'wss://relay.damus.io'],
|
|
['r', 'wss://nos.lol', 'read'],
|
|
['r', 'wss://relay.write-only.example', 'write'],
|
|
],
|
|
}
|
|
|
|
Deno.test('extractReadRelays: ohne marker = read+write, "read" = read, "write" = nicht', () => {
|
|
assertEquals(extractReadRelays(KIND_10002), [
|
|
'wss://relay.damus.io',
|
|
'wss://nos.lol',
|
|
])
|
|
})
|
|
|
|
Deno.test('loadReadRelays: nutzt fallback wenn kein kind:10002', async () => {
|
|
const loader: RelayListLoader = async () => undefined
|
|
const relays = await loadReadRelays('wss://bootstrap', 'P', loader, [
|
|
'wss://fallback1', 'wss://fallback2',
|
|
])
|
|
assertEquals(relays, ['wss://fallback1', 'wss://fallback2'])
|
|
})
|
|
|
|
Deno.test('loadReadRelays: nutzt kind:10002 wenn vorhanden', async () => {
|
|
const loader: RelayListLoader = async () => KIND_10002
|
|
const relays = await loadReadRelays('wss://bootstrap', 'P', loader, ['wss://fallback'])
|
|
assertEquals(relays, ['wss://relay.damus.io', 'wss://nos.lol'])
|
|
})
|