Skip to content

Commit 431a687

Browse files
committed
Added basic unit tests around HomekitRoot
1 parent ade37fa commit 431a687

File tree

3 files changed

+124
-1
lines changed

3 files changed

+124
-1
lines changed

pom.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,20 @@
6868
<artifactId>commons-io</artifactId>
6969
<version>2.4</version>
7070
</dependency>
71+
72+
<dependency>
73+
<groupId>junit</groupId>
74+
<artifactId>junit</artifactId>
75+
<version>4.12</version>
76+
<scope>test</scope>
77+
</dependency>
78+
79+
<dependency>
80+
<groupId>org.mockito</groupId>
81+
<artifactId>mockito-all</artifactId>
82+
<version>1.10.19</version>
83+
<scope>test</scope>
84+
</dependency>
7185

7286
</dependencies>
7387

src/main/java/com/beowulfe/hap/HomekitRoot.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,12 @@ public class HomekitRoot {
3535

3636
HomekitRoot(String label, HomekitWebHandler webHandler, InetAddress localhost,
3737
HomekitAuthInfo authInfo) throws IOException {
38-
advertiser = new JmdnsHomekitAdvertiser(localhost);
38+
this(label, webHandler, authInfo, new JmdnsHomekitAdvertiser(localhost));
39+
}
40+
41+
HomekitRoot(String label, HomekitWebHandler webHandler, HomekitAuthInfo authInfo,
42+
JmdnsHomekitAdvertiser advertiser) throws IOException {
43+
this.advertiser = advertiser;
3944
this.webHandler = webHandler;
4045
this.authInfo = authInfo;
4146
this.label = label;
@@ -110,5 +115,9 @@ public void stop() {
110115
webHandler.stop();
111116
started = false;
112117
}
118+
119+
HomekitRegistry getRegistry() {
120+
return registry;
121+
}
113122

114123
}
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package com.beowulfe.hap;
2+
3+
import static org.mockito.Matchers.any;
4+
import static org.mockito.Matchers.eq;
5+
import static org.mockito.Mockito.*;
6+
7+
import java.util.concurrent.CompletableFuture;
8+
9+
import org.junit.*;
10+
11+
import com.beowulfe.hap.impl.HomekitWebHandler;
12+
import com.beowulfe.hap.impl.http.HomekitClientConnectionFactory;
13+
import com.beowulfe.hap.impl.jmdns.JmdnsHomekitAdvertiser;
14+
15+
public class HomekitRootTest {
16+
17+
private HomekitAccessory accessory;
18+
private HomekitRoot root;
19+
private HomekitWebHandler webHandler;
20+
private JmdnsHomekitAdvertiser advertiser;
21+
private HomekitAuthInfo authInfo;
22+
23+
private final static int PORT = 12345;
24+
private final static String LABEL = "Test Label";
25+
26+
@Before
27+
public void setup() throws Exception {
28+
accessory = mock(HomekitAccessory.class);
29+
when(accessory.getId()).thenReturn(2);
30+
webHandler = mock(HomekitWebHandler.class);
31+
when(webHandler.start(any())).thenReturn(CompletableFuture.completedFuture(PORT));
32+
advertiser = mock(JmdnsHomekitAdvertiser.class);
33+
authInfo = mock(HomekitAuthInfo.class);
34+
root = new HomekitRoot(LABEL, webHandler, authInfo, advertiser);
35+
}
36+
37+
@Test
38+
public void verifyRegistryAdded() throws Exception {
39+
root.addAccessory(accessory);
40+
Assert.assertTrue("Registry does not contain accessory", root.getRegistry().getAccessories().contains(accessory));
41+
}
42+
43+
@Test
44+
public void verifyRegistryRemoved() throws Exception {
45+
root.addAccessory(accessory);
46+
root.removeAccessory(accessory);
47+
Assert.assertFalse("Registry still contains accessory", root.getRegistry().getAccessories().contains(accessory));
48+
}
49+
50+
@Test
51+
public void testWebHandlerStarts() throws Exception {
52+
root.start();
53+
verify(webHandler).start(any(HomekitClientConnectionFactory.class));
54+
}
55+
56+
@Test
57+
public void testWebHandlerStops() throws Exception {
58+
root.start();
59+
root.stop();
60+
verify(webHandler).stop();
61+
}
62+
63+
@Test
64+
public void testAdvertiserStarts() throws Exception {
65+
String mac = "00:00:00:00:00:00";
66+
when(authInfo.getMac()).thenReturn(mac);
67+
root.start();
68+
verify(advertiser).advertise(eq(LABEL), eq(mac), eq(PORT));
69+
}
70+
71+
@Test
72+
public void testAdvertiserStops() throws Exception {
73+
root.start();
74+
root.stop();
75+
verify(advertiser).stop();
76+
}
77+
78+
@Test
79+
public void testAddAccessoryResetsWeb() {
80+
root.start();
81+
verify(webHandler, never()).resetConnections();
82+
root.addAccessory(accessory);
83+
verify(webHandler).resetConnections();
84+
}
85+
86+
@Test
87+
public void testRemoveAccessoryResetsWeb() {
88+
root.addAccessory(accessory);
89+
root.start();
90+
verify(webHandler, never()).resetConnections();
91+
root.removeAccessory(accessory);
92+
verify(webHandler).resetConnections();
93+
}
94+
95+
@Test(expected=IndexOutOfBoundsException.class)
96+
public void testAddIndexOneAccessory() throws Exception {
97+
when(accessory.getId()).thenReturn(1);
98+
root.addAccessory(accessory);
99+
}
100+
}

0 commit comments

Comments
 (0)