PairingInvitationTest.kt

1.2 KB · raw

1package com.peachpasswords.sync23import org.junit.Assert.assertEquals4import org.junit.Assert.assertNull5import org.junit.Test67class PairingInvitationTest {8    private val token = "AAECAwQFBgcICQoLDA0ODw"9    private val relay = "wss://relay.peachpasswords.com"10    private val kat =11        "peach-pair-v1:eyJyZWxheSI6IndzczovL3JlbGF5LnBlYWNocGFzc3dvcmRzLmNvbSIsInRva2VuIjoiQUFFQ0F3UUZCZ2NJQ1FvTERBME9EdyJ9"1213    @Test fun `matches browser invitation KAT`() {14        assertEquals(kat, createPairingInvitation("$relay/", token))15        assertEquals(PairingInvitation(relay, token), parsePairingInvitation(kat))16        assertEquals("$relay/r/$token", parsePairingInvitation(kat)!!.roomUrl())17    }1819    @Test fun `rejects malformed insecure and short-token invitations`() {20        assertNull(parsePairingInvitation("not-an-invitation"))21        assertNull(parsePairingInvitation("peach-pair-v1:%%%"))22        assertNull(parsePairingInvitation(raw("""{"relay":"ws://relay.test","token":"$token"}""")))23        assertNull(parsePairingInvitation(raw("""{"relay":"$relay","token":"short"}""")))24    }2526    private fun raw(json: String): String =27        "peach-pair-v1:" + java.util.Base64.getUrlEncoder().withoutPadding()28            .encodeToString(json.toByteArray())29}