flamethrower 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -68,15 +68,25 @@ describe Flamethrower::Dispatcher do
68
68
 
69
69
  context "setting the channel topic" do
70
70
  it "sets the channel topic to the specified topic" do
71
- FakeWeb.register_uri(:put, "https://mytoken:x@mydomain.campfirenow.com/room/347348.json", :body => json_fixture("room_update"), :status => ["200", "OK"])
71
+ stub_request(:put, "https://mydomain.campfirenow.com/room/347348.json").
72
+ with(:headers => {'Authorization'=>['mytoken', 'x'], 'Content-Type'=>'application/json'}).
73
+ to_return(:status => 200, :body => json_fixture("room_update"))
72
74
  message = Flamethrower::Irc::Message.new("TOPIC #flamethrower :some awesome topic")
73
75
  @dispatcher.server.should_receive(:send_topic).with(@channel)
74
- @dispatcher.handle_message(message)
76
+ EM.run_block { @dispatcher.handle_message(message) }
75
77
  @channel.topic.should == "some awesome topic"
76
78
  end
77
79
  end
78
80
  end
79
81
 
82
+ describe "#who" do
83
+ it "responds with a who list" do
84
+ message = Flamethrower::Irc::Message.new("WHO #flamethrower\r\n")
85
+ @dispatcher.server.should_receive(:send_who).with(@channel)
86
+ @dispatcher.handle_message(message)
87
+ end
88
+ end
89
+
80
90
  describe "#mode" do
81
91
  before do
82
92
  @user = Flamethrower::Irc::User.new :username => "user", :nickname => "nick", :hostname => "host", :realname => "realname", :servername => "servername"
@@ -147,13 +157,23 @@ describe Flamethrower::Dispatcher do
147
157
 
148
158
  describe "#part" do
149
159
  it "stops the thread of the room being parted from" do
150
- @room.instance_variable_set("@thread_running", true)
160
+ EventMachine.stub(:cancel_timer)
161
+ @room.instance_variable_set("@room_alive", true)
151
162
  @room.should be_alive
152
163
  message = Flamethrower::Irc::Message.new("PART #flamethrower")
153
164
  @dispatcher.handle_message(message)
154
165
  @room.should_not be_alive
155
166
  end
156
167
 
168
+ it "sends a part message with your current user's name" do
169
+ EventMachine.stub(:cancel_timer)
170
+ user = Flamethrower::Irc::User.new :username => "user", :nickname => "nick", :hostname => "host", :realname => "realname", :servername => "servername"
171
+ @server.current_user = user
172
+ message = Flamethrower::Irc::Message.new("PART #flamethrower")
173
+ @server.should_receive(:send_message).with(":#{user.to_s} PART #flamethrower")
174
+ @dispatcher.handle_message(message)
175
+ end
176
+
157
177
  it "responds with ERR_BADCHANNELKEY a channel that doesn't exist" do
158
178
  user = Flamethrower::Irc::User.new :username => "user", :nickname => "nick", :hostname => "host", :realname => "realname", :servername => "servername"
159
179
  @server.current_user = user
@@ -164,8 +184,14 @@ describe Flamethrower::Dispatcher do
164
184
  end
165
185
 
166
186
  describe "#quit" do
167
- it "kills all the room threads on quit" do
168
- @room.instance_variable_set("@thread_running", true)
187
+ it "kills all the eventmachine timers on quit" do
188
+ polling_timer = mock(:polling_timer)
189
+ periodic_timer = mock(:periodic_timer)
190
+ EventMachine.should_receive(:cancel_timer).with(polling_timer)
191
+ EventMachine.should_receive(:cancel_timer).with(periodic_timer)
192
+ @room.instance_variable_set("@room_alive", true)
193
+ @room.instance_variable_set("@polling_timer", polling_timer)
194
+ @room.instance_variable_set("@periodic_timer", periodic_timer)
169
195
  @room.should be_alive
170
196
  message = Flamethrower::Irc::Message.new("QUIT :leaving")
171
197
  @dispatcher.handle_message(message)
@@ -175,17 +201,11 @@ describe Flamethrower::Dispatcher do
175
201
 
176
202
  describe "#join" do
177
203
  before do
204
+ @room.stub(:start)
178
205
  @room.stub(:fetch_room_info)
179
206
  @room.stub(:join)
180
207
  end
181
208
 
182
- it "responds with a topic and userlist if sent a join" do
183
- message = Flamethrower::Irc::Message.new("JOIN #flamethrower\r\n")
184
- @server.should_receive(:send_topic).with(@channel)
185
- @server.should_receive(:send_userlist)
186
- @dispatcher.handle_message(message)
187
- end
188
-
189
209
  it "adds the current user to the channel" do
190
210
  user = Flamethrower::Irc::User.new :username => "user", :nickname => "nick", :hostname => "host", :realname => "realname", :servername => "servername"
191
211
  @server.current_user = user
@@ -194,12 +214,6 @@ describe Flamethrower::Dispatcher do
194
214
  @channel.users.should include(user)
195
215
  end
196
216
 
197
- it "fetches the room information on join" do
198
- message = Flamethrower::Irc::Message.new("JOIN #flamethrower\r\n")
199
- @room.should_receive(:fetch_room_info)
200
- @dispatcher.handle_message(message)
201
- end
202
-
203
217
  it "responds with ERR_BADCHANNELKEY a channel that doesn't exist" do
204
218
  user = Flamethrower::Irc::User.new :username => "user", :nickname => "nick", :hostname => "host", :realname => "realname", :servername => "servername"
205
219
  @server.current_user = user
@@ -2,7 +2,9 @@ require File.join(File.dirname(__FILE__), "../../spec_helper")
2
2
 
3
3
  describe Flamethrower::Irc::Channel do
4
4
  before do
5
+ @server = Flamethrower::MockServer.new
5
6
  @room = Flamethrower::Campfire::Room.new("mydomain", "mytoken", {'name' => "flamethrower"})
7
+ @room.server = @server
6
8
  @channel = Flamethrower::Irc::Channel.new("#flamethrower", @room)
7
9
  @campfire_user = Flamethrower::Campfire::User.new('name' => "bob", 'id' => 734581)
8
10
  @irc_user = @campfire_user.to_irc
@@ -35,9 +37,10 @@ describe Flamethrower::Irc::Channel do
35
37
 
36
38
  describe "#irc_messages" do
37
39
  it "returns the irc messages to be sent to the client" do
38
- message = Flamethrower::Campfire::Message.new('body' => 'Hello there', 'user' => @campfire_user, 'room' => @room, 'type' => 'TextMessage')
40
+ @other_user = Flamethrower::Campfire::User.new('name' => "tom", 'id' => 7123)
41
+ message = Flamethrower::Campfire::Message.new('body' => 'Hello there', 'user' => @other_user, 'room' => @room, 'type' => 'TextMessage')
39
42
  @room.inbound_messages << message
40
- @channel.retrieve_irc_messages.map(&:to_s).should == [":#{@irc_user.to_s} PRIVMSG #{@channel.name} :Hello there"]
43
+ @channel.retrieve_irc_messages.map(&:to_s).should == [":#{@other_user.to_irc.to_s} PRIVMSG #{@channel.name} :Hello there"]
41
44
  end
42
45
 
43
46
  it "doesn't send TimeStamp messages" do
@@ -51,10 +54,10 @@ describe Flamethrower::Irc::Channel do
51
54
  @channel.retrieve_irc_messages.should be_empty
52
55
  end
53
56
 
54
- xit "doesn't send the message if the source is the current user" do
57
+ it "doesn't send the message if the source is the current user" do
55
58
  message = Flamethrower::Campfire::Message.new('body' => 'Hello there', 'user' => @campfire_user, 'room' => @room, 'type' => 'TextMessage')
56
59
  @room.inbound_messages << message
57
- @room.campfire_user = @current_user
60
+ @server.current_user = @campfire_user.to_irc
58
61
  @channel.retrieve_irc_messages.map(&:to_s).should be_empty
59
62
  end
60
63
  end
@@ -47,18 +47,28 @@ describe Flamethrower::Server do
47
47
  end
48
48
 
49
49
  context "#after_connect" do
50
+ before do
51
+ stub_request(:get, "https://mydomain.campfirenow.com/rooms.json").
52
+ with(:headers => {'Authorization'=>['mytoken', 'x']}).
53
+ to_return(:status => 200, :body => json_fixture("rooms"))
54
+ end
55
+
50
56
  it "sends motd" do
57
+ @server.stub(:populate_irc_channels)
58
+ @server.stub(:populate_my_user)
51
59
  @server.should_receive(:send_motd)
52
60
  @server.after_connect
53
61
  end
54
62
 
55
63
  it "populates the channel list" do
64
+ @server.stub(:populate_my_user)
56
65
  @server.should_receive(:populate_irc_channels)
57
66
  @server.after_connect
58
67
  end
59
68
 
60
- it "sends the channel list" do
61
- @server.should_receive(:send_channel_list)
69
+ it "populates the currently logged in user" do
70
+ @server.stub(:populate_irc_channels)
71
+ @server.should_receive(:populate_my_user)
62
72
  @server.after_connect
63
73
  end
64
74
  end
@@ -106,16 +116,19 @@ describe Flamethrower::Server do
106
116
  ]
107
117
  end
108
118
 
109
- it "sends the campfire users in the userlist" do
110
- room = Flamethrower::Campfire::Room.new('mydomain', 'mytoken')
111
- channel = Flamethrower::Irc::Channel.new("#flamethrower", room)
112
- user1 = Flamethrower::Campfire::User.new('id' => 1234, 'name' => 'Bob Jones')
113
- user2 = Flamethrower::Campfire::User.new('id' => 4321, 'name' => 'Bill Myer')
114
- room.users = [user1, user2]
115
- @server.send_userlist(channel).should == [
116
- ":host 353 nick = #flamethrower :@nick Bob_Jones Bill_Myer",
117
- ":host 366 nick #flamethrower :/End of /NAMES list"
118
- ]
119
+ describe "#send_who" do
120
+ it "sends the campfire users in the userlist" do
121
+ room = Flamethrower::Campfire::Room.new('mydomain', 'mytoken')
122
+ channel = Flamethrower::Irc::Channel.new("#flamethrower", room)
123
+ user1 = Flamethrower::Campfire::User.new('id' => 1234, 'name' => 'Bob Jones')
124
+ user2 = Flamethrower::Campfire::User.new('id' => 4321, 'name' => 'Bill Myer')
125
+ room.users = [user1, user2]
126
+ @server.send_who(channel).should == [
127
+ ":host 352 nick #flamethrower Bob_Jones campfirenow.com localhost Bob_Jones H :0 Bob_Jones",
128
+ ":host 352 nick #flamethrower Bill_Myer campfirenow.com localhost Bill_Myer H :0 Bill_Myer",
129
+ ":host 315 nick #flamethrower :/End of /WHO list"
130
+ ]
131
+ end
119
132
  end
120
133
 
121
134
  describe "#send_channel_list" do
@@ -153,8 +166,11 @@ describe Flamethrower::Server do
153
166
 
154
167
  describe "#populate_irc_channels" do
155
168
  it "populates the server irc_channels from the associated campfire channels" do
156
- FakeWeb.register_uri(:get, "https://mytoken:x@mydomain.campfirenow.com/rooms.json", :body => json_fixture("rooms"), :status => ["200", "OK"])
157
- @server.populate_irc_channels
169
+ stub_request(:get, "https://mydomain.campfirenow.com/rooms.json").
170
+ with(:headers => {'Authorization'=>['mytoken', 'x']}).
171
+ to_return(:status => 200, :body => json_fixture("rooms"))
172
+
173
+ EM.run_block { @server.populate_irc_channels }
158
174
  @server.irc_channels.count.should == 1
159
175
  @server.irc_channels.first.name.should == "#room_1"
160
176
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flamethrower
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 0.1.0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Blake Smith
@@ -15,13 +15,69 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-12 00:00:00 -06:00
18
+ date: 2011-01-17 00:00:00 -06:00
19
19
  default_executable: flamethrower
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: eventmachine
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: twitter-stream
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: json
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :runtime
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: em-http-request
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
75
+ type: :runtime
76
+ version_requirements: *id004
77
+ - !ruby/object:Gem::Dependency
78
+ name: eventmachine
79
+ prerelease: false
80
+ requirement: &id005 !ruby/object:Gem::Requirement
25
81
  none: false
26
82
  requirements:
27
83
  - - ">="
@@ -33,11 +89,11 @@ dependencies:
33
89
  - 10
34
90
  version: 0.12.10
35
91
  type: :runtime
36
- version_requirements: *id001
92
+ version_requirements: *id005
37
93
  - !ruby/object:Gem::Dependency
38
94
  name: json
39
95
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
96
+ requirement: &id006 !ruby/object:Gem::Requirement
41
97
  none: false
42
98
  requirements:
43
99
  - - ">="
@@ -47,11 +103,25 @@ dependencies:
47
103
  - 0
48
104
  version: "0"
49
105
  type: :runtime
50
- version_requirements: *id002
106
+ version_requirements: *id006
107
+ - !ruby/object:Gem::Dependency
108
+ name: em-http-request
109
+ prerelease: false
110
+ requirement: &id007 !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ hash: 3
116
+ segments:
117
+ - 0
118
+ version: "0"
119
+ type: :runtime
120
+ version_requirements: *id007
51
121
  - !ruby/object:Gem::Dependency
52
122
  name: twitter-stream
53
123
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
124
+ requirement: &id008 !ruby/object:Gem::Requirement
55
125
  none: false
56
126
  requirements:
57
127
  - - ">="
@@ -61,7 +131,7 @@ dependencies:
61
131
  - 0
62
132
  version: "0"
63
133
  type: :runtime
64
- version_requirements: *id003
134
+ version_requirements: *id008
65
135
  description: Flamethrower gives you the power to use your awesome irc client to talk in your campfire rooms.
66
136
  email: blakesmith0@gmail.com
67
137
  executables:
@@ -71,7 +141,6 @@ extensions: []
71
141
  extra_rdoc_files:
72
142
  - README.rdoc
73
143
  files:
74
- - .gitignore
75
144
  - .rspec
76
145
  - Gemfile
77
146
  - Gemfile.lock
@@ -127,8 +196,8 @@ homepage: http://github.com/blakesmith/flamethrower
127
196
  licenses: []
128
197
 
129
198
  post_install_message:
130
- rdoc_options:
131
- - --charset=UTF-8
199
+ rdoc_options: []
200
+
132
201
  require_paths:
133
202
  - lib
134
203
  required_ruby_version: !ruby/object:Gem::Requirement
data/.gitignore DELETED
@@ -1,4 +0,0 @@
1
- *.swp
2
- *.swo
3
- *.swn
4
- *.gem