mirror of https://github.com/jesopo/ircstates
191 lines
8.3 KiB
Python
191 lines
8.3 KiB
Python
import unittest
|
|
import ircstates, irctokens
|
|
|
|
|
|
class ModeTestUMode(unittest.TestCase):
|
|
def test_add(self):
|
|
server = ircstates.Server("test")
|
|
server.parse_tokens(irctokens.tokenise("001 nickname *"))
|
|
server.parse_tokens(irctokens.tokenise("MODE nickname +i"))
|
|
self.assertEqual(server.modes, {"i"})
|
|
|
|
def test_remove(self):
|
|
server = ircstates.Server("test")
|
|
server.parse_tokens(irctokens.tokenise("001 nickname *"))
|
|
server.parse_tokens(irctokens.tokenise("MODE nickname +i"))
|
|
server.parse_tokens(irctokens.tokenise("MODE nickname -i"))
|
|
self.assertEqual(server.modes, set())
|
|
|
|
class ModeTestChannelPrefix(unittest.TestCase):
|
|
def test_add(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("MODE #chan +ov nickname nickname"))
|
|
user = server.users["nickname"]
|
|
channel = server.channels["#chan"]
|
|
channel_user = channel.users[user.nickname_lower]
|
|
self.assertEqual(channel_user.modes, {"o", "v"})
|
|
|
|
def test_remove(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("MODE #chan +ov nickname nickname"))
|
|
server.parse_tokens(
|
|
irctokens.tokenise("MODE #chan -ov nickname nickname"))
|
|
user = server.users["nickname"]
|
|
channel = server.channels["#chan"]
|
|
channel_user = channel.users[user.nickname_lower]
|
|
self.assertEqual(channel_user.modes, set())
|
|
|
|
class ModeTestChannelList(unittest.TestCase):
|
|
def test_add(self):
|
|
server = ircstates.Server("test")
|
|
server.parse_tokens(irctokens.tokenise("001 nickname *"))
|
|
server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
|
|
|
|
channel = server.channels["#chan"]
|
|
self.assertEqual(channel.list_modes, {"b": []})
|
|
|
|
server.parse_tokens(irctokens.tokenise("MODE #chan +b asd!*@*"))
|
|
self.assertEqual(channel.list_modes, {"b": ["asd!*@*"]})
|
|
|
|
server.parse_tokens(irctokens.tokenise("MODE #chan -b asd!*@*"))
|
|
self.assertEqual(channel.list_modes, {"b": []})
|
|
|
|
def test_remove(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("MODE #chan +b asd!*@*"))
|
|
server.parse_tokens(irctokens.tokenise("MODE #chan +b dsa!*@*"))
|
|
server.parse_tokens(irctokens.tokenise("MODE #chan -b asd!*@*"))
|
|
channel = server.channels["#chan"]
|
|
self.assertEqual(channel.list_modes, {"b": ["dsa!*@*"]})
|
|
|
|
def test_banlist(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("367 * #chan *!*@host setby 1594477713"))
|
|
server.parse_tokens(
|
|
irctokens.tokenise("367 * #chan $a:account setby 1594477713"))
|
|
server.parse_tokens(
|
|
irctokens.tokenise("367 * #chan r:my*gecos"))
|
|
server.parse_tokens(irctokens.tokenise("368 * #chan *"))
|
|
|
|
channel = server.channels["#chan"]
|
|
self.assertEqual(
|
|
channel.list_modes["b"],
|
|
["*!*@host", "$a:account", "r:my*gecos"]
|
|
)
|
|
|
|
def test_quietlist(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("728 * #chan q q!*@host setby 1594477713"))
|
|
server.parse_tokens(
|
|
irctokens.tokenise("728 * #chan q $a:qaccount setby 1594477713"))
|
|
server.parse_tokens(
|
|
irctokens.tokenise("728 * #chan q r:q*my*gecos setby 1594477713"))
|
|
server.parse_tokens(irctokens.tokenise("729 * #chan q *"))
|
|
|
|
channel = server.channels["#chan"]
|
|
self.assertEqual(
|
|
channel.list_modes["q"],
|
|
["q!*@host", "$a:qaccount", "r:q*my*gecos"]
|
|
)
|
|
|
|
|
|
class ModeTestChannelTypeB(unittest.TestCase):
|
|
def test_add(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("MODE #chan +k password"))
|
|
channel = server.channels["#chan"]
|
|
self.assertEqual(channel.modes, {"k": "password"})
|
|
|
|
def test_remove(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("MODE #chan +k password"))
|
|
server.parse_tokens(irctokens.tokenise("MODE #chan -k *"))
|
|
channel = server.channels["#chan"]
|
|
self.assertEqual(channel.modes, {})
|
|
|
|
class ModeTestChannelTypeC(unittest.TestCase):
|
|
def test_add(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("MODE #chan +l 100"))
|
|
channel = server.channels["#chan"]
|
|
self.assertEqual(channel.modes, {"l": "100"})
|
|
|
|
def test_remove(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("MODE #chan +l 100"))
|
|
server.parse_tokens(irctokens.tokenise("MODE #chan -l"))
|
|
channel = server.channels["#chan"]
|
|
self.assertEqual(channel.modes, {})
|
|
|
|
class ModeTestChannelTypeD(unittest.TestCase):
|
|
def test_add(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("MODE #chan +i"))
|
|
channel = server.channels["#chan"]
|
|
self.assertEqual(channel.modes, {"i": None})
|
|
|
|
def test_remove(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("MODE #chan +i"))
|
|
server.parse_tokens(irctokens.tokenise("MODE #chan -i"))
|
|
channel = server.channels["#chan"]
|
|
self.assertEqual(channel.modes, {})
|
|
|
|
class ModeTestChannelNumeric(unittest.TestCase):
|
|
def test(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("324 * #chan +bkli *!*@* pass 10"))
|
|
channel = server.channels["#chan"]
|
|
self.assertEqual(channel.modes, {"k": "pass", "l": "10", "i": None})
|
|
self.assertEqual(channel.list_modes, {"b": ["*!*@*"]})
|
|
|
|
def test_without_plus(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("324 * #chan il 10"))
|
|
channel = server.channels["#chan"]
|
|
self.assertEqual(channel.modes, {"i": None, "l": "10"})
|
|
|
|
class ModeTestUserNumeric(unittest.TestCase):
|
|
def test(self):
|
|
server = ircstates.Server("test")
|
|
server.parse_tokens(irctokens.tokenise("001 nickname *"))
|
|
server.parse_tokens(irctokens.tokenise("221 * +iw"))
|
|
self.assertEqual(server.modes, {"i", "w"})
|
|
|
|
def test_without_plus(self):
|
|
server = ircstates.Server("test")
|
|
server.parse_tokens(irctokens.tokenise("001 nickname *"))
|
|
server.parse_tokens(irctokens.tokenise("221 * iw"))
|
|
self.assertEqual(server.modes, {"i", "w"})
|