1package android.net;
2
3import static org.junit.Assert.assertEquals;
4import static org.junit.Assert.assertNull;
5import static org.mockito.Mockito.when;
6
7import android.net.wifi.ScanResult;
8import android.net.wifi.WifiInfo;
9import android.net.wifi.WifiSsid;
10import android.support.test.runner.AndroidJUnit4;
11
12import org.junit.Before;
13import org.junit.Test;
14import org.junit.runner.RunWith;
15import org.mockito.Mock;
16import org.mockito.MockitoAnnotations;
17
18@RunWith(AndroidJUnit4.class)
19public class NetworkKeyTest {
20    private static final String VALID_SSID = "\"ssid1\"";
21    private static final String VALID_UNQUOTED_SSID = "ssid1";
22    private static final String VALID_BSSID = "00:00:00:00:00:00";
23    private static final String INVALID_BSSID = "invalid_bssid";
24    @Mock private WifiInfo mWifiInfo;
25
26    @Before
27    public void setUp() throws Exception {
28        MockitoAnnotations.initMocks(this);
29    }
30
31    @Test
32    public void createFromWifi_nullInput() throws Exception {
33        assertNull(NetworkKey.createFromWifiInfo(null));
34    }
35
36    @Test
37    public void createFromWifi_nullSsid() throws Exception {
38        when(mWifiInfo.getBSSID()).thenReturn(VALID_BSSID);
39        assertNull(NetworkKey.createFromWifiInfo(mWifiInfo));
40    }
41
42    @Test
43    public void createFromWifi_emptySsid() throws Exception {
44        when(mWifiInfo.getSSID()).thenReturn("");
45        when(mWifiInfo.getBSSID()).thenReturn(VALID_BSSID);
46        assertNull(NetworkKey.createFromWifiInfo(mWifiInfo));
47    }
48
49    @Test
50    public void createFromWifi_noneSsid() throws Exception {
51        when(mWifiInfo.getSSID()).thenReturn(WifiSsid.NONE);
52        when(mWifiInfo.getBSSID()).thenReturn(VALID_BSSID);
53        assertNull(NetworkKey.createFromWifiInfo(mWifiInfo));
54    }
55
56    @Test
57    public void createFromWifi_nullBssid() throws Exception {
58        when(mWifiInfo.getSSID()).thenReturn(VALID_SSID);
59        assertNull(NetworkKey.createFromWifiInfo(mWifiInfo));
60    }
61
62    @Test
63    public void createFromWifi_emptyBssid() throws Exception {
64        when(mWifiInfo.getSSID()).thenReturn(VALID_SSID);
65        when(mWifiInfo.getBSSID()).thenReturn("");
66        assertNull(NetworkKey.createFromWifiInfo(mWifiInfo));
67    }
68
69    @Test
70    public void createFromWifi_invalidBssid() throws Exception {
71        when(mWifiInfo.getSSID()).thenReturn(VALID_SSID);
72        when(mWifiInfo.getBSSID()).thenReturn(INVALID_BSSID);
73        assertNull(NetworkKey.createFromWifiInfo(mWifiInfo));
74    }
75
76    @Test
77    public void createFromWifi_validWifiInfo() throws Exception {
78        when(mWifiInfo.getSSID()).thenReturn(VALID_SSID);
79        when(mWifiInfo.getBSSID()).thenReturn(VALID_BSSID);
80
81        NetworkKey expected = new NetworkKey(new WifiKey(VALID_SSID, VALID_BSSID));
82        final NetworkKey actual = NetworkKey.createFromWifiInfo(mWifiInfo);
83        assertEquals(expected, actual);
84    }
85
86    @Test
87    public void createFromScanResult_nullInput() {
88        assertNull(NetworkKey.createFromScanResult(null));
89    }
90
91    @Test
92    public void createFromScanResult_nullWifiSsid() {
93        ScanResult scanResult = new ScanResult();
94        scanResult.BSSID = VALID_BSSID;
95
96        assertNull(NetworkKey.createFromScanResult(scanResult));
97    }
98
99    @Test
100    public void createFromScanResult_emptyWifiSsid() {
101        ScanResult scanResult = new ScanResult();
102        scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded("");
103        scanResult.BSSID = VALID_BSSID;
104
105        assertNull(NetworkKey.createFromScanResult(scanResult));
106    }
107
108    @Test
109    public void createFromScanResult_noneWifiSsid() {
110        ScanResult scanResult = new ScanResult();
111        scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(WifiSsid.NONE);
112        scanResult.BSSID = VALID_BSSID;
113
114        assertNull(NetworkKey.createFromScanResult(scanResult));
115    }
116
117    @Test
118    public void createFromScanResult_nullBssid() {
119        ScanResult scanResult = new ScanResult();
120        scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(VALID_UNQUOTED_SSID);
121
122        assertNull(NetworkKey.createFromScanResult(scanResult));
123    }
124
125    @Test
126    public void createFromScanResult_emptyBssid() {
127        ScanResult scanResult = new ScanResult();
128        scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(VALID_UNQUOTED_SSID);
129        scanResult.BSSID = "";
130
131        assertNull(NetworkKey.createFromScanResult(scanResult));
132    }
133
134    @Test
135    public void createFromScanResult_invalidBssid() {
136        ScanResult scanResult = new ScanResult();
137        scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(VALID_UNQUOTED_SSID);
138        scanResult.BSSID = INVALID_BSSID;
139
140        assertNull(NetworkKey.createFromScanResult(scanResult));
141    }
142
143    @Test
144    public void createFromScanResult_validWifiSsid() {
145        ScanResult scanResult = new ScanResult();
146        scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(VALID_UNQUOTED_SSID);
147        scanResult.BSSID = VALID_BSSID;
148
149        NetworkKey expected = new NetworkKey(new WifiKey(VALID_SSID, VALID_BSSID));
150        NetworkKey actual = NetworkKey.createFromScanResult(scanResult);
151        assertEquals(expected, actual);
152    }
153}
154