aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-android/app/src/test/kotlin/org/meshbay/client/ChannelsTest.kt
blob: adc6366dc68f3db41eec11afc98a139393d352ce (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package org.meshbay.client

import org.json.JSONArray
import org.junit.Assert.assertEquals
import org.junit.Assert.assertThrows
import org.junit.Test
import org.meshbay.client.bridge.Channels
import org.meshbay.client.bridge.Refused
import org.meshbay.client.hub.HubClient
import java.net.InetAddress
import java.net.UnknownHostException

class ChannelsTest {
    private val channels = Channels(HubClient(FakePrefs()), onHubChanged = {}, hasCatalogue = { it == "fr" || it == "pt-BR" })

    @Test fun `a channel that is not enumerated is refused`() {
        for (ch in listOf("node:op", "root:choose", "window:minimize-to-tray", "keys:sign", "", "hub:fetch2")) {
            assertThrows(ch, Refused::class.java) { channels.call(ch, JSONArray()) }
        }
    }

    @Test fun `the locale is a code with a catalogue, never text`() {
        assertEquals("fr", channels.call("ui:locale", JSONArray().put("fr")))
        assertEquals("fr", channels.call("ui:locale", JSONArray().put("de")))      // no catalogue
        assertEquals("fr", channels.call("ui:locale", JSONArray().put("../en")))   // not a code
        assertEquals("pt-BR", channels.call("ui:locale", JSONArray().put("pt-BR")))
    }

    @Test fun `stun hostnames are resolved, literals kept, failures dropped`() {
        val lookup: (String) -> Array<InetAddress> = { host ->
            if (host == "stun.example") arrayOf(InetAddress.getByAddress(host, byteArrayOf(192.toByte(), 0, 2, 7)))
            else throw UnknownHostException(host)
        }
        val out = Channels.resolveStun(JSONArray(listOf("stun:stun.example:3478", "stun:198.51.100.1:3478",
            "stun:[2001:db8::1]:3478", "stun:gone.example:3478", "turn:x")), lookup)
        assertEquals(listOf("stun:192.0.2.7:3478", "stun:198.51.100.1:3478", "stun:[2001:db8::1]:3478", "turn:x"),
                     (0 until out.length()).map { out.getString(it) })
    }
}