From: Christian Heller Date: Mon, 17 Nov 2025 18:39:10 +0000 (+0100) Subject: Add user identity setting tests. X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/add_free?a=commitdiff_plain;h=49c157ca656f21df686f019851b74c2d1f0ad961;p=ircplom Add user identity setting tests. --- diff --git a/src/ircplom/msg_parse_expectations.py b/src/ircplom/msg_parse_expectations.py index 27b973e..89c1d56 100644 --- a/src/ircplom/msg_parse_expectations.py +++ b/src/ircplom/msg_parse_expectations.py @@ -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} diff --git a/src/tests/caps.test b/src/tests/caps.test index ee4b947..a7ec02a 100644 --- a/src/tests/caps.test +++ b/src/tests/caps.test @@ -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 diff --git a/src/tests/lib/cmd-disconnect b/src/tests/lib/cmd-disconnect index ec63933..8ab7477 100644 --- a/src/tests/lib/cmd-disconnect +++ b/src/tests/lib/cmd-disconnect @@ -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 diff --git a/src/tests/lib/req-sasl b/src/tests/lib/req-sasl index 4b50951..49c07c1 100644 --- a/src/tests/lib/req-sasl +++ b/src/tests/lib/req-sasl @@ -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] diff --git a/src/tests/test.test b/src/tests/test.test index 6534640..525d724 100644 --- a/src/tests/test.test +++ b/src/tests/test.test @@ -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 index 0000000..ce8dcb4 --- /dev/null +++ b/src/tests/userset.test @@ -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: