spox-mod_spox 0.3.1
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 +174 -0
- data/INSTALL +15 -0
- data/LICENSE +674 -0
- data/README.rdoc +73 -0
- data/bin/mod_spox +112 -0
- data/data/mod_spox/extras/AOLSpeak.rb +257 -0
- data/data/mod_spox/extras/AutoKick.rb +152 -0
- data/data/mod_spox/extras/AutoMode.rb +122 -0
- data/data/mod_spox/extras/AutoRejoin.rb +37 -0
- data/data/mod_spox/extras/Bash.rb +55 -0
- data/data/mod_spox/extras/Bouncer.rb +220 -0
- data/data/mod_spox/extras/Bullshit.rb +19 -0
- data/data/mod_spox/extras/Bytes.rb +11 -0
- data/data/mod_spox/extras/Confess.rb +244 -0
- data/data/mod_spox/extras/DCC.rb +182 -0
- data/data/mod_spox/extras/DevWatch.rb +153 -0
- data/data/mod_spox/extras/DownForEveryoneOrJustMe.rb +47 -0
- data/data/mod_spox/extras/EightBall.rb +33 -0
- data/data/mod_spox/extras/FML.rb +35 -0
- data/data/mod_spox/extras/FloodKicker.rb +129 -0
- data/data/mod_spox/extras/Fortune.rb +76 -0
- data/data/mod_spox/extras/GoogleIt.rb +13 -0
- data/data/mod_spox/extras/Headers.rb +59 -0
- data/data/mod_spox/extras/Karma.rb +302 -0
- data/data/mod_spox/extras/Locator.rb +44 -0
- data/data/mod_spox/extras/Logger.rb +182 -0
- data/data/mod_spox/extras/LolSpeak.rb +21 -0
- data/data/mod_spox/extras/NickServ.rb +84 -0
- data/data/mod_spox/extras/PhpCli.rb +308 -0
- data/data/mod_spox/extras/PhpFuncLookup.rb +297 -0
- data/data/mod_spox/extras/Pinger.rb +11 -0
- data/data/mod_spox/extras/Quotes.rb +79 -0
- data/data/mod_spox/extras/RegexTracker.rb +158 -0
- data/data/mod_spox/extras/Roulette.rb +267 -0
- data/data/mod_spox/extras/RubyCli.rb +93 -0
- data/data/mod_spox/extras/Search.rb +49 -0
- data/data/mod_spox/extras/Seen.rb +150 -0
- data/data/mod_spox/extras/Slashdot.rb +35 -0
- data/data/mod_spox/extras/SlashdotHeadlineGenerator.rb +500 -0
- data/data/mod_spox/extras/Talk.rb +32 -0
- data/data/mod_spox/extras/Topten.rb +103 -0
- data/data/mod_spox/extras/TracTicket.rb +66 -0
- data/data/mod_spox/extras/Translate.rb +132 -0
- data/data/mod_spox/extras/Twitter.rb +458 -0
- data/data/mod_spox/extras/UrbanDictionary.rb +55 -0
- data/data/mod_spox/extras/Weather.rb +55 -0
- data/data/mod_spox/plugins/Authenticator.rb +289 -0
- data/data/mod_spox/plugins/Banner.rb +585 -0
- data/data/mod_spox/plugins/BotNick.rb +18 -0
- data/data/mod_spox/plugins/Helper.rb +49 -0
- data/data/mod_spox/plugins/Initializer.rb +35 -0
- data/data/mod_spox/plugins/Joiner.rb +23 -0
- data/data/mod_spox/plugins/Nicker.rb +14 -0
- data/data/mod_spox/plugins/Parter.rb +23 -0
- data/data/mod_spox/plugins/Permissions.rb +60 -0
- data/data/mod_spox/plugins/PluginLoader.rb +180 -0
- data/data/mod_spox/plugins/Ponger.rb +70 -0
- data/data/mod_spox/plugins/PoolConfig.rb +52 -0
- data/data/mod_spox/plugins/Quitter.rb +15 -0
- data/data/mod_spox/plugins/Servers.rb +57 -0
- data/data/mod_spox/plugins/Status.rb +31 -0
- data/data/mod_spox/plugins/Triggers.rb +85 -0
- data/lib/mod_spox/BaseConfig.rb +51 -0
- data/lib/mod_spox/Bot.rb +604 -0
- data/lib/mod_spox/BotConfig.rb +65 -0
- data/lib/mod_spox/ConfigurationWizard.rb +180 -0
- data/lib/mod_spox/Database.rb +51 -0
- data/lib/mod_spox/Exceptions.rb +84 -0
- data/lib/mod_spox/Helpers.rb +122 -0
- data/lib/mod_spox/Loader.rb +60 -0
- data/lib/mod_spox/Logger.rb +37 -0
- data/lib/mod_spox/MessageFactory.rb +112 -0
- data/lib/mod_spox/Pipeline.rb +207 -0
- data/lib/mod_spox/Plugin.rb +97 -0
- data/lib/mod_spox/PluginHolder.rb +22 -0
- data/lib/mod_spox/PluginManager.rb +257 -0
- data/lib/mod_spox/PriorityQueue.rb +69 -0
- data/lib/mod_spox/Socket.rb +201 -0
- data/lib/mod_spox/Sockets.rb +226 -0
- data/lib/mod_spox/Timer.rb +60 -0
- data/lib/mod_spox/Version.rb +14 -0
- data/lib/mod_spox/handlers/BadNick.rb +19 -0
- data/lib/mod_spox/handlers/Bounce.rb +24 -0
- data/lib/mod_spox/handlers/Created.rb +27 -0
- data/lib/mod_spox/handlers/Handler.rb +39 -0
- data/lib/mod_spox/handlers/Invite.rb +28 -0
- data/lib/mod_spox/handlers/Join.rb +38 -0
- data/lib/mod_spox/handlers/Kick.rb +36 -0
- data/lib/mod_spox/handlers/LuserChannels.rb +19 -0
- data/lib/mod_spox/handlers/LuserClient.rb +18 -0
- data/lib/mod_spox/handlers/LuserMe.rb +16 -0
- data/lib/mod_spox/handlers/LuserOp.rb +19 -0
- data/lib/mod_spox/handlers/LuserUnknown.rb +19 -0
- data/lib/mod_spox/handlers/Mode.rb +62 -0
- data/lib/mod_spox/handlers/Motd.rb +38 -0
- data/lib/mod_spox/handlers/MyInfo.rb +24 -0
- data/lib/mod_spox/handlers/Names.rb +86 -0
- data/lib/mod_spox/handlers/Nick.rb +50 -0
- data/lib/mod_spox/handlers/NickInUse.rb +19 -0
- data/lib/mod_spox/handlers/Notice.rb +35 -0
- data/lib/mod_spox/handlers/Part.rb +39 -0
- data/lib/mod_spox/handlers/Ping.rb +25 -0
- data/lib/mod_spox/handlers/Pong.rb +23 -0
- data/lib/mod_spox/handlers/Privmsg.rb +39 -0
- data/lib/mod_spox/handlers/Quit.rb +29 -0
- data/lib/mod_spox/handlers/Topic.rb +38 -0
- data/lib/mod_spox/handlers/Welcome.rb +30 -0
- data/lib/mod_spox/handlers/Who.rb +83 -0
- data/lib/mod_spox/handlers/Whois.rb +117 -0
- data/lib/mod_spox/handlers/YourHost.rb +20 -0
- data/lib/mod_spox/messages/Messages.rb +6 -0
- data/lib/mod_spox/messages/incoming/BadNick.rb +16 -0
- data/lib/mod_spox/messages/incoming/Bounce.rb +18 -0
- data/lib/mod_spox/messages/incoming/Created.rb +15 -0
- data/lib/mod_spox/messages/incoming/Invite.rb +21 -0
- data/lib/mod_spox/messages/incoming/Join.rb +19 -0
- data/lib/mod_spox/messages/incoming/Kick.rb +26 -0
- data/lib/mod_spox/messages/incoming/LuserChannels.rb +15 -0
- data/lib/mod_spox/messages/incoming/LuserClient.rb +24 -0
- data/lib/mod_spox/messages/incoming/LuserMe.rb +18 -0
- data/lib/mod_spox/messages/incoming/LuserOp.rb +15 -0
- data/lib/mod_spox/messages/incoming/LuserUnknown.rb +15 -0
- data/lib/mod_spox/messages/incoming/Message.rb +22 -0
- data/lib/mod_spox/messages/incoming/Mode.rb +42 -0
- data/lib/mod_spox/messages/incoming/Motd.rb +18 -0
- data/lib/mod_spox/messages/incoming/MyInfo.rb +24 -0
- data/lib/mod_spox/messages/incoming/Names.rb +24 -0
- data/lib/mod_spox/messages/incoming/Nick.rb +26 -0
- data/lib/mod_spox/messages/incoming/NickInUse.rb +15 -0
- data/lib/mod_spox/messages/incoming/Notice.rb +9 -0
- data/lib/mod_spox/messages/incoming/Part.rb +21 -0
- data/lib/mod_spox/messages/incoming/Ping.rb +18 -0
- data/lib/mod_spox/messages/incoming/Pong.rb +9 -0
- data/lib/mod_spox/messages/incoming/Privmsg.rb +90 -0
- data/lib/mod_spox/messages/incoming/Quit.rb +18 -0
- data/lib/mod_spox/messages/incoming/Topic.rb +21 -0
- data/lib/mod_spox/messages/incoming/TopicInfo.rb +21 -0
- data/lib/mod_spox/messages/incoming/Welcome.rb +27 -0
- data/lib/mod_spox/messages/incoming/Who.rb +18 -0
- data/lib/mod_spox/messages/incoming/Whois.rb +49 -0
- data/lib/mod_spox/messages/incoming/YourHost.rb +18 -0
- data/lib/mod_spox/messages/internal/BotInitialized.rb +11 -0
- data/lib/mod_spox/messages/internal/ChangeNick.rb +15 -0
- data/lib/mod_spox/messages/internal/Connected.rb +20 -0
- data/lib/mod_spox/messages/internal/ConnectionFailed.rb +23 -0
- data/lib/mod_spox/messages/internal/DCCListener.rb +12 -0
- data/lib/mod_spox/messages/internal/DCCRequest.rb +12 -0
- data/lib/mod_spox/messages/internal/DCCSocket.rb +19 -0
- data/lib/mod_spox/messages/internal/Disconnected.rb +8 -0
- data/lib/mod_spox/messages/internal/Disconnecting.rb +8 -0
- data/lib/mod_spox/messages/internal/EstablishConnection.rb +22 -0
- data/lib/mod_spox/messages/internal/HaltBot.rb +8 -0
- data/lib/mod_spox/messages/internal/NickRequest.rb +9 -0
- data/lib/mod_spox/messages/internal/NickResponse.rb +15 -0
- data/lib/mod_spox/messages/internal/PluginLoadRequest.rb +21 -0
- data/lib/mod_spox/messages/internal/PluginLoadResponse.rb +17 -0
- data/lib/mod_spox/messages/internal/PluginModuleRequest.rb +14 -0
- data/lib/mod_spox/messages/internal/PluginModuleResponse.rb +18 -0
- data/lib/mod_spox/messages/internal/PluginReload.rb +18 -0
- data/lib/mod_spox/messages/internal/PluginRequest.rb +18 -0
- data/lib/mod_spox/messages/internal/PluginResponse.rb +21 -0
- data/lib/mod_spox/messages/internal/PluginUnloadRequest.rb +9 -0
- data/lib/mod_spox/messages/internal/PluginUnloadResponse.rb +9 -0
- data/lib/mod_spox/messages/internal/PluginsReady.rb +10 -0
- data/lib/mod_spox/messages/internal/QueueSocket.rb +8 -0
- data/lib/mod_spox/messages/internal/Reconnect.rb +8 -0
- data/lib/mod_spox/messages/internal/Request.rb +15 -0
- data/lib/mod_spox/messages/internal/Response.rb +15 -0
- data/lib/mod_spox/messages/internal/Shutdown.rb +8 -0
- data/lib/mod_spox/messages/internal/SignaturesUpdate.rb +8 -0
- data/lib/mod_spox/messages/internal/StatusRequest.rb +10 -0
- data/lib/mod_spox/messages/internal/StatusResponse.rb +18 -0
- data/lib/mod_spox/messages/internal/TimerAdd.rb +36 -0
- data/lib/mod_spox/messages/internal/TimerClear.rb +16 -0
- data/lib/mod_spox/messages/internal/TimerRemove.rb +23 -0
- data/lib/mod_spox/messages/internal/TimerResponse.rb +34 -0
- data/lib/mod_spox/messages/internal/TriggersUpdate.rb +8 -0
- data/lib/mod_spox/messages/internal/UnqueueSocket.rb +8 -0
- data/lib/mod_spox/messages/outgoing/Admin.rb +15 -0
- data/lib/mod_spox/messages/outgoing/Away.rb +11 -0
- data/lib/mod_spox/messages/outgoing/ChannelMode.rb +25 -0
- data/lib/mod_spox/messages/outgoing/Connect.rb +24 -0
- data/lib/mod_spox/messages/outgoing/Die.rb +9 -0
- data/lib/mod_spox/messages/outgoing/Info.rb +15 -0
- data/lib/mod_spox/messages/outgoing/Invite.rb +19 -0
- data/lib/mod_spox/messages/outgoing/Ison.rb +15 -0
- data/lib/mod_spox/messages/outgoing/Join.rb +19 -0
- data/lib/mod_spox/messages/outgoing/Kick.rb +23 -0
- data/lib/mod_spox/messages/outgoing/Kill.rb +19 -0
- data/lib/mod_spox/messages/outgoing/Links.rb +19 -0
- data/lib/mod_spox/messages/outgoing/List.rb +19 -0
- data/lib/mod_spox/messages/outgoing/Lusers.rb +19 -0
- data/lib/mod_spox/messages/outgoing/Motd.rb +16 -0
- data/lib/mod_spox/messages/outgoing/Names.rb +20 -0
- data/lib/mod_spox/messages/outgoing/Nick.rb +16 -0
- data/lib/mod_spox/messages/outgoing/Notice.rb +12 -0
- data/lib/mod_spox/messages/outgoing/Oper.rb +19 -0
- data/lib/mod_spox/messages/outgoing/Part.rb +19 -0
- data/lib/mod_spox/messages/outgoing/Pass.rb +16 -0
- data/lib/mod_spox/messages/outgoing/Ping.rb +11 -0
- data/lib/mod_spox/messages/outgoing/Pong.rb +17 -0
- data/lib/mod_spox/messages/outgoing/Privmsg.rb +43 -0
- data/lib/mod_spox/messages/outgoing/Quit.rb +11 -0
- data/lib/mod_spox/messages/outgoing/Raw.rb +16 -0
- data/lib/mod_spox/messages/outgoing/Rehash.rb +9 -0
- data/lib/mod_spox/messages/outgoing/Restart.rb +9 -0
- data/lib/mod_spox/messages/outgoing/ServList.rb +19 -0
- data/lib/mod_spox/messages/outgoing/Simple.rb +12 -0
- data/lib/mod_spox/messages/outgoing/Squery.rb +19 -0
- data/lib/mod_spox/messages/outgoing/Squit.rb +19 -0
- data/lib/mod_spox/messages/outgoing/Stats.rb +18 -0
- data/lib/mod_spox/messages/outgoing/Summon.rb +23 -0
- data/lib/mod_spox/messages/outgoing/Time.rb +15 -0
- data/lib/mod_spox/messages/outgoing/Topic.rb +19 -0
- data/lib/mod_spox/messages/outgoing/Trace.rb +15 -0
- data/lib/mod_spox/messages/outgoing/Unaway.rb +9 -0
- data/lib/mod_spox/messages/outgoing/User.rb +23 -0
- data/lib/mod_spox/messages/outgoing/UserHost.rb +15 -0
- data/lib/mod_spox/messages/outgoing/UserMode.rb +19 -0
- data/lib/mod_spox/messages/outgoing/Users.rb +15 -0
- data/lib/mod_spox/messages/outgoing/Version.rb +16 -0
- data/lib/mod_spox/messages/outgoing/Who.rb +23 -0
- data/lib/mod_spox/messages/outgoing/WhoWas.rb +23 -0
- data/lib/mod_spox/messages/outgoing/Whois.rb +19 -0
- data/lib/mod_spox/migrations/001_initialize_models.rb +115 -0
- data/lib/mod_spox/migrations/002_persistent_sigs.rb +14 -0
- data/lib/mod_spox/migrations/003_auth_restructure.rb +31 -0
- data/lib/mod_spox/migrations/004_mode_index_fix.rb +18 -0
- data/lib/mod_spox/migrations/005_nick_mode_nopark.rb +18 -0
- data/lib/mod_spox/models/Auth.rb +65 -0
- data/lib/mod_spox/models/AuthMask.rb +13 -0
- data/lib/mod_spox/models/Channel.rb +89 -0
- data/lib/mod_spox/models/Config.rb +30 -0
- data/lib/mod_spox/models/Group.rb +30 -0
- data/lib/mod_spox/models/Models.rb +4 -0
- data/lib/mod_spox/models/Nick.rb +195 -0
- data/lib/mod_spox/models/NickMode.rb +32 -0
- data/lib/mod_spox/models/Server.rb +27 -0
- data/lib/mod_spox/models/Setting.rb +52 -0
- data/lib/mod_spox/models/Signature.rb +52 -0
- data/lib/mod_spox/models/Trigger.rb +9 -0
- data/lib/mod_spox/rfc2812.rb +49 -0
- data/populate_gemspec.rb +15 -0
- data/tests/BotHolder.rb +24 -0
- data/tests/handlers/tc_BadNick.rb +21 -0
- data/tests/handlers/tc_Created.rb +24 -0
- data/tests/handlers/tc_Invite.rb +50 -0
- data/tests/handlers/tc_Join.rb +33 -0
- data/tests/handlers/tc_Kick.rb +32 -0
- data/tests/handlers/tc_Mode.rb +85 -0
- data/tests/handlers/tc_Names.rb +35 -0
- data/tests/handlers/tc_Nick.rb +55 -0
- data/tests/handlers/tc_Part.rb +44 -0
- data/tests/handlers/tc_Ping.rb +40 -0
- data/tests/handlers/tc_Pong.rb +28 -0
- data/tests/handlers/tc_Privmsg.rb +85 -0
- data/tests/handlers/tc_Quit.rb +40 -0
- data/tests/handlers/tc_Who.rb +50 -0
- data/tests/handlers/tc_Whois.rb +61 -0
- data/tests/models/tc_Auth.rb +39 -0
- data/tests/models/tc_Channel.rb +52 -0
- data/tests/models/tc_Config.rb +19 -0
- data/tests/models/tc_Nick.rb +144 -0
- data/tests/models/tc_NickMode.rb +40 -0
- data/tests/models/tc_Setting.rb +21 -0
- data/tests/models/tc_Signature.rb +14 -0
- data/tests/run_tests.rb +6 -0
- metadata +362 -0
data/tests/BotHolder.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
['sequel', 'thread', 'etc', 'getoptlong', 'logger'].each{|f|require f}
|
2
|
+
# lets get sequel setup like we want it #
|
3
|
+
require 'sequel/extensions/migration'
|
4
|
+
Sequel::Model.plugin :validation_helpers
|
5
|
+
Sequel::Model.plugin :schema
|
6
|
+
Sequel::Model.unrestrict_primary_key
|
7
|
+
require 'mod_spox/Version'
|
8
|
+
require 'mod_spox/Loader'
|
9
|
+
require 'test/unit'
|
10
|
+
require 'singleton'
|
11
|
+
|
12
|
+
class BotHolder
|
13
|
+
include Singleton
|
14
|
+
attr_reader :bot
|
15
|
+
def initialize
|
16
|
+
ModSpox::Database.db = nil
|
17
|
+
ModSpox.initialize_bot(Sequel.sqlite('test.db'))
|
18
|
+
require 'mod_spox/Bot'
|
19
|
+
@bot = ModSpox::Bot.new
|
20
|
+
m = ModSpox::Models::Nick.find_or_create(:nick => 'mod_spox')
|
21
|
+
m.update(:botnick => true)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../BotHolder.rb"
|
2
|
+
|
3
|
+
class TestBadNickHandler < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
h = BotHolder.instance
|
6
|
+
@bot = h.bot
|
7
|
+
@test = {:good => 'fail', :bad => 'fail'}
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
#nothing#
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_expected
|
15
|
+
assert_kind_of(ModSpox::Messages::Incoming::BadNick, @bot.factory.handlers[@bot.factory.find_key(@test[:good])].process(@test[:good]))
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_unexpected
|
19
|
+
assert_raise(ModSpox::Exceptions::GeneralException){@bot.factory.handlers[@bot.factory.find_key(@test[:bad])].process(@test[:bad])}
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../BotHolder.rb"
|
2
|
+
|
3
|
+
class TestCreatedHandler < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
h = BotHolder.instance
|
7
|
+
@bot = h.bot
|
8
|
+
@test = {
|
9
|
+
:good => ':not.configured 003 spox :This server was created Tue Mar 24 2009 at 15:42:36 PDT',
|
10
|
+
:bad => ':fubared 003 fail whale'
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_expected
|
15
|
+
assert_equal('003', @bot.factory.find_key(@test[:good]))
|
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)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_unexpected
|
22
|
+
assert_raise(ModSpox::Exceptions::GeneralException){@bot.factory.handlers[@bot.factory.find_key(@test[:bad])].process(@test[:bad])}
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../BotHolder.rb"
|
2
|
+
|
3
|
+
class TestInviteHandler < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
h = BotHolder.instance
|
7
|
+
@bot = h.bot
|
8
|
+
@test = {
|
9
|
+
:good => ':spox!~spox@host INVITE spex :#m',
|
10
|
+
:bad => ':fail INVITE whale'
|
11
|
+
}
|
12
|
+
@queue = Queue.new
|
13
|
+
@bot.pipeline.hook(self, :gather, :Incoming_Invite)
|
14
|
+
end
|
15
|
+
|
16
|
+
def gather(m)
|
17
|
+
@queue << m
|
18
|
+
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
|
+
|
26
|
+
def test_indirect
|
27
|
+
@bot.factory << @test[:good]
|
28
|
+
sleep(0.1)
|
29
|
+
assert_equal(1, @queue.size)
|
30
|
+
m = @queue.pop
|
31
|
+
check_result(m)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_unexpected
|
35
|
+
assert_raise(ModSpox::Exceptions::GeneralException){@bot.factory.handlers[@bot.factory.find_key(@test[:bad])].process(@test[:bad])}
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def check_result(m)
|
41
|
+
assert_kind_of(ModSpox::Messages::Incoming::Invite, m)
|
42
|
+
assert_kind_of(ModSpox::Models::Nick, m.source)
|
43
|
+
assert_kind_of(ModSpox::Models::Nick, m.target)
|
44
|
+
assert_kind_of(ModSpox::Models::Channel, m.channel)
|
45
|
+
assert_equal('spox', m.source.nick)
|
46
|
+
assert_equal('spex', m.target.nick)
|
47
|
+
assert_equal('#m', m.channel.name)
|
48
|
+
assert_equal(@test[:good], m.raw_content)
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../BotHolder.rb"
|
2
|
+
|
3
|
+
class TestJoinHandler < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
h = BotHolder.instance
|
7
|
+
@bot = h.bot
|
8
|
+
@test = {
|
9
|
+
:good => ':mod_spox!~mod_spox@host JOIN :#m',
|
10
|
+
:bad => ':fubared JOIN fail whale'
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_expected
|
15
|
+
assert_equal(:JOIN, @bot.factory.find_key(@test[:good]))
|
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)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_unexpected
|
31
|
+
assert_raise(ModSpox::Exceptions::GeneralException){@bot.factory.handlers[@bot.factory.find_key(@test[:bad])].process(@test[:bad])}
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../BotHolder.rb"
|
2
|
+
|
3
|
+
class TestKickHandler < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
h = BotHolder.instance
|
7
|
+
@bot = h.bot
|
8
|
+
@test = {
|
9
|
+
:good => ':spax!~spox@host KICK #m spox :foo',
|
10
|
+
:bad => ':fubared KICK fail whale'
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_expected
|
15
|
+
assert_equal(:KICK, @bot.factory.find_key(@test[:good]))
|
16
|
+
result = @bot.factory.handlers[@bot.factory.find_key(@test[:good])].process(@test[:good])
|
17
|
+
assert_kind_of(ModSpox::Messages::Incoming::Kick, result)
|
18
|
+
assert_equal(@test[:good], result.raw_content)
|
19
|
+
assert_kind_of(ModSpox::Models::Channel, result.channel)
|
20
|
+
assert_equal('#m', result.channel.name)
|
21
|
+
assert_kind_of(ModSpox::Models::Nick, result.kickee)
|
22
|
+
assert_equal('spox', result.kickee.nick)
|
23
|
+
assert_kind_of(ModSpox::Models::Nick, result.kicker)
|
24
|
+
assert_equal('spax', result.kicker.nick)
|
25
|
+
assert_kind_of(String, result.reason)
|
26
|
+
assert_equal('foo', result.reason)
|
27
|
+
end
|
28
|
+
|
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
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../BotHolder.rb"
|
2
|
+
|
3
|
+
class TestModeHandler < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
h = BotHolder.instance
|
7
|
+
@bot = h.bot
|
8
|
+
@test = {
|
9
|
+
:set_single => ':spax!~spox@host MODE #m +o spax',
|
10
|
+
:set_double => ':spax!~spox@host MODE #m +oo spax spex',
|
11
|
+
:set_channel => ':spax!~spox@host MODE #m +s',
|
12
|
+
:set_self => ':mod_spox MODE mod_spox :+iw',
|
13
|
+
:bad => ':fubared MODE fail whale'
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_single
|
18
|
+
assert_equal(:MODE, @bot.factory.find_key(@test[:set_single]))
|
19
|
+
result = @bot.factory.handlers[@bot.factory.find_key(@test[:set_single])].process(@test[:set_single])
|
20
|
+
assert_kind_of(ModSpox::Messages::Incoming::Mode, result)
|
21
|
+
assert_equal(@test[:set_single], result.raw_content)
|
22
|
+
assert_kind_of(ModSpox::Models::Channel, result.channel)
|
23
|
+
assert_equal('#m', result.channel.name)
|
24
|
+
assert_kind_of(ModSpox::Models::Nick, result.target)
|
25
|
+
assert_equal('spax', result.target.nick)
|
26
|
+
assert_kind_of(ModSpox::Models::Nick, result.source)
|
27
|
+
assert_equal('spax', result.source.nick)
|
28
|
+
assert_kind_of(String, result.mode)
|
29
|
+
assert_equal('+o', result.mode)
|
30
|
+
assert(result.target.is_op?(result.channel))
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_double
|
34
|
+
assert_equal(:MODE, @bot.factory.find_key(@test[:set_double]))
|
35
|
+
result = @bot.factory.handlers[@bot.factory.find_key(@test[:set_double])].process(@test[:set_double])
|
36
|
+
assert_kind_of(ModSpox::Messages::Incoming::Mode, result)
|
37
|
+
assert_equal(@test[:set_double], result.raw_content)
|
38
|
+
assert_kind_of(ModSpox::Models::Channel, result.channel)
|
39
|
+
assert_equal('#m', result.channel.name)
|
40
|
+
assert_kind_of(Array, result.target)
|
41
|
+
assert_equal('spax', result.target[0].nick)
|
42
|
+
assert_equal('spex', result.target[1].nick)
|
43
|
+
assert_kind_of(ModSpox::Models::Nick, result.source)
|
44
|
+
assert_equal('spax', result.source.nick)
|
45
|
+
assert_kind_of(String, result.mode)
|
46
|
+
assert_equal('+oo', result.mode)
|
47
|
+
assert(result.target[0].is_op?(result.channel))
|
48
|
+
assert(result.target[1].is_op?(result.channel))
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_channel
|
52
|
+
assert_equal(:MODE, @bot.factory.find_key(@test[:set_channel]))
|
53
|
+
result = @bot.factory.handlers[@bot.factory.find_key(@test[:set_channel])].process(@test[:set_channel])
|
54
|
+
assert_kind_of(ModSpox::Messages::Incoming::Mode, result)
|
55
|
+
assert_equal(@test[:set_channel], result.raw_content)
|
56
|
+
assert_kind_of(ModSpox::Models::Channel, result.channel)
|
57
|
+
assert_equal('#m', result.channel.name)
|
58
|
+
assert_nil(result.target)
|
59
|
+
assert_kind_of(ModSpox::Models::Nick, result.source)
|
60
|
+
assert_equal('spax', result.source.nick)
|
61
|
+
assert_kind_of(String, result.mode)
|
62
|
+
assert_equal('+s', result.mode)
|
63
|
+
assert(result.channel.set?('s'))
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_self
|
67
|
+
assert_equal(:MODE, @bot.factory.find_key(@test[:set_self]))
|
68
|
+
result = @bot.factory.handlers[@bot.factory.find_key(@test[:set_self])].process(@test[:set_self])
|
69
|
+
assert_kind_of(ModSpox::Messages::Incoming::Mode, result)
|
70
|
+
assert_equal(@test[:set_self], result.raw_content)
|
71
|
+
assert_nil(result.channel)
|
72
|
+
assert_kind_of(ModSpox::Models::Nick, result.target)
|
73
|
+
assert_equal('mod_spox', result.target.nick)
|
74
|
+
assert_kind_of(ModSpox::Models::Nick, result.source)
|
75
|
+
assert_equal('mod_spox', result.source.nick)
|
76
|
+
assert_kind_of(String, result.mode)
|
77
|
+
assert_equal('+iw', result.mode)
|
78
|
+
assert(result.target.mode_set?('i'))
|
79
|
+
assert(result.target.mode_set?('w'))
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_unexpected
|
83
|
+
assert_raise(ModSpox::Exceptions::GeneralException){@bot.factory.handlers[@bot.factory.find_key(@test[:bad])].process(@test[:bad])}
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../BotHolder.rb"
|
2
|
+
|
3
|
+
class TestNamesHandler < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
h = BotHolder.instance
|
7
|
+
@bot = h.bot
|
8
|
+
@test = {
|
9
|
+
:names_start => ':swiftco.wa.us.dal.net 353 spox @ #mod_spox :@pizza_ pizza__ @mod_spox @spox +spex',
|
10
|
+
:names_end => ':swiftco.wa.us.dal.net 366 spox #mod_spox :End of /NAMES list.',
|
11
|
+
:bad => ':fubared 353 fail whale'
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_expected
|
16
|
+
assert_equal('353', @bot.factory.find_key(@test[:names_start]))
|
17
|
+
assert_nil(@bot.factory.handlers[@bot.factory.find_key(@test[:names_start])].process(@test[:names_start]))
|
18
|
+
assert_equal('366', @bot.factory.find_key(@test[:names_end]))
|
19
|
+
result = @bot.factory.handlers[@bot.factory.find_key(@test[:names_end])].process(@test[:names_end])
|
20
|
+
assert_kind_of(ModSpox::Messages::Incoming::Names, result)
|
21
|
+
assert_equal('#mod_spox', result.channel.name)
|
22
|
+
assert_equal(5, result.nicks.size)
|
23
|
+
assert_equal(3, result.ops.size)
|
24
|
+
assert_equal(1, result.voiced.size)
|
25
|
+
assert(ModSpox::Models::Nick.find_or_create(:nick => 'mod_spox').is_op?(result.channel))
|
26
|
+
assert(ModSpox::Models::Nick.find_or_create(:nick => 'pizza_').is_op?(result.channel))
|
27
|
+
assert(ModSpox::Models::Nick.find_or_create(:nick => 'spox').is_op?(result.channel))
|
28
|
+
assert(!ModSpox::Models::Nick.find_or_create(:nick => 'pizza__').is_op?(result.channel))
|
29
|
+
assert(ModSpox::Models::Nick.find_or_create(:nick => 'spex').is_voice?(result.channel))
|
30
|
+
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
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../BotHolder.rb"
|
2
|
+
|
3
|
+
class TestNickHandler < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
h = BotHolder.instance
|
7
|
+
@bot = h.bot
|
8
|
+
@test = {
|
9
|
+
:good => ':spox!~spox@some.random.host NICK :flock_of_deer',
|
10
|
+
:bad => ':bad NICK fail'
|
11
|
+
}
|
12
|
+
@nick = ModSpox::Models::Nick.find_or_create(:nick => 'spox')
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_simple
|
16
|
+
m = @bot.factory.handlers[@bot.factory.find_key(@test[:good])].process(@test[:good])
|
17
|
+
assert_kind_of(ModSpox::Messages::Incoming::Nick, m)
|
18
|
+
assert_equal(@test[:good], m.raw_content)
|
19
|
+
assert_kind_of(ModSpox::Models::Nick, m.new_nick)
|
20
|
+
assert_kind_of(ModSpox::Models::Nick, m.original_nick)
|
21
|
+
assert_equal('spox', m.original_nick.nick)
|
22
|
+
assert_equal('flock_of_deer', m.new_nick.nick)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_info_move
|
26
|
+
@nick.address = 'some.random.host'
|
27
|
+
@nick.username = '~spox'
|
28
|
+
@nick.real_name = 'foobar'
|
29
|
+
@nick.save
|
30
|
+
m = @bot.factory.handlers[@bot.factory.find_key(@test[:good])].process(@test[:good])
|
31
|
+
assert_kind_of(ModSpox::Messages::Incoming::Nick, m)
|
32
|
+
assert_equal('spox', m.original_nick.nick)
|
33
|
+
assert_equal('flock_of_deer', m.new_nick.nick)
|
34
|
+
assert_equal('some.random.host', m.new_nick.address)
|
35
|
+
assert_equal('~spox', m.new_nick.username)
|
36
|
+
assert_equal('foobar', m.new_nick.real_name)
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_mode_move
|
40
|
+
c = ModSpox::Models::Channel.find_or_create(:name => '#test')
|
41
|
+
@nick.add_channel(c)
|
42
|
+
mode = ModSpox::Models::NickMode.find_or_create(:nick_id => @nick.pk, :channel_id => c.pk)
|
43
|
+
mode.set_mode('o')
|
44
|
+
m = @bot.factory.handlers[@bot.factory.find_key(@test[:good])].process(@test[:good])
|
45
|
+
assert_kind_of(ModSpox::Messages::Incoming::Nick, m)
|
46
|
+
assert_equal(0, m.original_nick.channels.size)
|
47
|
+
assert(m.new_nick.channels.size > 0)
|
48
|
+
assert(m.new_nick.channels.include?(c))
|
49
|
+
assert(m.new_nick.is_op?(c))
|
50
|
+
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
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../BotHolder.rb"
|
2
|
+
|
3
|
+
class TestPartHandler < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
h = BotHolder.instance
|
7
|
+
@bot = h.bot
|
8
|
+
@test = {
|
9
|
+
:w_message => ':mod_spox!~mod_spox@host PART #m :part message',
|
10
|
+
:wo_message => ':mod_spox!~mod_spox@host PART #m :',
|
11
|
+
:bad => ':bad PART fail'
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_w_message
|
16
|
+
assert_equal(:PART, @bot.factory.find_key(@test[:w_message]))
|
17
|
+
result = @bot.factory.handlers[@bot.factory.find_key(@test[:w_message])].process(@test[:w_message])
|
18
|
+
assert_kind_of(ModSpox::Messages::Incoming::Part, result)
|
19
|
+
assert_equal(@test[:w_message], result.raw_content)
|
20
|
+
assert_kind_of(String, result.reason)
|
21
|
+
assert_kind_of(ModSpox::Models::Nick, result.nick)
|
22
|
+
assert_kind_of(ModSpox::Models::Channel, result.channel)
|
23
|
+
assert_equal('mod_spox', result.nick.nick)
|
24
|
+
assert_equal('#m', result.channel.name)
|
25
|
+
assert_equal('part message', result.reason)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_wo_message
|
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])
|
31
|
+
assert_kind_of(ModSpox::Messages::Incoming::Part, result)
|
32
|
+
assert_equal(@test[:wo_message], result.raw_content)
|
33
|
+
assert_kind_of(String, result.reason)
|
34
|
+
assert_kind_of(ModSpox::Models::Nick, result.nick)
|
35
|
+
assert_kind_of(ModSpox::Models::Channel, result.channel)
|
36
|
+
assert_equal('mod_spox', result.nick.nick)
|
37
|
+
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
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../BotHolder.rb"
|
2
|
+
|
3
|
+
class TestPingHandler < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
h = BotHolder.instance
|
7
|
+
@bot = h.bot
|
8
|
+
@test = {
|
9
|
+
:wo_server => 'PING :not.configured',
|
10
|
+
:w_server => ':not.configured PING :test',
|
11
|
+
:bad => 'PING fail whale'
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_wo_server
|
16
|
+
assert_equal(:PING, @bot.factory.find_key(@test[:wo_server]))
|
17
|
+
result = @bot.factory.handlers[@bot.factory.find_key(@test[:wo_server])].process(@test[:wo_server])
|
18
|
+
assert_kind_of(ModSpox::Messages::Incoming::Ping, result)
|
19
|
+
assert_equal(@test[:wo_server], result.raw_content)
|
20
|
+
assert_kind_of(String, result.string)
|
21
|
+
assert_kind_of(String, result.server)
|
22
|
+
assert_equal('not.configured', result.server)
|
23
|
+
assert_equal('not.configured', result.string)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_w_server
|
27
|
+
assert_equal(:PING, @bot.factory.find_key(@test[:w_server]))
|
28
|
+
result = @bot.factory.handlers[@bot.factory.find_key(@test[:w_server])].process(@test[:w_server])
|
29
|
+
assert_kind_of(ModSpox::Messages::Incoming::Ping, result)
|
30
|
+
assert_equal(@test[:w_server], result.raw_content)
|
31
|
+
assert_kind_of(String, result.string)
|
32
|
+
assert_kind_of(String, result.server)
|
33
|
+
assert_equal('not.configured', result.server)
|
34
|
+
assert_equal('test', result.string)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_unexpected
|
38
|
+
assert_raise(ModSpox::Exceptions::GeneralException){@bot.factory.handlers[@bot.factory.find_key(@test[:bad])].process(@test[:bad])}
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../BotHolder.rb"
|
2
|
+
|
3
|
+
class TestPongHandler < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
h = BotHolder.instance
|
7
|
+
@bot = h.bot
|
8
|
+
@test = {
|
9
|
+
:good => ':swiftco.wa.us.dal.net PONG swiftco.wa.us.dal.net :FOO',
|
10
|
+
:bad => ':bad PONG fail'
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_expected
|
15
|
+
assert_equal(:PONG, @bot.factory.find_key(@test[:good]))
|
16
|
+
result = @bot.factory.handlers[@bot.factory.find_key(@test[:good])].process(@test[:good])
|
17
|
+
assert_kind_of(ModSpox::Messages::Incoming::Ping, result)
|
18
|
+
assert_equal(@test[:good], result.raw_content)
|
19
|
+
assert_kind_of(String, result.string)
|
20
|
+
assert_kind_of(String, result.server)
|
21
|
+
assert_equal('swiftco.wa.us.dal.net', result.server)
|
22
|
+
assert_equal('FOO', result.string)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_unexpected
|
26
|
+
assert_raise(ModSpox::Exceptions::GeneralException){@bot.factory.handlers[@bot.factory.find_key(@test[:bad])].process(@test[:bad])}
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../BotHolder.rb"
|
2
|
+
|
3
|
+
class TestPrivmsgHandler < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
h = BotHolder.instance
|
7
|
+
@bot = h.bot
|
8
|
+
@test = {
|
9
|
+
:nick_to_channel => ':spox!~spox@host PRIVMSG #m :foobar',
|
10
|
+
:nick_to_nick => ':spox!~spox@host PRIVMSG mod_spox :foobar',
|
11
|
+
:nick_to_channel_addressed => ':spox!~spox@host PRIVMSG #m :mod_spox: foobar',
|
12
|
+
:bad => ':fubared PRIVMSG fail whale'
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_nick_to_channel
|
17
|
+
assert_equal(:PRIVMSG, @bot.factory.find_key(@test[:nick_to_channel]))
|
18
|
+
result = @bot.factory.handlers[@bot.factory.find_key(@test[:nick_to_channel])].process(@test[:nick_to_channel])
|
19
|
+
assert_kind_of(ModSpox::Messages::Incoming::Privmsg, result)
|
20
|
+
assert_equal(@test[:nick_to_channel], result.raw_content)
|
21
|
+
assert_kind_of(ModSpox::Models::Channel, result.target)
|
22
|
+
assert_equal('#m', result.target.name)
|
23
|
+
assert_kind_of(ModSpox::Models::Nick, result.source)
|
24
|
+
assert_equal('spox', result.source.nick)
|
25
|
+
assert_kind_of(String, result.message)
|
26
|
+
assert_equal('foobar', result.message)
|
27
|
+
assert(!result.is_private?)
|
28
|
+
assert(result.is_public?)
|
29
|
+
assert(!result.addressed?)
|
30
|
+
assert(!result.is_action?)
|
31
|
+
assert(!result.is_colored?)
|
32
|
+
assert(!result.is_ctcp?)
|
33
|
+
assert(!result.is_dcc?)
|
34
|
+
assert_equal(result.message_nocolor, result.message)
|
35
|
+
assert_equal(result.target, result.replyto)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_nick_to_channel_addressed
|
39
|
+
assert_equal(:PRIVMSG, @bot.factory.find_key(@test[:nick_to_channel_addressed]))
|
40
|
+
result = @bot.factory.handlers[@bot.factory.find_key(@test[:nick_to_channel_addressed])].process(@test[:nick_to_channel_addressed])
|
41
|
+
assert_kind_of(ModSpox::Messages::Incoming::Privmsg, result)
|
42
|
+
assert_equal(@test[:nick_to_channel_addressed], result.raw_content)
|
43
|
+
assert_kind_of(ModSpox::Models::Channel, result.target)
|
44
|
+
assert_equal('#m', result.target.name)
|
45
|
+
assert_kind_of(ModSpox::Models::Nick, result.source)
|
46
|
+
assert_equal('spox', result.source.nick)
|
47
|
+
assert_kind_of(String, result.message)
|
48
|
+
assert_equal('mod_spox: foobar', result.message)
|
49
|
+
assert(!result.is_private?)
|
50
|
+
assert(result.is_public?)
|
51
|
+
assert(result.addressed?)
|
52
|
+
assert(!result.is_action?)
|
53
|
+
assert(!result.is_colored?)
|
54
|
+
assert(!result.is_ctcp?)
|
55
|
+
assert(!result.is_dcc?)
|
56
|
+
assert_equal(result.message_nocolor, result.message)
|
57
|
+
assert_equal(result.target, result.replyto)
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_nick_to_nick
|
61
|
+
assert_equal(:PRIVMSG, @bot.factory.find_key(@test[:nick_to_nick]))
|
62
|
+
result = @bot.factory.handlers[@bot.factory.find_key(@test[:nick_to_nick])].process(@test[:nick_to_nick])
|
63
|
+
assert_kind_of(ModSpox::Messages::Incoming::Privmsg, result)
|
64
|
+
assert_equal(@test[:nick_to_nick], result.raw_content)
|
65
|
+
assert_kind_of(ModSpox::Models::Nick, result.target)
|
66
|
+
assert_equal('mod_spox', result.target.nick)
|
67
|
+
assert_kind_of(ModSpox::Models::Nick, result.source)
|
68
|
+
assert_equal('spox', result.source.nick)
|
69
|
+
assert_kind_of(String, result.message)
|
70
|
+
assert_equal('foobar', result.message)
|
71
|
+
assert(result.is_private?)
|
72
|
+
assert(!result.is_public?)
|
73
|
+
assert(result.addressed?)
|
74
|
+
assert(!result.is_action?)
|
75
|
+
assert(!result.is_colored?)
|
76
|
+
assert(!result.is_ctcp?)
|
77
|
+
assert(!result.is_dcc?)
|
78
|
+
assert_equal(result.message_nocolor, result.message)
|
79
|
+
assert_equal(result.source, result.replyto)
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_unexpected
|
83
|
+
assert_raise(ModSpox::Exceptions::GeneralException){@bot.factory.handlers[@bot.factory.find_key(@test[:bad])].process(@test[:bad])}
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../BotHolder.rb"
|
2
|
+
|
3
|
+
class TestQuitHandler < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
h = BotHolder.instance
|
7
|
+
@bot = h.bot
|
8
|
+
@test = {
|
9
|
+
:w_message => ':spox!~spox@host QUIT :Ping timeout',
|
10
|
+
:wo_message => ':spox!~spox@host QUIT :',
|
11
|
+
:bad => ':not.configured QUIT fail whale'
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_wo_message
|
16
|
+
assert_equal(:QUIT, @bot.factory.find_key(@test[:wo_message]))
|
17
|
+
result = @bot.factory.handlers[@bot.factory.find_key(@test[:wo_message])].process(@test[:wo_message])
|
18
|
+
assert_kind_of(ModSpox::Messages::Incoming::Quit, result)
|
19
|
+
assert_equal(@test[:wo_message], result.raw_content)
|
20
|
+
assert_kind_of(ModSpox::Models::Nick, result.nick)
|
21
|
+
assert_equal('spox', result.nick.nick)
|
22
|
+
assert_kind_of(String, result.message)
|
23
|
+
assert_equal('', result.message)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_w_message
|
27
|
+
assert_equal(:QUIT, @bot.factory.find_key(@test[:w_message]))
|
28
|
+
result = @bot.factory.handlers[@bot.factory.find_key(@test[:w_message])].process(@test[:w_message])
|
29
|
+
assert_kind_of(ModSpox::Messages::Incoming::Quit, result)
|
30
|
+
assert_equal(@test[:w_message], result.raw_content)
|
31
|
+
assert_kind_of(ModSpox::Models::Nick, result.nick)
|
32
|
+
assert_equal('spox', result.nick.nick)
|
33
|
+
assert_kind_of(String, result.message)
|
34
|
+
assert_equal('Ping timeout', result.message)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_unexpected
|
38
|
+
assert_raise(ModSpox::Exceptions::GeneralException){@bot.factory.handlers[@bot.factory.find_key(@test[:bad])].process(@test[:bad])}
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../BotHolder.rb"
|
2
|
+
|
3
|
+
class TestWhoHandler < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
h = BotHolder.instance
|
7
|
+
@bot = h.bot
|
8
|
+
@test = {
|
9
|
+
:good => [],
|
10
|
+
:bad => ':host 352 fail whale'
|
11
|
+
}
|
12
|
+
@test[:good] << ':host 352 spox #mod_spox ~pizza_ host.1 punch.va.us.dal.net pizza_ H@ :5 pizza_'
|
13
|
+
@test[:good] << ':host 352 spox #mod_spox ~pizza_ host.2 punch.va.us.dal.net pizza__ H :5 pizza_'
|
14
|
+
@test[:good] << ':host 352 spox #mod_spox ~mod_spox host.3 mozilla.se.eu.dal.net mod_spox H@ :6 mod_spox IRC bot'
|
15
|
+
@test[:good] << ':host 352 spox #mod_spox ~spox host.4 swiftco.wa.us.dal.net spox H@ :0 spox'
|
16
|
+
@test[:good] << ':host 315 spox #mod_spox :End of /WHO list.'
|
17
|
+
@queue = Queue.new
|
18
|
+
@bot.pipeline.hook(self, :gather, :Incoming_Who)
|
19
|
+
@nicks = ['pizza_', 'pizza__', 'spox', 'mod_spox']
|
20
|
+
@ops = ['pizza_', 'spox', 'mod_spox']
|
21
|
+
end
|
22
|
+
|
23
|
+
def gather(m)
|
24
|
+
@queue << m
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_expected
|
28
|
+
4.times{ @bot.factory << @test[:good].shift }
|
29
|
+
sleep(0.5) # wait for much longer than needed to check queue
|
30
|
+
assert_equal(0, @queue.size)
|
31
|
+
@bot.factory << @test[:good].shift
|
32
|
+
sleep(0.1)
|
33
|
+
assert_equal(1, @queue.size)
|
34
|
+
m = @queue.pop
|
35
|
+
assert_kind_of(ModSpox::Messages::Incoming::Who, m)
|
36
|
+
assert_kind_of(ModSpox::Models::Channel, m.location)
|
37
|
+
assert_equal('#mod_spox', m.location.name)
|
38
|
+
assert_kind_of(Array, m.nicks)
|
39
|
+
assert_equal(4, m.nicks.size)
|
40
|
+
m.nicks.each do |nick|
|
41
|
+
assert(@nicks.include?(nick.nick))
|
42
|
+
assert(nick.channels.map{|c|c.name}.include?('#mod_spox'))
|
43
|
+
assert_equal(@ops.include?(nick.nick), nick.is_op?(m.location))
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_unexpected
|
48
|
+
assert_raise(ModSpox::Exceptions::GeneralException){@bot.factory.handlers[@bot.factory.find_key(@test[:bad].dup)].process(@test[:bad].dup)}
|
49
|
+
end
|
50
|
+
end
|