summaryrefslogtreecommitdiff
path: root/app/src/test/java/se/leap/bitmaskclient/base/models/TransportTest.java
blob: 37dfc16130dbe6f357fbb850b182684c8a829a2d (plain)
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package se.leap.bitmaskclient.base.models;

import static se.leap.bitmaskclient.base.models.Constants.CAPABILITIES;
import static se.leap.bitmaskclient.base.models.Constants.TRANSPORT;

import junit.framework.TestCase;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;

import de.blinkt.openvpn.core.connection.Connection;
import se.leap.bitmaskclient.testutils.TestSetupHelper;

public class TransportTest extends TestCase {

    private JSONObject gateway;

    public void test_obfs4_fromJson() throws IOException, JSONException {
        gateway = new JSONObject(TestSetupHelper.getInputAsString(getClass().getClassLoader().getResourceAsStream("ptdemo_obfs4hop_tcp_gateways.json"))).getJSONArray("gateways").getJSONObject(2);
        JSONObject obfs4Transport = gateway.getJSONObject(CAPABILITIES).getJSONArray(TRANSPORT).getJSONObject(1);
        Transport transport = Transport.fromJson(obfs4Transport);
        assertEquals("obfs4", transport.getType());
        assertEquals("0", transport.getOptions().getIatMode());
        assertEquals("kcp", transport.getProtocols()[0]);
        assertEquals(1, transport.getProtocols().length);
        assertEquals("23050", transport.getPorts()[0]);
        assertEquals(1, transport.getPorts().length);
        assertEquals("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1", transport.getOptions().getCert());
        assertNull(transport.getOptions().getEndpoints());
        assertEquals(0, transport.getOptions().getPortCount());
        assertEquals(0, transport.getOptions().getPortSeed());
        assertFalse(transport.getOptions().isExperimental());
    }

    public void test_obfs4hop_fromJson() throws IOException, JSONException {
        gateway = new JSONObject(TestSetupHelper.getInputAsString(getClass().getClassLoader().getResourceAsStream("ptdemo_obfs4hop_tcp_gateways.json"))).getJSONArray("gateways").getJSONObject(2);
        JSONObject obfs4Transport = gateway.getJSONObject(CAPABILITIES).getJSONArray(TRANSPORT).getJSONObject(2);
        Transport transport = Transport.fromJson(obfs4Transport);
        assertEquals("obfs4-hop", transport.getType());
        assertEquals(Connection.TransportType.OBFS4_HOP, transport.getTransportType());
        assertEquals("tcp", transport.getProtocols()[0]);
        assertEquals(1, transport.getProtocols().length);
        assertNull(transport.getPorts());
        assertNull(transport.getOptions().getCert());
        assertNotNull(transport.getOptions().getEndpoints());
        assertEquals(2, transport.getOptions().getEndpoints().length);
        assertEquals("CERT1", transport.getOptions().getEndpoints()[0].getCert());
        assertEquals("CERT2", transport.getOptions().getEndpoints()[1].getCert());
        assertEquals("1.1.1.1", transport.getOptions().getEndpoints()[0].getIp());
        assertEquals("2.2.2.2", transport.getOptions().getEndpoints()[1].getIp());
        assertTrue(transport.getOptions().isExperimental());
    }

    public void test_openvpn_fromJson() throws IOException, JSONException {
        gateway = new JSONObject(TestSetupHelper.getInputAsString(getClass().getClassLoader().getResourceAsStream("ptdemo_obfs4hop_tcp_gateways.json"))).getJSONArray("gateways").getJSONObject(2);
        JSONObject obfs4Transport = gateway.getJSONObject(CAPABILITIES).getJSONArray(TRANSPORT).getJSONObject(0);
        Transport transport = Transport.fromJson(obfs4Transport);
        assertEquals("openvpn", transport.getType());
        assertEquals(2, transport.getProtocols().length);
        assertEquals("tcp", transport.getProtocols()[0]);
        assertEquals("udp", transport.getProtocols()[1]);
        assertEquals(1, transport.getPorts().length);
        assertEquals("1195", transport.getPorts()[0]);
        assertNull(transport.getOptions());
    }
}