From efa5b5eb3b76e8c2c33c0dd2156b6fda141274b2 Mon Sep 17 00:00:00 2001
From: Valentin Lorentz <progval+git@progval.net>
Date: Sat, 20 Feb 2021 10:53:23 +0100
Subject: [PATCH] client_tests/test_sasl: Update to work with newer versions of
 Sopel

---
 irctest/client_tests/test_sasl.py | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/irctest/client_tests/test_sasl.py b/irctest/client_tests/test_sasl.py
index 2e61a16..28e1320 100644
--- a/irctest/client_tests/test_sasl.py
+++ b/irctest/client_tests/test_sasl.py
@@ -47,7 +47,12 @@ class SaslTestCase(cases.BaseClientTestCase, cases.ClientNegociationHelper,
         m = self.negotiateCapabilities(['sasl=EXTERNAL'], auth=auth)
         self.assertEqual(self.acked_capabilities, {'sasl'})
         if m == Message({}, None, 'CAP', ['END']):
-            # IRCv3.2-style
+            # IRCv3.2-style, for clients that skip authentication
+            # when unavailable (eg. Limnoria)
+            return
+        elif m.command == 'QUIT':
+            # IRCv3.2-style, for clients that quit when unavailable
+            # (eg. Sopel)
             return
         self.assertEqual(m, Message({}, None, 'AUTHENTICATE', ['PLAIN']))
         self.sendLine('904 {} :SASL auth failed'.format(self.nick))
@@ -199,4 +204,10 @@ class Irc302SaslTestCase(cases.BaseClientTestCase, cases.ClientNegociationHelper
                 )
         m = self.negotiateCapabilities(['sasl=EXTERNAL'], auth=auth)
         self.assertEqual(self.acked_capabilities, {'sasl'})
-        self.assertEqual(m, Message({}, None, 'CAP', ['END']))
+
+        if m.command == 'QUIT':
+            # Some clients quit when it can't authenticate (eg. Sopel)
+            pass
+        else:
+            # Others will just skip authentication (eg. Limnoria)
+            self.assertEqual(m, Message({}, None, 'CAP', ['END']))