|
8 | 8 |
|
9 | 9 | import org.buddycloud.channelserver.Configuration; |
10 | 10 | import org.buddycloud.channelserver.channel.ChannelManager; |
| 11 | +import org.buddycloud.channelserver.db.exception.NodeStoreException; |
11 | 12 | import org.buddycloud.channelserver.packetHandler.iq.IQTestHandler; |
12 | 13 | import org.buddycloud.channelserver.pubsub.affiliation.Affiliations; |
13 | 14 | import org.buddycloud.channelserver.pubsub.model.NodeSubscription; |
@@ -284,4 +285,30 @@ public void testSuccessfulDeleteWithSubscribers() throws Exception { |
284 | 285 | Assert.assertEquals(node, |
285 | 286 | eventEl.element("delete").attributeValue("node")); |
286 | 287 | } |
| 288 | + |
| 289 | + @Test |
| 290 | + public void databaseExceptionWhenGettingListenersSendsMinimalNotifications() throws Exception { |
| 291 | + IQ request = readStanzaAsIq("/iq/pubsub/delete/request-with-node.stanza"); |
| 292 | + Element deleteEl = request.getChildElement().element("delete"); |
| 293 | + |
| 294 | + String node = deleteEl.attributeValue("node"); |
| 295 | + Mockito.when(channelManager.nodeExists(node)).thenReturn(true); |
| 296 | + |
| 297 | + Mockito.doThrow(new NodeStoreException()).when(channelManager) |
| 298 | + .getNodeSubscriptionListeners(Mockito.anyString()); |
| 299 | + |
| 300 | + Mockito.when(channelManager.getNodeMembership(node, jid)).thenReturn( |
| 301 | + new NodeMembershipImpl(node, jid, Subscriptions.subscribed, |
| 302 | + Affiliations.owner, null)); |
| 303 | + |
| 304 | + nodeDelete.process(deleteEl, jid, request, null); |
| 305 | + IQ response = (IQ) queue.poll(); |
| 306 | + |
| 307 | + Assert.assertNull(response.getError()); |
| 308 | + Assert.assertEquals(request.getID(), response.getID()); |
| 309 | + Assert.assertEquals(Type.result, response.getType()); |
| 310 | + |
| 311 | + int adminCount = Configuration.getInstance().getAdminUsers().size(); |
| 312 | + Assert.assertEquals(adminCount, queue.size()); |
| 313 | + } |
287 | 314 | } |
0 commit comments