|
3 | 3 | import java.util.Date; |
4 | 4 | import java.util.HashMap; |
5 | 5 | import java.util.LinkedList; |
| 6 | +import java.util.List; |
6 | 7 | import java.util.Map; |
7 | 8 | import java.util.concurrent.BlockingQueue; |
8 | 9 | import java.util.concurrent.LinkedBlockingQueue; |
|
16 | 17 | import org.buddycloud.channelserver.pubsub.affiliation.Affiliations; |
17 | 18 | import org.buddycloud.channelserver.pubsub.model.NodeThread; |
18 | 19 | import org.buddycloud.channelserver.pubsub.model.impl.NodeAffiliationImpl; |
| 20 | +import org.buddycloud.channelserver.pubsub.model.impl.NodeItemImpl; |
19 | 21 | import org.buddycloud.channelserver.pubsub.model.impl.NodeSubscriptionImpl; |
| 22 | +import org.buddycloud.channelserver.pubsub.model.impl.NodeThreadImpl; |
20 | 23 | import org.buddycloud.channelserver.pubsub.subscription.Subscriptions; |
21 | 24 | import org.dom4j.Element; |
22 | 25 | import org.dom4j.tree.BaseElement; |
@@ -170,6 +173,51 @@ public void testSucessfulEmptyResponse() throws Exception { |
170 | 173 | Packet response = queue.poll(); |
171 | 174 |
|
172 | 175 | Assert.assertNull(response.getError()); |
173 | | - Assert.assertNull(response.getElement().element("pubsub").element("threads")); |
| 176 | + Assert.assertNull(response.getElement().element("pubsub").element("thread")); |
| 177 | + } |
| 178 | + |
| 179 | + @SuppressWarnings("unchecked") |
| 180 | + @Test |
| 181 | + public void testSucessfulNonEmptyResponse() throws Exception { |
| 182 | + IQ request = readStanzaAsIq("/iq/pubsub/threads/request-with-node.stanza"); |
| 183 | + Element threadsEl = request.getChildElement().element("threads"); |
| 184 | + |
| 185 | + String node = threadsEl.attributeValue("node"); |
| 186 | + Mockito.when(channelManager.nodeExists(node)).thenReturn(true); |
| 187 | + |
| 188 | + Map<String, String> conf = new HashMap<String, String>(); |
| 189 | + conf.put(AccessModel.FIELD_NAME, AccessModels.open.toString()); |
| 190 | + Mockito.when(channelManager.getNodeConf(node)).thenReturn(conf); |
| 191 | + |
| 192 | + LinkedList<NodeThread> threads = new LinkedList<NodeThread>(); |
| 193 | + NodeThreadImpl threadA = new NodeThreadImpl("itemA", new Date()); |
| 194 | + threadA.addItem(new NodeItemImpl(node, "itemA", new Date(), "<payload/>")); |
| 195 | + threadA.addItem(new NodeItemImpl(node, "itemB", new Date(), "<payload/>", "itemA")); |
| 196 | + threads.add(threadA); |
| 197 | + |
| 198 | + NodeThreadImpl threadB = new NodeThreadImpl("itemC", new Date()); |
| 199 | + threadB.addItem(new NodeItemImpl(node, "itemC", new Date(), "<payload/>")); |
| 200 | + threadB.addItem(new NodeItemImpl(node, "itemD", new Date(), "<payload/>", "itemC")); |
| 201 | + threads.add(threadB); |
| 202 | + |
| 203 | + Mockito.when(channelManager.getNodeThreads(Mockito.eq(node), Mockito.anyString(), |
| 204 | + Mockito.anyInt())).thenReturn(new ResultSetImpl<NodeThread>( |
| 205 | + threads)); |
| 206 | + Mockito.when(channelManager.countNodeThreads(node)).thenReturn(threads.size()); |
| 207 | + |
| 208 | + threadsGet.process(threadsEl, request.getFrom(), request, null); |
| 209 | + Packet response = queue.poll(); |
| 210 | + |
| 211 | + Assert.assertNull(response.getError()); |
| 212 | + Element responsePubsubEl = response.getElement().element("pubsub"); |
| 213 | + |
| 214 | + List<Element> responseThreadsEl = responsePubsubEl.elements("thread"); |
| 215 | + Assert.assertNotNull(responseThreadsEl); |
| 216 | + Assert.assertEquals(2, responseThreadsEl.size()); |
| 217 | + |
| 218 | + Element responseRsmEl = responsePubsubEl.element("set"); |
| 219 | + Assert.assertEquals("itemA", responseRsmEl.elementText("first")); |
| 220 | + Assert.assertEquals("itemC", responseRsmEl.elementText("last")); |
| 221 | + Assert.assertEquals("2", responseRsmEl.elementText("count")); |
174 | 222 | } |
175 | 223 | } |
0 commit comments