Beispiel #1
0
 def test(self):
     dt = pendulum.datetime(2020, 3, 12, 19, 38, 9)
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
     server.parse_tokens(irctokens.tokenise("329 * #chan 1584041889"))
     self.assertEqual(server.channels["#chan"].created, dt)
Beispiel #2
0
 def test_set_time(self):
     dt = datetime(2020, 3, 12, 14, 27, 57)
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname"))
     server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
     server.parse_tokens(irctokens.tokenise("333 * #chan other 1584023277"))
     self.assertEqual(server.channels["#chan"].topic_time, dt)
Beispiel #3
0
 def test_self_part(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
     server.parse_tokens(irctokens.tokenise(":nickname PART #chan"))
     self.assertEqual(len(server.users), 0)
     self.assertEqual(len(server.channels), 0)
Beispiel #4
0
 def test_two_del(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("CAP * LS :a b"))
     server.parse_tokens(irctokens.tokenise("CAP * ACK :a b"))
     server.parse_tokens(irctokens.tokenise("CAP * DEL :a b"))
     self.assertEqual(server.available_caps, {})
     self.assertEqual(server.agreed_caps, [])
Beispiel #5
0
 def test_monitor(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     self.assertIsNone(server.isupport.monitor)
     server.parse_tokens(irctokens.tokenise("005 * MONITOR=123 *"))
     self.assertEqual(server.isupport.monitor, 123)
     server.parse_tokens(irctokens.tokenise("005 * MONITOR *"))
     self.assertEqual(server.isupport.monitor, -1)
Beispiel #6
0
 def test_excepts(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     self.assertIsNone(server.isupport.excepts)
     server.parse_tokens(irctokens.tokenise("005 * EXCEPTS=U *"))
     self.assertEqual(server.isupport.excepts, "U")
     server.parse_tokens(irctokens.tokenise("005 * EXCEPTS *"))
     self.assertEqual(server.isupport.excepts, "e")
Beispiel #7
0
 def test_watch(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     self.assertIsNone(server.isupport.watch)
     server.parse_tokens(irctokens.tokenise("005 * WATCH=123 *"))
     self.assertEqual(server.isupport.watch, 123)
     server.parse_tokens(irctokens.tokenise("005 * WATCH *"))
     self.assertEqual(server.isupport.watch, -1)
Beispiel #8
0
 def test_modes(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     self.assertEqual(server.isupport.modes, 3)
     server.parse_tokens(irctokens.tokenise("005 * MODES *"))
     self.assertEqual(server.isupport.modes, -1)
     server.parse_tokens(irctokens.tokenise("005 * MODES=5 *"))
     self.assertEqual(server.isupport.modes, 5)
Beispiel #9
0
 def test_invex(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     self.assertIsNone(server.isupport.invex)
     server.parse_tokens(irctokens.tokenise("005 * INVEX=U *"))
     self.assertEqual(server.isupport.invex, "U")
     server.parse_tokens(irctokens.tokenise("005 * INVEX *"))
     self.assertEqual(server.isupport.invex, "I")
Beispiel #10
0
 def test_callerid(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     self.assertIsNone(server.isupport.callerid)
     server.parse_tokens(irctokens.tokenise("005 * CALLERID=U *"))
     self.assertEqual(server.isupport.callerid, "U")
     server.parse_tokens(irctokens.tokenise("005 * CALLERID *"))
     self.assertEqual(server.isupport.callerid, "g")
Beispiel #11
0
 def test(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     server.parse_tokens(irctokens.tokenise("375 * :start of motd"))
     server.parse_tokens(irctokens.tokenise("372 * :first line of motd"))
     server.parse_tokens(irctokens.tokenise("372 * :second line of motd"))
     self.assertEqual(
         server.motd,
         ["start of motd", "first line of motd", "second line of motd"])
Beispiel #12
0
 def test_set_by_at(self):
     dt = pendulum.datetime(2020, 3, 12, 14, 27, 57)
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
     server.parse_tokens(irctokens.tokenise("333 * #chan other 1584023277"))
     channel = server.channels["#chan"]
     self.assertEqual(channel.topic_setter, "other")
     self.assertEqual(channel.topic_time, dt)
Beispiel #13
0
 def test_other_join(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname"))
     server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
     server.parse_tokens(irctokens.tokenise(":other JOIN #chan"))
     self.assertEqual(len(server.users), 2)
     self.assertIn("other", server.users)
     self.assertEqual(len(server.user_channels), 2)
     self.assertEqual(len(server.channel_users), 1)
Beispiel #14
0
 def test_without_extended_join(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
     self.assertIsNone(server.account)
     self.assertIsNone(server.realname)
     server.parse_tokens(irctokens.tokenise(":other JOIN #chan"))
     user = server.users["other"]
     self.assertIsNone(user.account)
     self.assertIsNone(user.realname)
Beispiel #15
0
    def test_loggedout(self):
        server = ircstates.Server("test")
        server.parse_tokens(
            irctokens.tokenise("900 * nick!user@host account *"))
        server.parse_tokens(irctokens.tokenise("901 * nick1!user1@host1 *"))

        self.assertEqual(server.nickname, "nick1")
        self.assertEqual(server.username, "user1")
        self.assertEqual(server.hostname, "host1")
        self.assertEqual(server.account, None)
Beispiel #16
0
    def test_other_change(self):
        server = ircstates.Server("test")
        server.parse_tokens(irctokens.tokenise("001 nickname"))
        server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
        server.parse_tokens(irctokens.tokenise(":other JOIN #chan"))
        self.assertIn("other", server.users)

        server.parse_tokens(irctokens.tokenise(":other NICK other2"))
        self.assertNotIn("other", server.users)
        self.assertIn("other2", server.users)
Beispiel #17
0
 def test_without_account(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
     server.parse_tokens(irctokens.tokenise(":nickname ACCOUNT *"))
     self.assertEqual(server.account, "")
     server.parse_tokens(irctokens.tokenise(":other JOIN #chan"))
     server.parse_tokens(irctokens.tokenise(":other ACCOUNT *"))
     user = server.users["other"]
     self.assertEqual(user.account, "")
Beispiel #18
0
    def test(self):
        d = irctokens.StatefulDecoder()
        lines = d.push(b"PRIVMSG #channel1 hello\r\n"
                       b"PRIVMSG #channel2 hello\r\n")
        self.assertEqual(len(lines), 2)

        line1 = irctokens.tokenise("PRIVMSG #channel1 hello")
        line2 = irctokens.tokenise("PRIVMSG #channel2 hello")
        self.assertEqual(lines[0], line1)
        self.assertEqual(lines[1], line2)
Beispiel #19
0
    def test_mode_self(self):
        server = ircstates.Server("test")
        server.parse_tokens(irctokens.tokenise("001 nickname *"))
        emit = server.parse_tokens(
            irctokens.tokenise("MODE nickname x+i-i+wi-wi"))

        self.assertIsNotNone(emit)
        self.assertEqual(emit.command, "MODE")
        self.assertTrue(emit.self_target)
        self.assertEqual(emit.tokens,
                         ["+x", "+i", "-i", "+w", "+i", "-w", "-i"])
Beispiel #20
0
 def test_nick(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
     user = server.users["nickname"]
     server.parse_tokens(irctokens.tokenise(":nickname NICK NewNickname"))
     self.assertEqual(len(server.users), 1)
     self.assertIn("newnickname", server.users)
     self.assertEqual(user.nickname, "NewNickname")
     self.assertEqual(user.nickname_lower, "newnickname")
     self.assertEqual(server.nickname, "NewNickname")
     self.assertEqual(server.nickname_lower, "newnickname")
Beispiel #21
0
    def test_other_join(self):
        server = ircstates.Server("test")
        server.parse_tokens(irctokens.tokenise("001 nickname *"))
        server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
        server.parse_tokens(irctokens.tokenise(":other JOIN #chan"))
        self.assertEqual(len(server.users), 2)
        self.assertIn("other", server.users)
        channel = server.channels["#chan"]
        self.assertEqual(len(channel.users), 2)

        user = server.users["other"]
        self.assertEqual(user.channels, set([channel.name_lower]))
Beispiel #22
0
 def test_userhost_in_names(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
     server.parse_tokens(
         irctokens.tokenise(
             "353 * * #chan :nickname!user@host other!user2@host2"))
     self.assertEqual(server.username, "user")
     self.assertEqual(server.hostname, "host")
     user = server.users["other"]
     self.assertEqual(user.username, "user2")
     self.assertEqual(user.hostname, "host2")
Beispiel #23
0
 def test_with_account(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     server.parse_tokens(
         irctokens.tokenise(":nickname JOIN #chan acc :realname"))
     self.assertEqual(server.account, "acc")
     self.assertEqual(server.realname, "realname")
     server.parse_tokens(
         irctokens.tokenise(":other JOIN #chan acc2 :realname2"))
     user = server.users["other"]
     self.assertEqual(user.account, "acc2")
     self.assertEqual(user.realname, "realname2")
Beispiel #24
0
    def test_verb_unset(self):
        server = ircstates.Server("test")
        server.parse_tokens(irctokens.tokenise("001 nickname *"))
        server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
        user = server.users["nickname"]

        server.parse_tokens(
            irctokens.tokenise(
                ":nickname AWAY :let's blow this popsicle stand"))
        server.parse_tokens(irctokens.tokenise(":nickname AWAY"))
        self.assertIsNone(server.away)
        self.assertIsNone(user.away)
Beispiel #25
0
    def test_verb_set(self):
        server = ircstates.Server("test")
        server.parse_tokens(irctokens.tokenise("001 nickname *"))
        server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))

        user = server.users["nickname"]
        self.assertIsNone(server.away)
        self.assertIsNone(user.away)

        server.parse_tokens(irctokens.tokenise(":nickname AWAY :ik ga weg"))
        self.assertEqual(server.away, "ik ga weg")
        self.assertEqual(user.away, "ik ga weg")
Beispiel #26
0
 def test_chanmodes(self):
     server = ircstates.Server("test")
     server.parse_tokens(irctokens.tokenise("001 nickname *"))
     self.assertEqual(server.isupport.chanmodes.a_modes, ["b"])
     self.assertEqual(server.isupport.chanmodes.b_modes, ["k"])
     self.assertEqual(server.isupport.chanmodes.c_modes, ["l"])
     self.assertEqual(server.isupport.chanmodes.d_modes,
                      ["i", "m", "n", "p", "s", "t"])
     server.parse_tokens(irctokens.tokenise("005 * CHANMODES=a,b,c,d *"))
     self.assertEqual(server.isupport.chanmodes.a_modes, ["a"])
     self.assertEqual(server.isupport.chanmodes.b_modes, ["b"])
     self.assertEqual(server.isupport.chanmodes.c_modes, ["c"])
     self.assertEqual(server.isupport.chanmodes.d_modes, ["d"])
Beispiel #27
0
    def test(self):
        server = ircstates.Server("test")
        server.parse_tokens(irctokens.tokenise("001 nickname *"))
        server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))

        user = server.users["nickname"]
        channel = server.channels["#chan"]
        channel_user = channel.users[user.nickname_lower]
        server.parse_tokens(irctokens.tokenise(":nickname NICK Nickname2"))

        self.assertEqual(channel.users, {user.nickname_lower: channel_user})
        self.assertEqual(channel_user.nickname, "Nickname2")
        self.assertEqual(channel_user.nickname_lower, "nickname2")
Beispiel #28
0
    def test_mode_channel(self):
        server = ircstates.Server("test")
        server.parse_tokens(irctokens.tokenise("001 nickname *"))
        server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
        channel = server.channels["#chan"]
        emit = server.parse_tokens(
            irctokens.tokenise(":server MODE #chan +im-m+b-k asd!*@* key"))

        self.assertIsNotNone(emit)
        self.assertEqual(emit.command, "MODE")
        self.assertEqual(emit.channel, channel)
        self.assertEqual(emit.tokens,
                         ["+i", "+m", "-m", "+b asd!*@*", "-k key"])
Beispiel #29
0
    def test_host(self):
        server = ircstates.Server("test")
        server.parse_tokens(irctokens.tokenise("001 nickname *"))
        server.parse_tokens(irctokens.tokenise(":nickname@host JOIN #chan"))
        self.assertIsNone(server.username)
        self.assertEqual(server.hostname, "host")

        server.parse_tokens(irctokens.tokenise(":other@host JOIN #chan"))
        user = server.users["other"]
        self.assertIsNone(user.username)
        self.assertEqual(user.hostname, "host")
        self.assertIsNone(user.userhost())
        self.assertEqual(user.hostmask(), "other@host")
Beispiel #30
0
    def test_numeric(self):
        server = ircstates.Server("test")
        server.parse_tokens(irctokens.tokenise("001 nickname *"))
        server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
        user = server.users["nickname"]

        self.assertIsNone(server.away)
        self.assertIsNone(user.away)

        server.parse_tokens(
            irctokens.tokenise("301 * nickname :i saw something shiny"))
        self.assertEqual(server.away, "i saw something shiny")
        self.assertEqual(user.away, "i saw something shiny")