summaryrefslogtreecommitdiff
path: root/app/src/androidTest/java/se/leap/bitmaskclient/test/testGatewaysManager.java
blob: c4303251e05615267c115457622383927f10dcf9 (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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/**
 * Copyright (c) 2013, 2014, 2015 LEAP Encryption Access Project and contributers
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
package se.leap.bitmaskclient.test;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.test.InstrumentationTestCase;
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;

import junit.framework.Test;

import org.json.JSONObject;

import se.leap.bitmaskclient.Dashboard;
import se.leap.bitmaskclient.eip.Gateway;
import se.leap.bitmaskclient.eip.GatewaysManager;

/**
 * @author parmegv
 */
public class testGatewaysManager extends InstrumentationTestCase {

    GatewaysManager gateways_manager;
    Gateway gateway;
    JSONObject eip_definition;

    FromAssets assets;

    Context context;
    SharedPreferences preferences;

    @Override
    protected void setUp() throws Exception {
        context = getInstrumentation().getContext();
        assets = new FromAssets(context);
        mockGatewaysManager();
        mockRealGateway();
        super.setUp();
    }

    @MediumTest
    public void testFromEipServiceJson() {
        gateways_manager.fromEipServiceJson(eip_definition);
        assertEquals(2, gateways_manager.size());
        gateways_manager.addFromString(gateway.toString());
        assertEquals(2, gateways_manager.size());
    }

    @SmallTest
    public void testAddFromString() {
        gateways_manager.addFromString("");
        gateways_manager.addFromString(gateway.toString());
    }

    @MediumTest
    public void testRemoveDuplicate() {
        gateways_manager.addFromString(gateway.toString());
        assertEquals(1, gateways_manager.size());

        mockArtificialGateway();
        gateways_manager.addFromString(gateway.toString());
        assertEquals(1, gateways_manager.size());
    }

    @MediumTest
    public void testToString() {
        assertEquals("[]", gateways_manager.toString());

        gateways_manager.addFromString(gateway.toString());
        assertEquals("["+gateway.toString()+"]", gateways_manager.toString());
    }

    @SmallTest
    public void testIsEmpty() {
        assertTrue(gateways_manager.isEmpty());
        gateways_manager.addFromString("");
        assertTrue(gateways_manager.isEmpty());
        gateways_manager.addFromString(gateway.toString());
        assertFalse(gateways_manager.isEmpty());
    }
    
    private void mockGatewaysManager() {
        context = getInstrumentation().getContext();
        preferences = context.getSharedPreferences(Dashboard.SHARED_PREFERENCES, Activity.MODE_PRIVATE);
        gateways_manager = new GatewaysManager(context, preferences);
    }

    private void mockRealGateway() {
        try {
            eip_definition = new JSONObject(assets.toString(TestConstants.EIP_DEFINITION_FILE));
            JSONObject secrets = new JSONObject(assets.toString(TestConstants.SECRETS_FILE));
            JSONObject gateway = new JSONObject(assets.toString(TestConstants.GATEWAY_FILE));
            this.gateway = new Gateway(eip_definition, secrets, gateway);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void mockArtificialGateway() {
        try {
            eip_definition = new JSONObject(assets.toString(TestConstants.EIP_DEFINITION_FILE));
            JSONObject secrets = new JSONObject(assets.toString(TestConstants.SECRETS_FILE).replace("6u6", "7u7"));
            JSONObject gateway = new JSONObject(assets.toString(TestConstants.GATEWAY_FILE));
            this.gateway = new Gateway(eip_definition, secrets, gateway);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}