spox-mod_spox 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +5 -0
- data/README.rdoc +61 -1
- data/bin/mod_spox +1 -7
- data/data/mod_spox/extras/AutoKick.rb +3 -2
- data/data/mod_spox/extras/AutoMode.rb +2 -1
- data/data/mod_spox/extras/AutoRejoin.rb +5 -4
- data/data/mod_spox/extras/Bouncer.rb +243 -131
- data/data/mod_spox/extras/FloodKicker.rb +2 -1
- data/data/mod_spox/extras/Fortune.rb +5 -1
- data/data/mod_spox/extras/Karma.rb +2 -1
- data/data/mod_spox/extras/Logger.rb +11 -9
- data/data/mod_spox/extras/NickServ.rb +2 -1
- data/data/mod_spox/extras/PhpCli.rb +1 -1
- data/data/mod_spox/extras/PhpFuncLookup.rb +2 -1
- data/data/mod_spox/extras/RegexTracker.rb +2 -1
- data/data/mod_spox/extras/Roulette.rb +2 -1
- data/data/mod_spox/extras/Seen.rb +10 -8
- data/data/mod_spox/extras/Topten.rb +2 -1
- data/data/mod_spox/extras/Translate.rb +2 -1
- data/data/mod_spox/extras/Twitter.rb +1 -1
- data/data/mod_spox/plugins/Authenticator.rb +7 -7
- data/data/mod_spox/plugins/Banner.rb +6 -6
- data/data/mod_spox/plugins/BotNick.rb +2 -1
- data/data/mod_spox/plugins/Initializer.rb +4 -4
- data/data/mod_spox/plugins/Joiner.rb +1 -1
- data/data/mod_spox/plugins/PluginLoader.rb +1 -1
- data/data/mod_spox/plugins/Ponger.rb +8 -8
- data/data/mod_spox/plugins/Status.rb +1 -1
- data/lib/mod_spox/Bot.rb +27 -27
- data/lib/mod_spox/BotConfig.rb +17 -21
- data/lib/mod_spox/Filter.rb +29 -0
- data/lib/mod_spox/FilterManager.rb +63 -0
- data/lib/mod_spox/Helpers.rb +120 -14
- data/lib/mod_spox/Loader.rb +1 -1
- data/lib/mod_spox/MessageFactory.rb +10 -2
- data/lib/mod_spox/Pipeline.rb +66 -61
- data/lib/mod_spox/PluginManager.rb +5 -5
- data/lib/mod_spox/PriorityQueue.rb +21 -8
- data/lib/mod_spox/Sockets.rb +6 -6
- data/lib/mod_spox/Timer.rb +3 -3
- data/lib/mod_spox/Version.rb +2 -2
- data/lib/mod_spox/handlers/UserHost.rb +32 -0
- data/lib/mod_spox/handlers/Whois.rb +7 -7
- data/lib/mod_spox/messages/incoming/Pong.rb +11 -2
- data/lib/mod_spox/messages/incoming/UserHost.rb +24 -0
- data/lib/mod_spox/messages/internal/FilterAdd.rb +20 -0
- data/lib/mod_spox/messages/internal/FilterList.rb +18 -0
- data/lib/mod_spox/messages/internal/FilterListing.rb +22 -0
- data/lib/mod_spox/messages/internal/FilterRemove.rb +20 -0
- data/lib/mod_spox/messages/internal/Incoming.rb +15 -0
- data/lib/mod_spox/migrations/006_ignore.rb +21 -0
- data/lib/mod_spox/models/Nick.rb +11 -0
- data/lib/mod_spox/rfc2812.rb +2 -1
- data/lib/mod_spox/rfc2812_full.rb +185 -0
- data/tests/BotHolder.rb +7 -1
- data/tests/handlers/tc_Created.rb +28 -8
- data/tests/handlers/tc_Invite.rb +11 -9
- data/tests/handlers/tc_Join.rb +36 -16
- data/tests/handlers/tc_Kick.rb +27 -6
- data/tests/handlers/tc_Mode.rb +23 -13
- data/tests/handlers/tc_Names.rb +29 -9
- data/tests/handlers/tc_Nick.rb +30 -8
- data/tests/handlers/tc_Part.rb +30 -20
- data/tests/handlers/tc_Ping.rb +32 -19
- data/tests/handlers/tc_Pong.rb +28 -8
- data/tests/handlers/tc_Privmsg.rb +33 -13
- data/tests/handlers/tc_Quit.rb +30 -17
- data/tests/handlers/tc_Who.rb +8 -3
- data/tests/handlers/tc_Whois.rb +7 -3
- data/tests/lib/tc_BotConfig.rb +35 -0
- data/tests/lib/tc_Helpers.rb +139 -0
- data/tests/lib/tc_PriorityQueue.rb +31 -0
- metadata +17 -2
data/tests/BotHolder.rb
CHANGED
@@ -14,7 +14,13 @@ class BotHolder
|
|
14
14
|
attr_reader :bot
|
15
15
|
def initialize
|
16
16
|
ModSpox::Database.db = nil
|
17
|
-
|
17
|
+
begin
|
18
|
+
File.unlink('test.db') if File.exists?('test.db')
|
19
|
+
ModSpox.initialize_bot(Sequel.sqlite('test.db'))
|
20
|
+
rescue SQLite3::BusyException
|
21
|
+
ModSpox::Database.reconnect
|
22
|
+
retry
|
23
|
+
end
|
18
24
|
require 'mod_spox/Bot'
|
19
25
|
@bot = ModSpox::Bot.new
|
20
26
|
m = ModSpox::Models::Nick.find_or_create(:nick => 'mod_spox')
|
@@ -4,21 +4,41 @@ class TestCreatedHandler < Test::Unit::TestCase
|
|
4
4
|
|
5
5
|
def setup
|
6
6
|
h = BotHolder.instance
|
7
|
-
@bot = h.bot
|
7
|
+
@bot = h.bot
|
8
8
|
@test = {
|
9
9
|
:good => ':not.configured 003 spox :This server was created Tue Mar 24 2009 at 15:42:36 PDT',
|
10
10
|
:bad => ':fubared 003 fail whale'
|
11
11
|
}
|
12
|
+
@queue = Queue.new
|
13
|
+
@bot.pipeline.hook(self, :gather, 'ModSpox::Messages::Incoming::Created')
|
14
|
+
require 'mod_spox/handlers/Created'
|
15
|
+
@handler = ModSpox::Handlers::Created.new({})
|
12
16
|
end
|
13
17
|
|
14
|
-
def
|
15
|
-
|
16
|
-
assert_kind_of(ModSpox::Messages::Incoming::Created, @bot.factory.handlers[@bot.factory.find_key(@test[:good])].process(@test[:good]))
|
17
|
-
assert_equal(@test[:good], @bot.factory.handlers[@bot.factory.find_key(@test[:good])].process(@test[:good]).raw_content)
|
18
|
-
assert_kind_of(Time, @bot.factory.handlers[@bot.factory.find_key(@test[:good])].process(@test[:good]).date)
|
18
|
+
def gather(m)
|
19
|
+
@queue << m
|
19
20
|
end
|
20
|
-
|
21
|
+
|
22
|
+
def test_indirect
|
23
|
+
@bot.factory << @test[:good]
|
24
|
+
sleep(0.1)
|
25
|
+
assert_equal(1, @queue.size)
|
26
|
+
m = @queue.pop
|
27
|
+
check_result(m)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_direct
|
31
|
+
check_result(@handler.process(@test[:good]))
|
32
|
+
end
|
33
|
+
|
21
34
|
def test_unexpected
|
22
|
-
assert_raise(ModSpox::Exceptions::GeneralException)
|
35
|
+
assert_raise(ModSpox::Exceptions::GeneralException) do
|
36
|
+
@handler.process(@test[:bad])
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def check_result(m)
|
41
|
+
assert_kind_of(ModSpox::Messages::Incoming::Created, m)
|
42
|
+
assert_equal(m.raw_content, @test[:good])
|
23
43
|
end
|
24
44
|
end
|
data/tests/handlers/tc_Invite.rb
CHANGED
@@ -4,24 +4,20 @@ class TestInviteHandler < Test::Unit::TestCase
|
|
4
4
|
|
5
5
|
def setup
|
6
6
|
h = BotHolder.instance
|
7
|
-
@bot = h.bot
|
7
|
+
@bot = h.bot
|
8
8
|
@test = {
|
9
9
|
:good => ':spox!~spox@host INVITE spex :#m',
|
10
10
|
:bad => ':fail INVITE whale'
|
11
11
|
}
|
12
12
|
@queue = Queue.new
|
13
|
-
@bot.pipeline.hook(self, :gather,
|
13
|
+
@bot.pipeline.hook(self, :gather, 'ModSpox::Messages::Incoming::Invite')
|
14
|
+
require 'mod_spox/handlers/Invite'
|
15
|
+
@handler = ModSpox::Handlers::Invite.new({})
|
14
16
|
end
|
15
17
|
|
16
18
|
def gather(m)
|
17
19
|
@queue << m
|
18
20
|
end
|
19
|
-
|
20
|
-
def test_direct
|
21
|
-
assert_equal(:INVITE, @bot.factory.find_key(@test[:good]))
|
22
|
-
result = @bot.factory.handlers[@bot.factory.find_key(@test[:good])].process(@test[:good])
|
23
|
-
check_result(result)
|
24
|
-
end
|
25
21
|
|
26
22
|
def test_indirect
|
27
23
|
@bot.factory << @test[:good]
|
@@ -31,8 +27,14 @@ class TestInviteHandler < Test::Unit::TestCase
|
|
31
27
|
check_result(m)
|
32
28
|
end
|
33
29
|
|
30
|
+
def test_direct
|
31
|
+
check_result(@handler.process(@test[:good]))
|
32
|
+
end
|
33
|
+
|
34
34
|
def test_unexpected
|
35
|
-
assert_raise(ModSpox::Exceptions::GeneralException)
|
35
|
+
assert_raise(ModSpox::Exceptions::GeneralException) do
|
36
|
+
@handler.process(@test[:bad])
|
37
|
+
end
|
36
38
|
end
|
37
39
|
|
38
40
|
private
|
data/tests/handlers/tc_Join.rb
CHANGED
@@ -9,25 +9,45 @@ class TestJoinHandler < Test::Unit::TestCase
|
|
9
9
|
:good => ':mod_spox!~mod_spox@host JOIN :#m',
|
10
10
|
:bad => ':fubared JOIN fail whale'
|
11
11
|
}
|
12
|
+
@queue = Queue.new
|
13
|
+
@bot.pipeline.hook(self, :gather, 'ModSpox::Messages::Incoming::Join')
|
14
|
+
require 'mod_spox/handlers/Join'
|
15
|
+
@handler = ModSpox::Handlers::Join.new({})
|
12
16
|
end
|
13
17
|
|
14
|
-
def
|
15
|
-
|
16
|
-
result = @bot.factory.handlers[@bot.factory.find_key(@test[:good])].process(@test[:good])
|
17
|
-
assert_kind_of(ModSpox::Messages::Incoming::Join, result)
|
18
|
-
assert_equal(@test[:good], result.raw_content)
|
19
|
-
assert_kind_of(ModSpox::Models::Channel, result.channel)
|
20
|
-
assert_kind_of(ModSpox::Models::Nick, result.nick)
|
21
|
-
assert_equal('#m', result.channel.name)
|
22
|
-
assert_equal('mod_spox', result.nick.nick)
|
23
|
-
assert_equal('host', result.nick.host)
|
24
|
-
assert_equal('host', result.nick.address)
|
25
|
-
assert_equal('~mod_spox', result.nick.username)
|
26
|
-
assert_equal('mod_spox!~mod_spox@host', result.nick.source)
|
27
|
-
assert(result.nick.visible)
|
18
|
+
def gather(m)
|
19
|
+
@queue << m
|
28
20
|
end
|
29
|
-
|
21
|
+
|
22
|
+
def test_indirect
|
23
|
+
@bot.factory << @test[:good]
|
24
|
+
sleep(0.1)
|
25
|
+
assert_equal(1, @queue.size)
|
26
|
+
m = @queue.pop
|
27
|
+
check_result(m)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_direct
|
31
|
+
check_result(@handler.process(@test[:good]))
|
32
|
+
end
|
33
|
+
|
30
34
|
def test_unexpected
|
31
|
-
assert_raise(ModSpox::Exceptions::GeneralException)
|
35
|
+
assert_raise(ModSpox::Exceptions::GeneralException) do
|
36
|
+
@handler.process(@test[:bad])
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def check_result(m)
|
41
|
+
assert_kind_of(ModSpox::Messages::Incoming::Join, m)
|
42
|
+
assert_equal(m.raw_content, @test[:good])
|
43
|
+
assert_kind_of(ModSpox::Models::Channel, m.channel)
|
44
|
+
assert_kind_of(ModSpox::Models::Nick, m.nick)
|
45
|
+
assert_equal('#m', m.channel.name)
|
46
|
+
assert_equal('mod_spox', m.nick.nick)
|
47
|
+
assert_equal('host', m.nick.host)
|
48
|
+
assert_equal('host', m.nick.address)
|
49
|
+
assert_equal('~mod_spox', m.nick.username)
|
50
|
+
assert_equal('mod_spox!~mod_spox@host', m.nick.source)
|
51
|
+
assert(m.nick.visible)
|
32
52
|
end
|
33
53
|
end
|
data/tests/handlers/tc_Kick.rb
CHANGED
@@ -9,11 +9,35 @@ class TestKickHandler < Test::Unit::TestCase
|
|
9
9
|
:good => ':spax!~spox@host KICK #m spox :foo',
|
10
10
|
:bad => ':fubared KICK fail whale'
|
11
11
|
}
|
12
|
+
@queue = Queue.new
|
13
|
+
@bot.pipeline.hook(self, :gather, 'ModSpox::Messages::Incoming::Kick')
|
14
|
+
require 'mod_spox/handlers/Kick'
|
15
|
+
@handler = ModSpox::Handlers::Kick.new({})
|
12
16
|
end
|
13
17
|
|
14
|
-
def
|
15
|
-
|
16
|
-
|
18
|
+
def gather(m)
|
19
|
+
@queue << m
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_indirect
|
23
|
+
@bot.factory << @test[:good]
|
24
|
+
sleep(0.1)
|
25
|
+
assert_equal(1, @queue.size)
|
26
|
+
m = @queue.pop
|
27
|
+
check_result(m)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_direct
|
31
|
+
check_result(@handler.process(@test[:good]))
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_unexpected
|
35
|
+
assert_raise(ModSpox::Exceptions::GeneralException) do
|
36
|
+
@handler.process(@test[:bad])
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def check_result(result)
|
17
41
|
assert_kind_of(ModSpox::Messages::Incoming::Kick, result)
|
18
42
|
assert_equal(@test[:good], result.raw_content)
|
19
43
|
assert_kind_of(ModSpox::Models::Channel, result.channel)
|
@@ -26,7 +50,4 @@ class TestKickHandler < Test::Unit::TestCase
|
|
26
50
|
assert_equal('foo', result.reason)
|
27
51
|
end
|
28
52
|
|
29
|
-
def test_unexpected
|
30
|
-
assert_raise(ModSpox::Exceptions::GeneralException){@bot.factory.handlers[@bot.factory.find_key(@test[:bad])].process(@test[:bad])}
|
31
|
-
end
|
32
53
|
end
|
data/tests/handlers/tc_Mode.rb
CHANGED
@@ -12,11 +12,21 @@ class TestModeHandler < Test::Unit::TestCase
|
|
12
12
|
:set_self => ':mod_spox MODE mod_spox :+iw',
|
13
13
|
:bad => ':fubared MODE fail whale'
|
14
14
|
}
|
15
|
+
@queue = Queue.new
|
16
|
+
@bot.pipeline.hook(self, :gather, 'ModSpox::Messages::Incoming::Mode')
|
17
|
+
require 'mod_spox/handlers/Mode'
|
18
|
+
@handler = ModSpox::Handlers::Mode.new({})
|
15
19
|
end
|
16
20
|
|
17
|
-
def
|
18
|
-
|
19
|
-
|
21
|
+
def gather(m)
|
22
|
+
@queue << m
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_indirect
|
26
|
+
@bot.factory << @test[:set_single]
|
27
|
+
sleep(0.1)
|
28
|
+
assert_equal(1, @queue.size)
|
29
|
+
result = @queue.pop
|
20
30
|
assert_kind_of(ModSpox::Messages::Incoming::Mode, result)
|
21
31
|
assert_equal(@test[:set_single], result.raw_content)
|
22
32
|
assert_kind_of(ModSpox::Models::Channel, result.channel)
|
@@ -29,10 +39,9 @@ class TestModeHandler < Test::Unit::TestCase
|
|
29
39
|
assert_equal('+o', result.mode)
|
30
40
|
assert(result.target.is_op?(result.channel))
|
31
41
|
end
|
32
|
-
|
42
|
+
|
33
43
|
def test_double
|
34
|
-
|
35
|
-
result = @bot.factory.handlers[@bot.factory.find_key(@test[:set_double])].process(@test[:set_double])
|
44
|
+
result = @handler.process(@test[:set_double])
|
36
45
|
assert_kind_of(ModSpox::Messages::Incoming::Mode, result)
|
37
46
|
assert_equal(@test[:set_double], result.raw_content)
|
38
47
|
assert_kind_of(ModSpox::Models::Channel, result.channel)
|
@@ -47,10 +56,9 @@ class TestModeHandler < Test::Unit::TestCase
|
|
47
56
|
assert(result.target[0].is_op?(result.channel))
|
48
57
|
assert(result.target[1].is_op?(result.channel))
|
49
58
|
end
|
50
|
-
|
59
|
+
|
51
60
|
def test_channel
|
52
|
-
|
53
|
-
result = @bot.factory.handlers[@bot.factory.find_key(@test[:set_channel])].process(@test[:set_channel])
|
61
|
+
result = @handler.process(@test[:set_channel])
|
54
62
|
assert_kind_of(ModSpox::Messages::Incoming::Mode, result)
|
55
63
|
assert_equal(@test[:set_channel], result.raw_content)
|
56
64
|
assert_kind_of(ModSpox::Models::Channel, result.channel)
|
@@ -64,8 +72,7 @@ class TestModeHandler < Test::Unit::TestCase
|
|
64
72
|
end
|
65
73
|
|
66
74
|
def test_self
|
67
|
-
|
68
|
-
result = @bot.factory.handlers[@bot.factory.find_key(@test[:set_self])].process(@test[:set_self])
|
75
|
+
result = @handler.process(@test[:set_self])
|
69
76
|
assert_kind_of(ModSpox::Messages::Incoming::Mode, result)
|
70
77
|
assert_equal(@test[:set_self], result.raw_content)
|
71
78
|
assert_nil(result.channel)
|
@@ -78,8 +85,11 @@ class TestModeHandler < Test::Unit::TestCase
|
|
78
85
|
assert(result.target.mode_set?('i'))
|
79
86
|
assert(result.target.mode_set?('w'))
|
80
87
|
end
|
81
|
-
|
88
|
+
|
82
89
|
def test_unexpected
|
83
|
-
assert_raise(ModSpox::Exceptions::GeneralException)
|
90
|
+
assert_raise(ModSpox::Exceptions::GeneralException) do
|
91
|
+
@handler.process(@test[:bad])
|
92
|
+
end
|
84
93
|
end
|
94
|
+
|
85
95
|
end
|
data/tests/handlers/tc_Names.rb
CHANGED
@@ -10,13 +10,37 @@ class TestNamesHandler < Test::Unit::TestCase
|
|
10
10
|
:names_end => ':swiftco.wa.us.dal.net 366 spox #mod_spox :End of /NAMES list.',
|
11
11
|
:bad => ':fubared 353 fail whale'
|
12
12
|
}
|
13
|
+
@queue = Queue.new
|
14
|
+
@bot.pipeline.hook(self, :gather, 'ModSpox::Messages::Incoming::Names')
|
15
|
+
require 'mod_spox/handlers/Names'
|
16
|
+
@handler = ModSpox::Handlers::Names.new({})
|
13
17
|
end
|
14
18
|
|
15
|
-
def
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
19
|
+
def gather(m)
|
20
|
+
@queue << m
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_indirect
|
24
|
+
@bot.factory << @test[:names_start]
|
25
|
+
@bot.factory << @test[:names_end]
|
26
|
+
sleep(0.1)
|
27
|
+
assert_equal(1, @queue.size)
|
28
|
+
m = @queue.pop
|
29
|
+
check_result(m)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_direct
|
33
|
+
assert_nil(@handler.process(@test[:names_start]))
|
34
|
+
check_result(@handler.process(@test[:names_end]))
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_unexpected
|
38
|
+
assert_raise(ModSpox::Exceptions::GeneralException) do
|
39
|
+
@handler.process(@test[:bad])
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def check_result(result)
|
20
44
|
assert_kind_of(ModSpox::Messages::Incoming::Names, result)
|
21
45
|
assert_equal('#mod_spox', result.channel.name)
|
22
46
|
assert_equal(5, result.nicks.size)
|
@@ -28,8 +52,4 @@ class TestNamesHandler < Test::Unit::TestCase
|
|
28
52
|
assert(!ModSpox::Models::Nick.find_or_create(:nick => 'pizza__').is_op?(result.channel))
|
29
53
|
assert(ModSpox::Models::Nick.find_or_create(:nick => 'spex').is_voice?(result.channel))
|
30
54
|
end
|
31
|
-
|
32
|
-
def test_unexpected
|
33
|
-
assert_raise(ModSpox::Exceptions::GeneralException){@bot.factory.handlers[@bot.factory.find_key(@test[:bad])].process(@test[:bad])}
|
34
|
-
end
|
35
55
|
end
|
data/tests/handlers/tc_Nick.rb
CHANGED
@@ -10,16 +10,42 @@ class TestNickHandler < Test::Unit::TestCase
|
|
10
10
|
:bad => ':bad NICK fail'
|
11
11
|
}
|
12
12
|
@nick = ModSpox::Models::Nick.find_or_create(:nick => 'spox')
|
13
|
+
@queue = Queue.new
|
14
|
+
@bot.pipeline.hook(self, :gather, 'ModSpox::Messages::Incoming::Nick')
|
15
|
+
require 'mod_spox/handlers/Nick'
|
16
|
+
@handler = ModSpox::Handlers::Nick.new({})
|
13
17
|
end
|
14
18
|
|
15
|
-
def
|
16
|
-
|
19
|
+
def gather(m)
|
20
|
+
@queue << m
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_indirect
|
24
|
+
@bot.factory << @test[:good]
|
25
|
+
sleep(0.1)
|
26
|
+
assert_equal(1, @queue.size)
|
27
|
+
m = @queue.pop
|
28
|
+
check_result(m)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_direct
|
32
|
+
check_result(@handler.process(@test[:good]))
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_unexpected
|
36
|
+
assert_raise(ModSpox::Exceptions::GeneralException) do
|
37
|
+
@handler.process(@test[:bad])
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def check_result(m)
|
17
42
|
assert_kind_of(ModSpox::Messages::Incoming::Nick, m)
|
18
43
|
assert_equal(@test[:good], m.raw_content)
|
19
44
|
assert_kind_of(ModSpox::Models::Nick, m.new_nick)
|
20
45
|
assert_kind_of(ModSpox::Models::Nick, m.original_nick)
|
21
46
|
assert_equal('spox', m.original_nick.nick)
|
22
47
|
assert_equal('flock_of_deer', m.new_nick.nick)
|
48
|
+
assert_equal(m.raw_content, @test[:good])
|
23
49
|
end
|
24
50
|
|
25
51
|
def test_info_move
|
@@ -27,7 +53,7 @@ class TestNickHandler < Test::Unit::TestCase
|
|
27
53
|
@nick.username = '~spox'
|
28
54
|
@nick.real_name = 'foobar'
|
29
55
|
@nick.save
|
30
|
-
m = @
|
56
|
+
m = @handler.process(@test[:good])
|
31
57
|
assert_kind_of(ModSpox::Messages::Incoming::Nick, m)
|
32
58
|
assert_equal('spox', m.original_nick.nick)
|
33
59
|
assert_equal('flock_of_deer', m.new_nick.nick)
|
@@ -41,15 +67,11 @@ class TestNickHandler < Test::Unit::TestCase
|
|
41
67
|
@nick.add_channel(c)
|
42
68
|
mode = ModSpox::Models::NickMode.find_or_create(:nick_id => @nick.pk, :channel_id => c.pk)
|
43
69
|
mode.set_mode('o')
|
44
|
-
m = @
|
70
|
+
m = @handler.process(@test[:good])
|
45
71
|
assert_kind_of(ModSpox::Messages::Incoming::Nick, m)
|
46
72
|
assert_equal(0, m.original_nick.channels.size)
|
47
73
|
assert(m.new_nick.channels.size > 0)
|
48
74
|
assert(m.new_nick.channels.include?(c))
|
49
75
|
assert(m.new_nick.is_op?(c))
|
50
76
|
end
|
51
|
-
|
52
|
-
def test_unexpected
|
53
|
-
assert_raise(ModSpox::Exceptions::GeneralException){@bot.factory.handlers[@bot.factory.find_key(@test[:bad])].process(@test[:bad])}
|
54
|
-
end
|
55
77
|
end
|
data/tests/handlers/tc_Part.rb
CHANGED
@@ -10,35 +10,45 @@ class TestPartHandler < Test::Unit::TestCase
|
|
10
10
|
:wo_message => ':mod_spox!~mod_spox@host PART #m :',
|
11
11
|
:bad => ':bad PART fail'
|
12
12
|
}
|
13
|
+
@queue = Queue.new
|
14
|
+
@bot.pipeline.hook(self, :gather, 'ModSpox::Messages::Incoming::Part')
|
15
|
+
require 'mod_spox/handlers/Part'
|
16
|
+
@handler = ModSpox::Handlers::Part.new({})
|
13
17
|
end
|
14
18
|
|
15
|
-
def
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
assert_equal('part message',
|
19
|
+
def gather(m)
|
20
|
+
@queue << m
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_indirect
|
24
|
+
@bot.factory << @test[:w_message]
|
25
|
+
sleep(0.1)
|
26
|
+
assert_equal(1, @queue.size)
|
27
|
+
m = @queue.pop
|
28
|
+
check_result(m)
|
29
|
+
assert_equal('part message', m.reason)
|
30
|
+
assert_equal(m.raw_content, @test[:w_message])
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_direct
|
34
|
+
m = @handler.process(@test[:wo_message])
|
35
|
+
check_result(m)
|
36
|
+
assert(m.reason.empty?)
|
37
|
+
assert_equal(m.raw_content, @test[:wo_message])
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_unexpected
|
41
|
+
assert_raise(ModSpox::Exceptions::GeneralException) do
|
42
|
+
@handler.process(@test[:bad])
|
43
|
+
end
|
26
44
|
end
|
27
45
|
|
28
|
-
def
|
29
|
-
assert_equal(:PART, @bot.factory.find_key(@test[:wo_message]))
|
30
|
-
result = @bot.factory.handlers[@bot.factory.find_key(@test[:wo_message])].process(@test[:wo_message])
|
46
|
+
def check_result(result)
|
31
47
|
assert_kind_of(ModSpox::Messages::Incoming::Part, result)
|
32
|
-
assert_equal(@test[:wo_message], result.raw_content)
|
33
48
|
assert_kind_of(String, result.reason)
|
34
49
|
assert_kind_of(ModSpox::Models::Nick, result.nick)
|
35
50
|
assert_kind_of(ModSpox::Models::Channel, result.channel)
|
36
51
|
assert_equal('mod_spox', result.nick.nick)
|
37
52
|
assert_equal('#m', result.channel.name)
|
38
|
-
assert(result.reason.empty?)
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_unexpected
|
42
|
-
assert_raise(ModSpox::Exceptions::GeneralException){@bot.factory.handlers[@bot.factory.find_key(@test[:bad])].process(@test[:bad])}
|
43
53
|
end
|
44
54
|
end
|