home · contact · privacy
Add user identity setting tests.
authorChristian Heller <c.heller@plomlompom.de>
Mon, 17 Nov 2025 18:39:10 +0000 (19:39 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Mon, 17 Nov 2025 18:39:10 +0000 (19:39 +0100)
src/ircplom/msg_parse_expectations.py
src/tests/caps.test
src/tests/lib/cmd-disconnect
src/tests/lib/req-sasl
src/tests/test.test
src/tests/userset.test [new file with mode: 0644]

index 27b973ea81f82a2dbb174328b7e538b016c06f91..89c1d56b19b13a71ee22c3298583f176b1780c91 100644 (file)
@@ -132,7 +132,8 @@ class _MsgParseExpectation:
             if cmd not in tasks:
                 tasks[cmd] = []
             tasks[cmd] += [title]
-        return parsed | {'_verb': self.verb, '_tasks': tasks,
+        return parsed | {'_verb': self.verb,
+                         '_tasks': tasks,
                          '_nickuserhosts': nickuserhosts}
 
 
index ee4b94707cc74888ac9a0eff339cd1a2dad73e76..a7ec02a54694073609aaf2a5b850e600e1b3f581 100644 (file)
@@ -1,5 +1,5 @@
-insert ./lib/001-setting-nick
 insert ./lib/001-to-usermode
+# for: 001-to-usermode
 insert ./lib/attempting-to-connected
 insert ./lib/connect-to-connected
 insert ./lib/cap-msg
@@ -8,18 +8,19 @@ insert ./lib/caps-data-set
 insert ./lib/cmd-disconnect
 # for: cmd-disconnect
 insert ./lib/disconnect
-insert ./lib/req-sasl
 # for: disconnect1
+insert ./lib/req-sasl
+# for: get-sasl-plain, req-sasl
 insert ./lib/servermsglogged
 
 × disconnect-to-reconnect-0
-insert 001-to-usermode : +0
-insert cmd-disconnect : +0
+insert 001-to-usermode
+insert cmd-disconnect
 
 × disconnect-to-reconnect-1
-insert disconnect1 1: +1 WIN_IDS :2
+insert disconnect1 1: + WIN_IDS :2
 > /reconnect
-insert attempting-to-connected : +1 WIN_IDS :2
+insert attempting-to-connected : + WIN_IDS :2
 
 × disconnect-to-reconnect
 insert disconnect-to-reconnect-0
@@ -37,9 +38,9 @@ insert disconnect-to-reconnect-0 :-1
 insert disconnect-to-reconnect-1
 
 # check full, alphabetical processing of multi-line responses
-insert cap-msg : +0 CAPMSG :* LS * :foo bar baz
-insert cap-msg : +0 CAPMSG :* LS * :oof rab zab
-insert cap-msg : +0 CAPMSG :* LS :ofo rba zba
+insert cap-msg : + CAPMSG :* LS * :foo bar baz
+insert cap-msg : + CAPMSG :* LS * :oof rab zab
+insert cap-msg : + CAPMSG :* LS :ofo rba zba
 log 1 $ caps:bar:data set to: []
 log 1 $ caps:baz:data set to: []
 log 1 $ caps:foo:data set to: []
@@ -50,8 +51,10 @@ log 1 $ caps:rba:data set to: []
 log 1 $ caps:zab:data set to: []
 log 1 $ caps:zba:data set to: []
 log 1 > CAP :LIST
-insert cap-msg : +0 CAPMSG :* LIST * :foo rab oof
-insert cap-msg : +0 CAPMSG :* LIST :zab rba
+insert cap-msg : + CAPMSG :foo LIST * :foo rab oof
+log 1 $ users:me:nick set to: [?]
+log 1 $ users:me:nick set to: [foo]
+insert cap-msg : + CAPMSG :foo LIST :zab rba
 log 1 $ caps:foo:enabled set to: [True]
 log 1 $ caps:oof:enabled set to: [True]
 log 1 $ caps:rab:enabled set to: [True]
@@ -59,32 +62,26 @@ log 1 $ caps:rba:enabled set to: [True]
 log 1 $ caps:zab:enabled set to: [True]
 log 1 > CAP :END
 
-insert disconnect-to-reconnect
+insert disconnect-to-reconnect 4:
 
 # check REQ for "sasl" (even if no PLAIN), denied
-insert servermsglogged : +0 MSG ::*.?.net CAP * LS :foo bar sasl
+insert servermsglogged : + MSG ::*.?.net CAP * LS :foo bar sasl
 log 1 $ caps:bar:data set to: []
 log 1 $ caps:foo:data set to: []
 log 1 $ caps:sasl:data set to: []
-insert req-sasl : +0 REPLY=NAK CAPLIST :
+insert req-sasl : + REPLY=NAK CAPLIST :
 log 1 > CAP :END
 
-insert disconnect-to-reconnect
+insert disconnect-to-reconnect 4:
 
 # check REQ for "sasl" with PLAIN successful (but for lack of password, negotiation still ending instantly)
-insert cap-msg : +0 CAPMSG :* LS :sasl=PLAIN
-insert caps-data-set : +1 CAPNAME=sasl CAPVAL :PLAIN
-insert req-sasl : +0 REPLY=ACK CAPLIST :sasl
-log 1 $ caps:sasl:enabled set to: [True]
+insert get-sasl-plain
 log 1 > CAP :END
 
-# for later references, have nickname known
-insert 001-setting-nick
-
 # check NEW, DEL working after CAP :END
-insert cap-msg : +0 CAPMSG :foo NEW :foo bar=baz
-insert caps-data-set : +1 CAPNAME=bar CAPVAL :baz
+insert cap-msg : + CAPMSG :foo NEW :foo bar=baz
+insert caps-data-set : + CAPNAME=bar CAPVAL :baz
 log 1 $ caps:foo:data set to: []
-insert cap-msg : +0 CAPMSG :foo DEL :sasl foo
+insert cap-msg : + CAPMSG :foo DEL :sasl foo
 log 1 $ caps:foo cleared
 log 1 $ caps:sasl cleared
index ec63933d044e0aee6a3b3b89c7bc38d58d8e7206..8ab7477915df1e001ed874c8a02aacb161e7c2f1 100644 (file)
@@ -10,7 +10,7 @@ log 1 $ users:me:exit_msg set to: [QClient Quit]
 log , $ foo!~baz@baz.bar.foo quits: Client Quit
 
 × cmd-disconnect-1
-insert error-to-disconnect : +0 ? ::Closing link: [Quit: ircplom says bye]
+insert error-to-disconnect : +0 ? ::Closing link: foo.foo (Client Quit)
 
 × cmd-disconnect
 insert cmd-disconnect-0
index 4b5095119c62cf04dee9de788fc297f912978dbb..49c07c1bcb64aec817d05cafb6307f82541799cc 100644 (file)
@@ -1,8 +1,16 @@
 insert ./lib/cap-msg
+insert ./lib/caps-data-set
+insert ./lib/user-set-to
 
 × req-sasl
 log 1 > CAP REQ :sasl
 log 1 > CAP :LIST
-insert cap-msg : +0 CAPMSG :* REPLY :sasl
-insert cap-msg : +0 CAPMSG :* LIST :CAPLIST
+insert cap-msg : +0 CAPMSG :foo REPLY :sasl
+insert user-set-to :2 + USER_ID=me USERNICK :foo
+insert cap-msg : +0 CAPMSG :foo LIST :CAPLIST
 
+× get-sasl-plain
+insert cap-msg : + CAPMSG :* LS :sasl=PLAIN
+insert caps-data-set : + CAPNAME=sasl CAPVAL :PLAIN
+insert req-sasl : + REPLY=ACK CAPLIST :sasl
+log 1 $ caps:sasl:enabled set to: [True]
index 6534640224c3ac829d2d3f9eb01e54bbd340df4e..525d724f4587a6a7590f0e62ec511ca81ff7e069 100644 (file)
@@ -43,27 +43,16 @@ insert nick-increment : +0 NAME_A=foo NAME_B :foo0
 insert nick-increment : +0 NAME_A=foo0 NAME_B :foo1
 
 # collect server capabilities
-insert cap-msg : +0 CAPMSG :* LS : foo bar sasl=PLAIN,EXTERNAL baz cap-notify
+insert cap-msg : +0 CAPMSG :* LS : foo bar sasl=IGNORE baz cap-notify
 log 1 $ caps:bar:data set to: []
 log 1 $ caps:baz:data set to: []
 log 1 $ caps:cap-notify:data set to: []
 log 1 $ caps:foo:data set to: []
-insert caps-data-set : +1 CAPNAME=sasl CAPVAL :PLAIN,EXTERNAL
-insert req-sasl : +0 REPLY=ACK CAPLIST :cap-notify sasl
+insert caps-data-set : +1 CAPNAME=sasl CAPVAL :IGNORE
+insert req-sasl : +0 foo=foo1 REPLY=ACK CAPLIST :cap-notify sasl
 log 1 $ caps:cap-notify:enabled set to: [True]
 log 1 $ caps:sasl:enabled set to: [True]
 
-# authenticate via SASL, collect items of user identity
-log 1 $ sasl_auth_state set to: [attempting]
-log 1 > AUTHENTICATE :PLAIN
-insert servermsglogged : +0 MSG :AUTHENTICATE +
-log 1 > AUTHENTICATE :Zm9vAGZvbwBiYXI=
-insert servermsglogged : +0 MSG ::foo.bar.baz 900 foo1 foo1!baz@baz.bar.foo foo :You are now logged in as foo
-insert user-set-to : +1 USER_ID=me USERNICK=foo1 USERNAME=baz USERHOST :baz.bar.foo
-log 1 $ sasl_account set to: [foo]
-insert servermsglogged : +0 MSG ::foo.bar.baz 903 foo1 :SASL authentication successful
-log 1 $ sasl_auth_state set to: [SASL authentication successful]
-
 # finish CAP negotation, thus login procedure
 log 1 > CAP :END
 
@@ -118,6 +107,7 @@ log 1 $ nickname refused for bad format, keeping current one
 # rename to easen code-reuse
 insert cmd-nick :4 +0 NUH=foo1!~baz@baz.bar.foo NEWNICK :foo
 log 1 $ users:me:user set to: [~baz]
+log 1 $ users:me:host set to: [baz.bar.foo]
 insert cmd-nick 4:-2 +1 USER_ID=me NEWNICK :foo
 log rename_win_ids $ foo1!~baz@baz.bar.foo renames foo
 
@@ -178,8 +168,6 @@ insert quits : + CHAN_WIN_ID=5 CHANNEL=#testtest USER_ID=me NICK=foo foo@foo.foo
 insert cmd-disconnect-1 : +0
 insert disconnect1 :-1 +1 WIN_IDS :2,3,4,5,6,7
 log 1 $ motd cleared
-log 1 $ sasl_account set to: []
-log 1 $ sasl_auth_state set to: []
 log 1 $ users cleared
 
 # fail to send in disconnect, check alert window is command prompt window
diff --git a/src/tests/userset.test b/src/tests/userset.test
new file mode 100644 (file)
index 0000000..ce8dcb4
--- /dev/null
@@ -0,0 +1,97 @@
+insert ./lib/conn
+# for: attempting, connected
+insert ./lib/cmd-disconnect
+# for cmd-disconnect-0, cmd-disconnect-1
+insert ./lib/disconnect
+# for: disconnect1
+insert ./lib/servermsglogged
+insert ./lib/cap-msg
+insert ./lib/req-sasl
+# for: get-sasl-plain
+insert ./lib/user-set-to
+
+× connecting-to-nick
+> /reconnect
+insert attempting :-1 + foo.bar.baz=STORE bar=foo baz=foo STORE :foo.bar.baz
+log 2 $ - password: foo
+insert connected : + WIN_IDS=2 baz=foo bar :foo
+
+× cap-to-auth
+insert get-sasl-plain
+log 1 $ sasl_auth_state set to: [attempting]
+log 1 > AUTHENTICATE :PLAIN
+insert servermsglogged : + MSG :AUTHENTICATE +
+log 1 > AUTHENTICATE :Zm9vAGZvbwBmb28=
+
+× end-auth
+insert servermsglogged : + MSG ::foo.bar.baz NUMERIC foo :SASL authentication SASL_STATE
+log 1 $ sasl_auth_state set to: [SASL authentication SASL_STATE]
+log 1 > CAP :END
+
+× ×-------------------------------------
+
+> /connect foo.bar.baz:6697 foo:foo foo:foo
+insert connect 1: + [bar]=[foo] [baz] :[foo]
+log 1 $ password set to: [foo]
+
+# check not setting any user data, going straight to disconnect once possible
+insert connecting-to-nick 1:
+> /window 1
+#
+insert cmd-disconnect-0 :2
+insert cmd-disconnect-1 :-1
+insert disconnect1 1:-1 + WIN_IDS :2
+
+# check going straight to disconnect once possible, only receiving user data in QUIT message
+insert connecting-to-nick
+#
+insert cmd-disconnect-0 :-2 + ~baz@baz.bar.foo :~foo@foo.foo
+insert user-set-to : + USER_ID=me USERNICK=foo USERNAME=~foo USERHOST :foo.foo
+insert cmd-disconnect-0 -2: + ~baz@baz.bar.foo :~foo@foo.foo
+insert cmd-disconnect-1 :-1
+insert disconnect1 1: + WIN_IDS :2
+
+# check receiving nickname during set-up, other stuff only via QUIT message
+# check immediate 
+insert connecting-to-nick
+insert cap-msg : +0 CAPMSG :* LS :
+log 1 > CAP :LIST
+insert cap-msg : +0 CAPMSG :foo LIST :
+insert user-set-to :2 + USER_ID=me USERNICK :foo
+log 1 > CAP :END
+#
+insert cmd-disconnect-0 :-2 + ~baz@baz.bar.foo :~foo@foo.foo
+insert user-set-to 2: + USER_ID=me USERNAME=~foo USERHOST :foo.foo
+insert cmd-disconnect-0 -2: + ~baz@baz.bar.foo :~foo@foo.foo
+insert cmd-disconnect-1 :-1
+insert disconnect1 1: + WIN_IDS :2
+
+# check successful SASL authentication
+insert connecting-to-nick
+insert cap-to-auth
+insert servermsglogged : + MSG ::foo.bar.baz 900 foo foo!foo@foo.foo foo :You are now logged in as foo
+insert user-set-to 2: + USER_ID=me USERNAME=foo USERHOST :foo.foo
+log 1 $ sasl_account set to: [foo]
+insert end-auth : + NUMERIC=903 SASL_STATE :successful
+#
+insert cmd-disconnect-0 :-2 + ~baz@baz.bar.foo :~foo@foo.foo
+insert user-set-to 2:3 + USER_ID=me USERNAME :~foo
+insert cmd-disconnect-0 -2: + ~baz@baz.bar.foo :~foo@foo.foo
+insert cmd-disconnect-1
+insert disconnect1 1:-1 + WIN_IDS :2
+log 1 $ sasl_account set to: []
+log 1 $ sasl_auth_state set to: []
+insert disconnect1 -1:
+
+# check failing SASL authentication
+insert connecting-to-nick
+insert cap-to-auth
+insert end-auth : + NUMERIC=904 SASL_STATE :failed
+#
+insert cmd-disconnect-0 :-2 + ~baz@baz.bar.foo :~foo@foo.foo
+insert user-set-to 2: + USER_ID=me USERNAME=~foo USERHOST :foo.foo
+insert cmd-disconnect-0 -2: + ~baz@baz.bar.foo :~foo@foo.foo
+insert cmd-disconnect-1
+insert disconnect1 1:-1 + WIN_IDS :2
+log 1 $ sasl_auth_state set to: []
+insert disconnect1 -1: