flamethrower 0.3.0 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/Gemfile.lock +2 -0
- data/README.rdoc +11 -5
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/bin/flamethrower +1 -1
- data/bin/flamethrowerd +20 -0
- data/flamethrower.gemspec +18 -10
- data/flamethrower.yml.example +6 -0
- data/lib/flamethrower.rb +3 -1
- data/lib/flamethrower/ascii_imager.rb +16 -0
- data/lib/flamethrower/campfire/connection.rb +8 -11
- data/lib/flamethrower/campfire/message.rb +58 -2
- data/lib/flamethrower/campfire/rest_api.rb +15 -8
- data/lib/flamethrower/campfire/room.rb +106 -23
- data/lib/flamethrower/{server.rb → connection.rb} +5 -4
- data/lib/flamethrower/dispatcher.rb +29 -28
- data/lib/flamethrower/irc/codes.rb +1 -0
- data/lib/flamethrower/irc/commands.rb +8 -1
- data/lib/flamethrower/server/event_server.rb +13 -7
- data/lib/flamethrower/server/{mock_server.rb → mock_connection.rb} +6 -2
- data/spec/fixtures/recent_messages.json +1 -0
- data/spec/fixtures/streaming_image_message.json +1 -0
- data/spec/fixtures/tweet_message.json +1 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/campfire/connection_spec.rb +20 -17
- data/spec/unit/campfire/message_spec.rb +66 -0
- data/spec/unit/campfire/room_spec.rb +221 -14
- data/spec/unit/{server_spec.rb → connection_spec.rb} +51 -41
- data/spec/unit/dispatcher_spec.rb +63 -45
- data/spec/unit/irc/channel_spec.rb +3 -3
- data/spec/unit/irc/message_spec.rb +2 -2
- data/spec/unit/server/event_server_spec.rb +20 -1
- metadata +30 -9
@@ -1,36 +1,36 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "../spec_helper")
|
2
2
|
|
3
|
-
describe Flamethrower::
|
3
|
+
describe Flamethrower::Connection do
|
4
4
|
before do
|
5
|
-
@
|
6
|
-
@
|
5
|
+
@connection = Flamethrower::MockConnection.new
|
6
|
+
@connection.stub!(:send_data)
|
7
7
|
@user = Flamethrower::Irc::User.new :username => 'user', :nickname => 'nick', :hostname => 'host', :realname => 'realname'
|
8
|
-
@
|
8
|
+
@connection.current_user = @user
|
9
9
|
end
|
10
10
|
|
11
11
|
describe "#send_message" do
|
12
12
|
it "sends the message to the client" do
|
13
13
|
message = "message"
|
14
|
-
@
|
15
|
-
@
|
14
|
+
@connection.should_receive(:send_message).with("message")
|
15
|
+
@connection.send_message(message)
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should send the data across the wire" do
|
19
19
|
message = "message"
|
20
|
-
@
|
21
|
-
@
|
20
|
+
@connection.should_receive(:send_data).with("message\r\n")
|
21
|
+
@connection.send_message(message)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
describe "#send_messages" do
|
26
26
|
it "sends a list of messages to the client" do
|
27
|
-
@
|
28
|
-
@
|
27
|
+
@connection.should_receive(:send_message).exactly(2).times
|
28
|
+
@connection.send_messages("one", "two")
|
29
29
|
end
|
30
30
|
|
31
31
|
it "yields to the block to allow more messages" do
|
32
|
-
@
|
33
|
-
@
|
32
|
+
@connection.should_receive(:send_message).exactly(3).times
|
33
|
+
@connection.send_messages("one", "two") do |messages|
|
34
34
|
messages << "three"
|
35
35
|
end
|
36
36
|
end
|
@@ -41,8 +41,8 @@ describe Flamethrower::Server do
|
|
41
41
|
incoming = "COMMAND params"
|
42
42
|
msg = Flamethrower::Irc::Message.new(incoming)
|
43
43
|
Flamethrower::Irc::Message.should_receive(:new).with(incoming).and_return(msg)
|
44
|
-
@
|
45
|
-
@
|
44
|
+
@connection.dispatcher.should_receive(:handle_message).with(msg)
|
45
|
+
@connection.receive_data("#{incoming}\r\n")
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -53,64 +53,74 @@ describe Flamethrower::Server do
|
|
53
53
|
to_return(:status => 200, :body => json_fixture("rooms"))
|
54
54
|
end
|
55
55
|
|
56
|
+
it "sends welcome" do
|
57
|
+
@connection.stub(:populate_irc_channels)
|
58
|
+
@connection.stub(:populate_my_user)
|
59
|
+
@connection.should_receive(:send_welcome)
|
60
|
+
@connection.after_connect
|
61
|
+
end
|
62
|
+
|
56
63
|
it "sends motd" do
|
57
|
-
@
|
58
|
-
@
|
59
|
-
@
|
60
|
-
@
|
64
|
+
@connection.stub(:populate_irc_channels)
|
65
|
+
@connection.stub(:populate_my_user)
|
66
|
+
@connection.should_receive(:send_motd)
|
67
|
+
@connection.after_connect
|
61
68
|
end
|
62
69
|
|
63
70
|
it "populates the channel list" do
|
64
|
-
@
|
65
|
-
@
|
66
|
-
@
|
71
|
+
@connection.stub(:populate_my_user)
|
72
|
+
@connection.should_receive(:populate_irc_channels)
|
73
|
+
@connection.after_connect
|
67
74
|
end
|
68
75
|
|
69
76
|
it "populates the currently logged in user" do
|
70
|
-
@
|
71
|
-
@
|
72
|
-
@
|
77
|
+
@connection.stub(:populate_irc_channels)
|
78
|
+
@connection.should_receive(:populate_my_user)
|
79
|
+
@connection.after_connect
|
73
80
|
end
|
74
81
|
end
|
75
82
|
|
76
83
|
describe "irc_channels" do
|
77
|
-
it "stores the list of irc_channels on the
|
84
|
+
it "stores the list of irc_channels on the connection" do
|
78
85
|
channel = Flamethrower::Irc::Channel.new("#flamethrower")
|
79
|
-
@
|
80
|
-
@
|
86
|
+
@connection.irc_channels << channel
|
87
|
+
@connection.irc_channels.should include(channel)
|
81
88
|
end
|
82
89
|
end
|
83
90
|
|
84
91
|
describe "IRCcommands" do
|
92
|
+
it "should have a first message" do
|
93
|
+
@connection.send_welcome.should == ":host 001 nick :Welcome to Flamethrower"
|
94
|
+
end
|
95
|
+
|
85
96
|
it "should have the correct MOTD format" do
|
86
|
-
@
|
97
|
+
@connection.send_motd.should == [
|
87
98
|
":host 375 nick :MOTD",
|
88
|
-
":host 372 nick :Welcome to Flamethrower",
|
89
99
|
":host 372 nick :Fetching channel list from campfire..."
|
90
100
|
]
|
91
101
|
end
|
92
102
|
|
93
103
|
it "should send the channel mode" do
|
94
104
|
channel = Flamethrower::Irc::Channel.new("#flamethrower")
|
95
|
-
@
|
105
|
+
@connection.send_channel_mode(channel).should == ":host 324 nick #flamethrower +t"
|
96
106
|
end
|
97
107
|
|
98
108
|
it "should send the current user mode" do
|
99
|
-
@
|
109
|
+
@connection.send_user_mode.should == ":host 221 nick +i"
|
100
110
|
end
|
101
111
|
|
102
112
|
it "should have the correct TOPIC format" do
|
103
113
|
room = Flamethrower::Campfire::Room.new("mydomain", "mytoken", "id" => 347348, "name" => "room 1")
|
104
114
|
channel = Flamethrower::Irc::Channel.new("#flamethrower", room)
|
105
115
|
channel.topic = "A topic"
|
106
|
-
@
|
116
|
+
@connection.send_topic(channel).should == ":host 332 nick #flamethrower :A topic"
|
107
117
|
end
|
108
118
|
|
109
119
|
it "should have the correct USERLIST format" do
|
110
120
|
room = Flamethrower::Campfire::Room.new('mydomain', 'mytoken')
|
111
121
|
channel = Flamethrower::Irc::Channel.new("#flamethrower", room)
|
112
122
|
channel.users << Flamethrower::Irc::User.new(:nickname => 'bob', :username => 'bob')
|
113
|
-
@
|
123
|
+
@connection.send_userlist(channel).should == [
|
114
124
|
":host 353 nick = #flamethrower :@nick bob",
|
115
125
|
":host 366 nick #flamethrower :/End of /NAMES list"
|
116
126
|
]
|
@@ -123,7 +133,7 @@ describe Flamethrower::Server do
|
|
123
133
|
user1 = Flamethrower::Campfire::User.new('id' => 1234, 'name' => 'Bob Jones')
|
124
134
|
user2 = Flamethrower::Campfire::User.new('id' => 4321, 'name' => 'Bill Myer')
|
125
135
|
room.users = [user1, user2]
|
126
|
-
@
|
136
|
+
@connection.send_who(channel).should == [
|
127
137
|
":host 352 nick #flamethrower Bob_Jones campfirenow.com localhost Bob_Jones H :0 Bob_Jones",
|
128
138
|
":host 352 nick #flamethrower Bill_Myer campfirenow.com localhost Bill_Myer H :0 Bill_Myer",
|
129
139
|
":host 315 nick #flamethrower :/End of /WHO list"
|
@@ -139,8 +149,8 @@ describe Flamethrower::Server do
|
|
139
149
|
channel.topic = "Flamethrower topic"
|
140
150
|
channel2 = Flamethrower::Irc::Channel.new("#room_1", room2)
|
141
151
|
channel2.topic = "Room 1 topic"
|
142
|
-
@
|
143
|
-
@
|
152
|
+
@connection.irc_channels = [channel, channel2]
|
153
|
+
@connection.send_channel_list.should == [
|
144
154
|
":host 372 nick :Active channels:",
|
145
155
|
":host 372 nick :#flamethrower - Flamethrower topic",
|
146
156
|
":host 372 nick :#room_1 - Room 1 topic",
|
@@ -154,8 +164,8 @@ describe Flamethrower::Server do
|
|
154
164
|
channel = Flamethrower::Irc::Channel.new("#flamethrower", room)
|
155
165
|
channel2 = Flamethrower::Irc::Channel.new("#room_1", room2)
|
156
166
|
channel.topic = channel2.topic = ""
|
157
|
-
@
|
158
|
-
@
|
167
|
+
@connection.irc_channels = [channel, channel2]
|
168
|
+
@connection.send_channel_list.should == [
|
159
169
|
":host 372 nick :Active channels:",
|
160
170
|
":host 372 nick :#flamethrower - No topic",
|
161
171
|
":host 372 nick :#room_1 - No topic",
|
@@ -170,9 +180,9 @@ describe Flamethrower::Server do
|
|
170
180
|
with(:headers => {'Authorization'=>['mytoken', 'x']}).
|
171
181
|
to_return(:status => 200, :body => json_fixture("rooms"))
|
172
182
|
|
173
|
-
EM.run_block { @
|
174
|
-
@
|
175
|
-
@
|
183
|
+
EM.run_block { @connection.populate_irc_channels }
|
184
|
+
@connection.irc_channels.count.should == 1
|
185
|
+
@connection.irc_channels.first.name.should == "#room_1"
|
176
186
|
end
|
177
187
|
end
|
178
188
|
end
|
@@ -2,13 +2,13 @@ require File.join(File.dirname(__FILE__), "../spec_helper")
|
|
2
2
|
|
3
3
|
describe Flamethrower::Dispatcher do
|
4
4
|
before do
|
5
|
-
@
|
5
|
+
@connection = Flamethrower::MockConnection.new(:log => Logger.new("/dev/null"))
|
6
6
|
@room = Flamethrower::Campfire::Room.new('mydomain', 'mytoken', {'name' => 'a room', 'id' => 347348})
|
7
7
|
@room.instance_variable_set("@stream", mock(:twitter_stream, :stop => nil))
|
8
8
|
@channel = Flamethrower::Irc::Channel.new("#flamethrower", @room)
|
9
9
|
@user = Flamethrower::Irc::User.new :username => "user", :nickname => "nick", :hostname => "host", :realname => "realname", :servername => "servername"
|
10
|
-
@
|
11
|
-
@dispatcher = Flamethrower::Dispatcher.new(@
|
10
|
+
@connection.irc_channels << @channel
|
11
|
+
@dispatcher = Flamethrower::Dispatcher.new(@connection)
|
12
12
|
end
|
13
13
|
|
14
14
|
describe "#handle_message" do
|
@@ -29,10 +29,10 @@ describe Flamethrower::Dispatcher do
|
|
29
29
|
it "sets the current session's user to the specified user" do
|
30
30
|
message = Flamethrower::Irc::Message.new("USER guest tolmoon tolsun :Ronnie Reagan\r\n")
|
31
31
|
@dispatcher.handle_message(message)
|
32
|
-
@dispatcher.
|
33
|
-
@dispatcher.
|
34
|
-
@dispatcher.
|
35
|
-
@dispatcher.
|
32
|
+
@dispatcher.connection.current_user.username.should == "guest"
|
33
|
+
@dispatcher.connection.current_user.hostname.should == "tolmoon"
|
34
|
+
@dispatcher.connection.current_user.servername.should == "tolsun"
|
35
|
+
@dispatcher.connection.current_user.realname.should == "Ronnie Reagan"
|
36
36
|
end
|
37
37
|
|
38
38
|
it "not set a second user request if a first has already been recieved" do
|
@@ -40,49 +40,58 @@ describe Flamethrower::Dispatcher do
|
|
40
40
|
message2 = Flamethrower::Irc::Message.new("USER guest2 tolmoon2 tolsun2 :Ronnie Reagan2\r\n")
|
41
41
|
@dispatcher.handle_message(message)
|
42
42
|
@dispatcher.handle_message(message2)
|
43
|
-
@dispatcher.
|
44
|
-
@dispatcher.
|
45
|
-
@dispatcher.
|
46
|
-
@dispatcher.
|
43
|
+
@dispatcher.connection.current_user.username.should == "guest"
|
44
|
+
@dispatcher.connection.current_user.hostname.should == "tolmoon"
|
45
|
+
@dispatcher.connection.current_user.servername.should == "tolsun"
|
46
|
+
@dispatcher.connection.current_user.realname.should == "Ronnie Reagan"
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
describe "#away" do
|
51
51
|
it "respond with RPL_NOWAWAY when the user specifies an away message" do
|
52
|
-
@
|
52
|
+
@connection.current_user = @user
|
53
53
|
message = Flamethrower::Irc::Message.new("AWAY :I'm away")
|
54
|
-
@dispatcher.
|
54
|
+
@dispatcher.connection.should_receive(:send_message).with(":#{@user.hostname} 306 #{@user.nickname} :You have been marked as being away")
|
55
55
|
@dispatcher.handle_message(message)
|
56
|
-
@
|
56
|
+
@connection.current_user.away_message.should == "I'm away"
|
57
57
|
end
|
58
58
|
|
59
59
|
it "respond with RPL_UNAWAY when the user doesn't specify an away message" do
|
60
|
-
@
|
61
|
-
@
|
60
|
+
@connection.current_user = @user
|
61
|
+
@connection.current_user.away_message = "Currently away"
|
62
62
|
message = Flamethrower::Irc::Message.new("AWAY :")
|
63
|
-
@dispatcher.
|
63
|
+
@dispatcher.connection.should_receive(:send_message).with(":#{@user.hostname} 305 #{@user.nickname} :You are no longer marked as being away")
|
64
64
|
@dispatcher.handle_message(message)
|
65
|
-
@
|
65
|
+
@connection.current_user.away_message.should == nil
|
66
|
+
end
|
67
|
+
|
68
|
+
it "response with RPL_UNAWAY when the away message has no colon" do
|
69
|
+
@connection.current_user = @user
|
70
|
+
@connection.current_user.away_message = "Currently away"
|
71
|
+
message = Flamethrower::Irc::Message.new("AWAY")
|
72
|
+
@dispatcher.connection.should_receive(:send_message).with(":#{@user.hostname} 305 #{@user.nickname} :You are no longer marked as being away")
|
73
|
+
@dispatcher.handle_message(message)
|
74
|
+
@connection.current_user.away_message.should == nil
|
66
75
|
end
|
67
76
|
end
|
68
77
|
|
69
78
|
describe "#topic" do
|
70
79
|
before do
|
71
80
|
@user = Flamethrower::Irc::User.new :username => "user", :nickname => "nick", :hostname => "host", :realname => "realname", :servername => "servername"
|
72
|
-
@
|
81
|
+
@connection.current_user = @user
|
73
82
|
end
|
74
83
|
|
75
84
|
context "retrieving the channel topic" do
|
76
85
|
it "should display the channel topic" do
|
77
86
|
message = Flamethrower::Irc::Message.new("TOPIC #flamethrower")
|
78
|
-
@dispatcher.
|
87
|
+
@dispatcher.connection.should_receive(:send_topic).with(@channel)
|
79
88
|
@dispatcher.handle_message(message)
|
80
89
|
end
|
81
90
|
|
82
91
|
it "responds with an error if the channel can't be found" do
|
83
92
|
message = Flamethrower::Irc::Message.new("TOPIC #bogus")
|
84
|
-
@dispatcher.
|
85
|
-
@dispatcher.
|
93
|
+
@dispatcher.connection.should_not_receive(:send_topic)
|
94
|
+
@dispatcher.connection.should_receive(:send_message).with(":#{@user.hostname} 475")
|
86
95
|
@dispatcher.handle_message(message)
|
87
96
|
end
|
88
97
|
end
|
@@ -93,7 +102,7 @@ describe Flamethrower::Dispatcher do
|
|
93
102
|
with(:headers => {'Authorization'=>['mytoken', 'x'], 'Content-Type'=>'application/json'}).
|
94
103
|
to_return(:status => 200, :body => json_fixture("room_update"))
|
95
104
|
message = Flamethrower::Irc::Message.new("TOPIC #flamethrower :some awesome topic")
|
96
|
-
@dispatcher.
|
105
|
+
@dispatcher.connection.should_receive(:send_topic).with(@channel)
|
97
106
|
EM.run_block { @dispatcher.handle_message(message) }
|
98
107
|
@channel.topic.should == "some awesome topic"
|
99
108
|
end
|
@@ -103,7 +112,7 @@ describe Flamethrower::Dispatcher do
|
|
103
112
|
describe "#who" do
|
104
113
|
it "responds with a who list" do
|
105
114
|
message = Flamethrower::Irc::Message.new("WHO #flamethrower\r\n")
|
106
|
-
@dispatcher.
|
115
|
+
@dispatcher.connection.should_receive(:send_who).with(@channel)
|
107
116
|
@dispatcher.handle_message(message)
|
108
117
|
end
|
109
118
|
end
|
@@ -111,25 +120,25 @@ describe Flamethrower::Dispatcher do
|
|
111
120
|
describe "#mode" do
|
112
121
|
before do
|
113
122
|
@user = Flamethrower::Irc::User.new :username => "user", :nickname => "nick", :hostname => "host", :realname => "realname", :servername => "servername"
|
114
|
-
@
|
123
|
+
@connection.current_user = @user
|
115
124
|
end
|
116
125
|
|
117
126
|
context "channel mode" do
|
118
127
|
it "responds to mode with a static channel mode" do
|
119
128
|
message = Flamethrower::Irc::Message.new("MODE #flamethrower\r\n")
|
120
|
-
@dispatcher.
|
129
|
+
@dispatcher.connection.should_receive(:send_channel_mode).with(@channel)
|
121
130
|
@dispatcher.handle_message(message)
|
122
131
|
end
|
123
132
|
|
124
133
|
it "responds with the user mode if the mode isn't for a channel" do
|
125
134
|
message = Flamethrower::Irc::Message.new("MODE #{@user.nickname} +i\r\n")
|
126
|
-
@dispatcher.
|
135
|
+
@dispatcher.connection.should_receive(:send_user_mode)
|
127
136
|
@dispatcher.handle_message(message)
|
128
137
|
end
|
129
138
|
|
130
139
|
it "responds with unknown command if the mode is neither a server nor the current user" do
|
131
140
|
message = Flamethrower::Irc::Message.new("MODE foo\r\n")
|
132
|
-
@dispatcher.
|
141
|
+
@dispatcher.connection.should_receive(:send_message).with(":#{@user.hostname} 421")
|
133
142
|
@dispatcher.handle_message(message)
|
134
143
|
end
|
135
144
|
end
|
@@ -139,7 +148,7 @@ describe Flamethrower::Dispatcher do
|
|
139
148
|
it "sets the current session's user nickname to the specified nick" do
|
140
149
|
message = Flamethrower::Irc::Message.new("NICK WiZ\r\n")
|
141
150
|
@dispatcher.handle_message(message)
|
142
|
-
@dispatcher.
|
151
|
+
@dispatcher.connection.current_user.nickname.should == "WiZ"
|
143
152
|
end
|
144
153
|
end
|
145
154
|
|
@@ -149,7 +158,7 @@ describe Flamethrower::Dispatcher do
|
|
149
158
|
message = Flamethrower::Irc::Message.new("PRIVMSG #test :Hello.\r\n")
|
150
159
|
room = Flamethrower::Campfire::Room.new("mydomain", "mytoken", {'name' => "test"})
|
151
160
|
irc_channel = room.to_irc
|
152
|
-
@dispatcher.
|
161
|
+
@dispatcher.connection.irc_channels << irc_channel
|
153
162
|
@dispatcher.handle_message(message)
|
154
163
|
room.outbound_messages.size.should == 1
|
155
164
|
end
|
@@ -158,7 +167,7 @@ describe Flamethrower::Dispatcher do
|
|
158
167
|
message = Flamethrower::Irc::Message.new("PRIVMSG #test :Hello.\r\n")
|
159
168
|
room = Flamethrower::Campfire::Room.new("mydomain", "mytoken", {'name' => "test"})
|
160
169
|
irc_channel = room.to_irc
|
161
|
-
@dispatcher.
|
170
|
+
@dispatcher.connection.irc_channels << irc_channel
|
162
171
|
@dispatcher.handle_message(message)
|
163
172
|
campfire_message = room.outbound_messages.pop
|
164
173
|
campfire_message.body.should == "Hello."
|
@@ -171,7 +180,7 @@ describe Flamethrower::Dispatcher do
|
|
171
180
|
describe "#ping" do
|
172
181
|
it "responds with pong of the same ping parameters" do
|
173
182
|
message = Flamethrower::Irc::Message.new("PING :something\r\n")
|
174
|
-
@
|
183
|
+
@connection.should_receive(:send_message).with("PONG :something")
|
175
184
|
@dispatcher.handle_message(message)
|
176
185
|
end
|
177
186
|
end
|
@@ -189,17 +198,17 @@ describe Flamethrower::Dispatcher do
|
|
189
198
|
it "sends a part message with your current user's name" do
|
190
199
|
EventMachine.stub(:cancel_timer)
|
191
200
|
user = Flamethrower::Irc::User.new :username => "user", :nickname => "nick", :hostname => "host", :realname => "realname", :servername => "servername"
|
192
|
-
@
|
201
|
+
@connection.current_user = user
|
193
202
|
message = Flamethrower::Irc::Message.new("PART #flamethrower")
|
194
|
-
@
|
203
|
+
@connection.should_receive(:send_message).with(":#{user.to_s} PART #flamethrower")
|
195
204
|
@dispatcher.handle_message(message)
|
196
205
|
end
|
197
206
|
|
198
207
|
it "responds with ERR_BADCHANNELKEY a channel that doesn't exist" do
|
199
208
|
user = Flamethrower::Irc::User.new :username => "user", :nickname => "nick", :hostname => "host", :realname => "realname", :servername => "servername"
|
200
|
-
@
|
209
|
+
@connection.current_user = user
|
201
210
|
message = Flamethrower::Irc::Message.new("PART #foobar")
|
202
|
-
@
|
211
|
+
@connection.should_receive(:send_message).with(":#{user.hostname} 475")
|
203
212
|
@dispatcher.handle_message(message)
|
204
213
|
end
|
205
214
|
end
|
@@ -229,7 +238,7 @@ describe Flamethrower::Dispatcher do
|
|
229
238
|
|
230
239
|
it "adds the current user to the channel" do
|
231
240
|
user = Flamethrower::Irc::User.new :username => "user", :nickname => "nick", :hostname => "host", :realname => "realname", :servername => "servername"
|
232
|
-
@
|
241
|
+
@connection.current_user = user
|
233
242
|
message = Flamethrower::Irc::Message.new("JOIN #flamethrower\r\n")
|
234
243
|
@dispatcher.handle_message(message)
|
235
244
|
@channel.users.should include(user)
|
@@ -237,11 +246,20 @@ describe Flamethrower::Dispatcher do
|
|
237
246
|
|
238
247
|
it "responds with ERR_BADCHANNELKEY a channel that doesn't exist" do
|
239
248
|
user = Flamethrower::Irc::User.new :username => "user", :nickname => "nick", :hostname => "host", :realname => "realname", :servername => "servername"
|
240
|
-
@
|
249
|
+
@connection.current_user = user
|
241
250
|
message = Flamethrower::Irc::Message.new("JOIN #foobar\r\n")
|
242
|
-
@
|
243
|
-
@
|
244
|
-
@
|
251
|
+
@connection.should_receive(:send_message).with(":#{user.hostname} 475")
|
252
|
+
@connection.should_not_receive(:send_topic)
|
253
|
+
@connection.should_not_receive(:send_userlist)
|
254
|
+
@dispatcher.handle_message(message)
|
255
|
+
end
|
256
|
+
|
257
|
+
it "sends a join message with your current user's name" do
|
258
|
+
EventMachine.stub(:cancel_timer)
|
259
|
+
user = Flamethrower::Irc::User.new :username => "user", :nickname => "nick", :hostname => "host", :realname => "realname", :servername => "servername"
|
260
|
+
@connection.current_user = user
|
261
|
+
message = Flamethrower::Irc::Message.new("JOIN #flamethrower")
|
262
|
+
@connection.should_receive(:send_message).with(":#{user.to_s} JOIN #flamethrower")
|
245
263
|
@dispatcher.handle_message(message)
|
246
264
|
end
|
247
265
|
|
@@ -260,13 +278,13 @@ describe Flamethrower::Dispatcher do
|
|
260
278
|
|
261
279
|
describe "nick sent first" do
|
262
280
|
it "sends the motd, join" do
|
263
|
-
@dispatcher.
|
281
|
+
@dispatcher.connection.should_receive(:after_connect)
|
264
282
|
@dispatcher.handle_message(@nick_message)
|
265
283
|
@dispatcher.handle_message(@user_message)
|
266
284
|
end
|
267
285
|
|
268
286
|
it "doesn't send after_connect if only the nick has been sent" do
|
269
|
-
@dispatcher.
|
287
|
+
@dispatcher.connection.should_not_receive(:after_connect)
|
270
288
|
@dispatcher.handle_message(@nick_message)
|
271
289
|
end
|
272
290
|
|
@@ -274,13 +292,13 @@ describe Flamethrower::Dispatcher do
|
|
274
292
|
|
275
293
|
describe "user sent first" do
|
276
294
|
it "sends the motd" do
|
277
|
-
@dispatcher.
|
295
|
+
@dispatcher.connection.should_receive(:after_connect)
|
278
296
|
@dispatcher.handle_message(@user_message)
|
279
297
|
@dispatcher.handle_message(@nick_message)
|
280
298
|
end
|
281
299
|
|
282
300
|
it "doesn't send after_connect if only the nick has been sent" do
|
283
|
-
@dispatcher.
|
301
|
+
@dispatcher.connection.should_not_receive(:after_connect)
|
284
302
|
@dispatcher.handle_message(@user_message)
|
285
303
|
end
|
286
304
|
|