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}
-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
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
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: []
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]
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
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
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]
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
# 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
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
--- /dev/null
+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: