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}