From 383a65d58e205e7b4ae6e1a535c15f1b24d4e3ae Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Wed, 20 Feb 2019 22:48:48 -0500 Subject: [PATCH] test for oragono/oragono#391 --- .../server_tests/test_labeled_responses.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/irctest/server_tests/test_labeled_responses.py b/irctest/server_tests/test_labeled_responses.py index 84b5e73..687ee2d 100644 --- a/irctest/server_tests/test_labeled_responses.py +++ b/irctest/server_tests/test_labeled_responses.py @@ -277,3 +277,25 @@ class LabeledResponsesTestCase(cases.BaseServerTestCase, cases.OptionalityHelper self.assertMessageEqual(m, command='PONG', params=['adhoctestline']) # check the label self.assertEqual(m.tags.get('draft/label'), '98765') + + @cases.SpecificationSelector.requiredBySpecification('Oragono') + def testEmptyBatchForNoResponse(self): + self.connectClient('bar', capabilities=['batch', 'draft/labeled-response', 'draft/message-tags-0.2', 'server-time']) + self.getMessages(1) + + # PONG never receives a response + self.sendLine(1, '@draft/label=98765 PONG adhoctestline') + + # "If no response is required, an empty batch MUST be sent." + # https://ircv3.net/specs/extensions/labeled-response.html + ms = self.getMessages(1) + self.assertEqual(len(ms), 2) + batch_start, batch_end = ms + + self.assertEqual(batch_start.command, 'BATCH') + self.assertEqual(batch_start.tags.get('draft/label'), '98765') + self.assertTrue(batch_start.params[0].startswith('+')) + batch_id = batch_start.params[0][1:] + + self.assertEqual(batch_end.command, 'BATCH') + self.assertEqual(batch_end.params[0], '-' + batch_id)