cerberus 0.7.6 → 0.7.7
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.txt +21 -1
- data/Rakefile +2 -2
- data/lib/cerberus/cli.rb +1 -1
- data/lib/cerberus/constants.rb +1 -1
- data/lib/cerberus/manager.rb +5 -5
- data/lib/cerberus/publisher/base.rb +1 -1
- data/lib/cerberus/publisher/irc.rb +8 -13
- data/lib/cerberus/publisher/mail.rb +1 -0
- data/lib/cerberus/scm/git.rb +1 -1
- data/lib/vendor/addressable/CHANGELOG +88 -0
- data/lib/vendor/addressable/LICENSE +20 -0
- data/lib/vendor/addressable/README +50 -0
- data/lib/vendor/addressable/Rakefile +74 -0
- data/lib/vendor/addressable/addressable.gemspec +30 -0
- data/lib/vendor/addressable/lib/addressable/idna.rb +4871 -0
- data/lib/vendor/addressable/lib/addressable/template.rb +1049 -0
- data/lib/vendor/addressable/lib/addressable/uri.rb +2078 -0
- data/lib/vendor/addressable/lib/addressable/version.rb +36 -0
- data/lib/vendor/addressable/spec/addressable/idna_spec.rb +194 -0
- data/lib/vendor/addressable/spec/addressable/template_spec.rb +2152 -0
- data/lib/vendor/addressable/spec/addressable/uri_spec.rb +3914 -0
- data/lib/vendor/addressable/spec/data/rfc3986.txt +3419 -0
- data/lib/vendor/addressable/tasks/clobber.rake +2 -0
- data/lib/vendor/addressable/tasks/gem.rake +68 -0
- data/lib/vendor/addressable/tasks/git.rake +40 -0
- data/lib/vendor/addressable/tasks/metrics.rake +22 -0
- data/lib/vendor/addressable/tasks/rdoc.rake +29 -0
- data/lib/vendor/addressable/tasks/rubyforge.rake +89 -0
- data/lib/vendor/addressable/tasks/spec.rake +47 -0
- data/lib/vendor/addressable/website/index.html +110 -0
- data/lib/vendor/shout-bot/TODO +2 -0
- data/lib/vendor/shout-bot/lib/shout-bot.rb +76 -0
- data/lib/vendor/shout-bot/shout-bot.gemspec +13 -0
- data/lib/vendor/tinder/CHANGELOG.txt +39 -0
- data/lib/vendor/tinder/Manifest.txt +10 -0
- data/lib/vendor/tinder/README.txt +48 -0
- data/lib/vendor/tinder/Rakefile +45 -0
- data/lib/vendor/tinder/VERSION +1 -0
- data/lib/vendor/tinder/init.rb +1 -0
- data/lib/vendor/tinder/lib/tinder.rb +12 -0
- data/lib/vendor/tinder/lib/tinder/campfire.rb +75 -0
- data/lib/vendor/tinder/lib/tinder/connection.rb +74 -0
- data/lib/vendor/tinder/lib/tinder/multipart.rb +63 -0
- data/lib/vendor/tinder/lib/tinder/room.rb +225 -0
- data/lib/vendor/tinder/site/index.html +101 -0
- data/lib/vendor/tinder/site/stylesheets/style.css +77 -0
- data/lib/vendor/tinder/spec/fixtures/rooms.json +18 -0
- data/lib/vendor/tinder/spec/fixtures/rooms/room80749.json +21 -0
- data/lib/vendor/tinder/spec/fixtures/rooms/room80751.json +21 -0
- data/lib/vendor/tinder/spec/fixtures/rooms/show.json +21 -0
- data/lib/vendor/tinder/spec/fixtures/users/me.json +11 -0
- data/lib/vendor/tinder/spec/spec.opts +2 -0
- data/lib/vendor/tinder/spec/spec_helper.rb +12 -0
- data/lib/vendor/tinder/spec/tinder/campfire_spec.rb +53 -0
- data/lib/vendor/tinder/spec/tinder/connection_spec.rb +29 -0
- data/lib/vendor/tinder/spec/tinder/room_spec.rb +98 -0
- data/lib/vendor/tinder/tinder.gemspec +79 -0
- data/test/functional_test.rb +19 -4
- data/test/integration_test.rb +1 -1
- data/test/irc_publisher_test.rb +4 -4
- data/test/mock/manager.rb +1 -1
- metadata +58 -20
- data/lib/vendor/irc/README +0 -23
- data/lib/vendor/irc/lib/IRC.rb +0 -164
- data/lib/vendor/irc/lib/IRCChannel.rb +0 -33
- data/lib/vendor/irc/lib/IRCConnection.rb +0 -134
- data/lib/vendor/irc/lib/IRCEvent.rb +0 -91
- data/lib/vendor/irc/lib/IRCUser.rb +0 -23
- data/lib/vendor/irc/lib/IRCUtil.rb +0 -49
- data/lib/vendor/irc/lib/eventmap.yml +0 -247
@@ -0,0 +1,101 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
7
|
+
<title>Tinder</title>
|
8
|
+
<link rel="stylesheet" type="text/css" href="http://opensoul.org/stylesheets/code.css" />
|
9
|
+
<link rel="stylesheet" type="text/css" href="stylesheets/style.css" />
|
10
|
+
<link href="http://opensoul.org/stylesheets/ci.css" rel="stylesheet" type="text/css" />
|
11
|
+
<script src="http://opensoul.org/javascripts/code_highlighter.js" type="text/javascript"></script>
|
12
|
+
<script src="http://opensoul.org/javascripts/ruby.js" type="text/javascript"></script>
|
13
|
+
</head>
|
14
|
+
|
15
|
+
<body>
|
16
|
+
<div id="collectiveidea">
|
17
|
+
<a href="http://collectiveidea.com"><img src="http://opensoul.org/images/header_logo.gif" alt="Collective Idea" class="logo" width="17" height="22" /></a>
|
18
|
+
<ul class="links">
|
19
|
+
<li><a href="http://daniel.collectiveidea.com/blog">Daniel</a></li>
|
20
|
+
<li><a href="http://opensoul.org">Brandon</a></li>
|
21
|
+
<li class="name"><a href="http://collectiveidea.com"><img src="http://opensoul.org/images/header_collectiveidea.gif" alt="Collective Idea" width="123" height="21" /></a></li>
|
22
|
+
</ul>
|
23
|
+
</div>
|
24
|
+
<div id="main">
|
25
|
+
<div id="header">
|
26
|
+
<h1><a href="/">Tinder</a></h1>
|
27
|
+
<p>Getting the campfire started</p>
|
28
|
+
<ul id="nav">
|
29
|
+
<li><a href="tinder">API Docs</a></li>
|
30
|
+
<li><a href="http://rubyforge.org/projects/tinder">RubyForge</a></li>
|
31
|
+
<li><a href="http://opensoul.org/tags/tinder">Blog</a></li>
|
32
|
+
</ul>
|
33
|
+
</div>
|
34
|
+
<div id="content">
|
35
|
+
<p>Tinder is an API for interfacing with <a href="http://campfirenow.com">Campfire</a>, the 37Signals chat application.</p>
|
36
|
+
<h2>Example</h2>
|
37
|
+
|
38
|
+
<pre><code class="ruby">campfire = Tinder::Campfire.new 'mysubdomain'
|
39
|
+
campfire.login 'myemail@example.com', 'mypassword'</code></pre>
|
40
|
+
|
41
|
+
<h3>Create, find and destroy rooms</h3>
|
42
|
+
<pre><code class="ruby">room = campfire.create_room 'New Room', 'My new campfire room to test tinder'
|
43
|
+
room = campfire.find_room_by_name 'Other Room'
|
44
|
+
room.destroy</code></pre>
|
45
|
+
|
46
|
+
<h3>Speak and Paste</h3>
|
47
|
+
<pre><code class="ruby">room.speak 'Hello world!'
|
48
|
+
room.paste File.read("path/to/your/file.txt")</code></pre>
|
49
|
+
|
50
|
+
<h3>Listening</h3>
|
51
|
+
<pre><code class="ruby">room.listen
|
52
|
+
#=> [{:person=>"Brandon", :message=>"I'm getting very sleepy", :user_id=>"148583", :id=>"16434003"}]
|
53
|
+
|
54
|
+
# or in block form
|
55
|
+
room.listen do |m|
|
56
|
+
room.speak 'Welcome!' if m[:message] == /hello/
|
57
|
+
end</code></pre>
|
58
|
+
|
59
|
+
<h3>Guest Access</h3>
|
60
|
+
<pre><code class="ruby">room.toggle_guest_access
|
61
|
+
room.guest_url #=> http://mysubdomain.campfirenow.com/11111
|
62
|
+
room.guest_invite_code #=> 11111</code></pre>
|
63
|
+
|
64
|
+
<h3>Change the name and topic</h3>
|
65
|
+
<pre><code class="ruby">room.name = 'Tinder Demo'
|
66
|
+
room.topic = 'Showing how to change the room name and topic with tinder…'</code></pre>
|
67
|
+
|
68
|
+
<h3>Users</h3>
|
69
|
+
<pre><code class="ruby">room.users
|
70
|
+
campfire.users # users in all rooms</code></pre>
|
71
|
+
|
72
|
+
<h3>Transcripts</h3>
|
73
|
+
<pre><code class="ruby">transcript = room.transcript(room.available_transcripts.first)
|
74
|
+
#=> [{:message=>"foobar!", :user_id=>"99999", :person=>"Brandon", :id=>"18659245", :timestamp=>Tue May 05 07:15:00 -0700 2009}]
|
75
|
+
</code></pre>
|
76
|
+
|
77
|
+
<p>See the <a href="tinder">API documentation</a> for more details.</p>
|
78
|
+
|
79
|
+
<h2>Installation</h2>
|
80
|
+
|
81
|
+
<p>Tinder can be installed as a gem or a Rails plugin. Install the gem by executing:</p>
|
82
|
+
|
83
|
+
<pre>gem install tinder</pre>
|
84
|
+
|
85
|
+
<p>Or, download it from <a href="http://rubyforge.org/frs/?group_id=2922">RubyForge</a>.</p>
|
86
|
+
|
87
|
+
<h2>Source</h2>
|
88
|
+
|
89
|
+
<p>Contributions are welcome and appreciated! The source is available from:</p>
|
90
|
+
|
91
|
+
<pre>http://github.com/collectiveidea/tinder</pre>
|
92
|
+
</div>
|
93
|
+
</div>
|
94
|
+
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
|
95
|
+
</script>
|
96
|
+
<script type="text/javascript">
|
97
|
+
_uacct = "UA-194397-8";
|
98
|
+
urchinTracker();
|
99
|
+
</script>
|
100
|
+
</body>
|
101
|
+
</html>
|
@@ -0,0 +1,77 @@
|
|
1
|
+
body {
|
2
|
+
font-family: "Lucida Grande", Helvetica, Arial, sans-serif;
|
3
|
+
font-size: 76%;
|
4
|
+
background: #2A2A2A;
|
5
|
+
margin: 0;
|
6
|
+
padding: 0;
|
7
|
+
}
|
8
|
+
|
9
|
+
#collectiveidea {
|
10
|
+
border-bottom: 1px solid #444;
|
11
|
+
}
|
12
|
+
|
13
|
+
a {
|
14
|
+
color: #2D5385;
|
15
|
+
}
|
16
|
+
|
17
|
+
#main {
|
18
|
+
background-color: #FFF;
|
19
|
+
width: 700px;
|
20
|
+
margin: 0 auto;
|
21
|
+
border: 5px #CCC;
|
22
|
+
border-left-style: solid;
|
23
|
+
border-right-style: solid;
|
24
|
+
padding: 0 1em;
|
25
|
+
}
|
26
|
+
|
27
|
+
#header {
|
28
|
+
position: relative;
|
29
|
+
border-bottom: 1px solid #999;
|
30
|
+
padding: 1em;
|
31
|
+
}
|
32
|
+
|
33
|
+
#header h1 {
|
34
|
+
margin: 0;
|
35
|
+
padding: 0;
|
36
|
+
color: #2D5385;
|
37
|
+
}
|
38
|
+
|
39
|
+
#header h1 a {
|
40
|
+
text-decoration: none;
|
41
|
+
}
|
42
|
+
|
43
|
+
#header p {
|
44
|
+
margin: 0;
|
45
|
+
padding: 0;
|
46
|
+
font-size: 0.8em;
|
47
|
+
color: #999;
|
48
|
+
}
|
49
|
+
|
50
|
+
#nav {
|
51
|
+
list-style: none;
|
52
|
+
position: absolute;
|
53
|
+
right: 0;
|
54
|
+
top: 0.6em;
|
55
|
+
}
|
56
|
+
#nav li {
|
57
|
+
display: inline;
|
58
|
+
padding: 0 0.5em;
|
59
|
+
}
|
60
|
+
|
61
|
+
#content {
|
62
|
+
padding: 1em 0;
|
63
|
+
}
|
64
|
+
|
65
|
+
dl {
|
66
|
+
background-color: #DDD;
|
67
|
+
padding: 1em;
|
68
|
+
border: 1px solid #CCC;
|
69
|
+
}
|
70
|
+
dl .pronunciation {
|
71
|
+
color: #C00;
|
72
|
+
}
|
73
|
+
dl .description {
|
74
|
+
text-transform: uppercase;
|
75
|
+
font-size: 0.8em;
|
76
|
+
font-family: fixed;
|
77
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
{"rooms": [
|
2
|
+
{
|
3
|
+
"name": "Room 1",
|
4
|
+
"created_at": "2007/03/16 18:03:21 +0000",
|
5
|
+
"updated_at": "2007/03/16 18:03:21 +0000",
|
6
|
+
"topic": "Testing",
|
7
|
+
"id": 80749,
|
8
|
+
"membership_limit": 4
|
9
|
+
},
|
10
|
+
{
|
11
|
+
"name": "Room 2",
|
12
|
+
"created_at": "2007/03/16 18:04:54 +0000",
|
13
|
+
"updated_at": "2007/03/16 18:04:54 +0000",
|
14
|
+
"topic": "test",
|
15
|
+
"id": 80751,
|
16
|
+
"membership_limit": 4
|
17
|
+
}]
|
18
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
{
|
2
|
+
"room": {
|
3
|
+
"full": false,
|
4
|
+
"name": "Room 1",
|
5
|
+
"created_at": "2007/03/16 18:03:21 +0000",
|
6
|
+
"updated_at": "2007/03/16 18:03:21 +0000",
|
7
|
+
"users": [{
|
8
|
+
"type": "Member",
|
9
|
+
"created_at": "2006/12/07 21:20:39 +0000",
|
10
|
+
"email_address": "jane@example.com",
|
11
|
+
"admin": true,
|
12
|
+
"id": 1,
|
13
|
+
"name": "Jane Doe"
|
14
|
+
}],
|
15
|
+
"topic": "Testing",
|
16
|
+
"active_token_value": "90cf7",
|
17
|
+
"id": 80749,
|
18
|
+
"open_to_guests": true,
|
19
|
+
"membership_limit": 4
|
20
|
+
}
|
21
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
{
|
2
|
+
"room": {
|
3
|
+
"full": false,
|
4
|
+
"name": "Room 2",
|
5
|
+
"created_at": "2007/03/16 18:03:21 +0000",
|
6
|
+
"updated_at": "2007/03/16 18:03:21 +0000",
|
7
|
+
"users": [{
|
8
|
+
"type": "Member",
|
9
|
+
"created_at": "2006/12/07 21:20:39 +0000",
|
10
|
+
"email_address": "john@example.com",
|
11
|
+
"admin": true,
|
12
|
+
"id": 2,
|
13
|
+
"name": "John Doe"
|
14
|
+
}],
|
15
|
+
"topic": "Testing",
|
16
|
+
"active_token_value": "90cf7",
|
17
|
+
"id": 80751,
|
18
|
+
"open_to_guests": true,
|
19
|
+
"membership_limit": 4
|
20
|
+
}
|
21
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
{
|
2
|
+
"room": {
|
3
|
+
"full": false,
|
4
|
+
"name": "Room 1",
|
5
|
+
"created_at": "2007/03/16 18:03:21 +0000",
|
6
|
+
"updated_at": "2007/03/16 18:03:21 +0000",
|
7
|
+
"users": [{
|
8
|
+
"type": "Member",
|
9
|
+
"created_at": "2006/12/07 21:20:39 +0000",
|
10
|
+
"email_address": "brandon@opensoul.org",
|
11
|
+
"admin": true,
|
12
|
+
"id": 129553,
|
13
|
+
"name": "Brandon Keepers"
|
14
|
+
}],
|
15
|
+
"topic": "Testing",
|
16
|
+
"active_token_value": "90cf7",
|
17
|
+
"id": 80749,
|
18
|
+
"open_to_guests": true,
|
19
|
+
"membership_limit": 4
|
20
|
+
}
|
21
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
$:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'spec'
|
5
|
+
require 'tinder'
|
6
|
+
require 'fakeweb'
|
7
|
+
|
8
|
+
FakeWeb.allow_net_connect = false
|
9
|
+
|
10
|
+
def fixture(name)
|
11
|
+
File.read(File.dirname(__FILE__) + "/fixtures/#{name}")
|
12
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Tinder::Campfire do
|
4
|
+
before do
|
5
|
+
@campfire = Tinder::Campfire.new('test', :token => 'mytoken')
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "rooms" do
|
9
|
+
before do
|
10
|
+
FakeWeb.register_uri(:get, "http://mytoken:X@test.campfirenow.com/rooms.json",
|
11
|
+
:body => fixture('rooms.json'), :content_type => "application/json")
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should return rooms" do
|
15
|
+
@campfire.rooms.size.should == 2
|
16
|
+
@campfire.rooms.first.should be_kind_of(Tinder::Room)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should set the room name and id" do
|
20
|
+
room = @campfire.rooms.first
|
21
|
+
room.name.should == 'Room 1'
|
22
|
+
room.id.should == 80749
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "users" do
|
27
|
+
before do
|
28
|
+
FakeWeb.register_uri(:get, "http://mytoken:X@test.campfirenow.com/rooms.json",
|
29
|
+
:body => fixture('rooms.json'), :content_type => "application/json")
|
30
|
+
[80749, 80751].each do |id|
|
31
|
+
FakeWeb.register_uri(:get, "http://mytoken:X@test.campfirenow.com/room/#{id}.json",
|
32
|
+
:body => fixture("rooms/room#{id}.json"), :content_type => "application/json")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should return a sorted list of users in all rooms" do
|
37
|
+
@campfire.users.length.should == 2
|
38
|
+
@campfire.users.first[:name].should == "Jane Doe"
|
39
|
+
@campfire.users.last[:name].should == "John Doe"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "me" do
|
44
|
+
before do
|
45
|
+
FakeWeb.register_uri(:get, "http://mytoken:X@test.campfirenow.com/users/me.json",
|
46
|
+
:body => fixture('users/me.json'), :content_type => "application/json")
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should return the current user's information" do
|
50
|
+
@campfire.me["name"].should == "John Doe"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Tinder::Connection do
|
4
|
+
describe "authentication" do
|
5
|
+
it "should raise an exception with bad credentials" do
|
6
|
+
FakeWeb.register_uri(:get, "http://foo:X@test.campfirenow.com/rooms.json",
|
7
|
+
:status => ["401", "Unauthorized"])
|
8
|
+
connection = Tinder::Connection.new('test', :token => 'foo')
|
9
|
+
lambda { connection.get('/rooms.json') }.should raise_error(Tinder::AuthenticationFailed)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should lookup token when username/password provided" do
|
13
|
+
FakeWeb.register_uri(:get, "http://user:pass@test.campfirenow.com/users/me.json",
|
14
|
+
:body => fixture('users/me.json'), :content_type => "application/json")
|
15
|
+
connection = Tinder::Connection.new('test', :username => 'user', :password => 'pass')
|
16
|
+
connection.token.should.should == "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
it "should use basic auth for credentials" do
|
21
|
+
FakeWeb.register_uri(:get, "http://mytoken:X@test.campfirenow.com/rooms.json",
|
22
|
+
:body => fixture('rooms.json'), :content_type => "application/json")
|
23
|
+
connection = Tinder::Connection.new('test', :token => 'mytoken')
|
24
|
+
lambda { connection.get('/rooms.json') }.should_not raise_error
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Tinder::Room do
|
4
|
+
before do
|
5
|
+
FakeWeb.register_uri(:get, "http://mytoken:X@test.campfirenow.com/room/80749.json",
|
6
|
+
:body => fixture('rooms/show.json'), :content_type => "application/json")
|
7
|
+
@room = Tinder::Room.new(Tinder::Connection.new('test', :token => 'mytoken'), 'id' => 80749)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "join" do
|
11
|
+
FakeWeb.register_uri(:post, "http://mytoken:X@test.campfirenow.com/room/80749/join.json", :status => '200')
|
12
|
+
|
13
|
+
it "should post to join url" do
|
14
|
+
@room.join
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "leave" do
|
19
|
+
before do
|
20
|
+
FakeWeb.register_uri(:post, "http://mytoken:X@test.campfirenow.com/room/80749/leave.json", :status => '200')
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should post to leave url" do
|
24
|
+
@room.leave
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "lock" do
|
29
|
+
before do
|
30
|
+
FakeWeb.register_uri(:post, "http://mytoken:X@test.campfirenow.com/room/80749/lock.json", :status => '200')
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should post to lock url" do
|
34
|
+
@room.lock
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "unlock" do
|
39
|
+
before do
|
40
|
+
FakeWeb.register_uri(:post, "http://mytoken:X@test.campfirenow.com/room/80749/unlock.json", :status => '200')
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should post to unlock url" do
|
44
|
+
@room.unlock
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "guest_url" do
|
49
|
+
it "should use guest_invite_code if active" do
|
50
|
+
@room.stub!(:guest_access_enabled? => true, :guest_invite_code => '123')
|
51
|
+
@room.guest_url.should == "http://test.campfirenow.com/123"
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should return nil when guest access is not enabled" do
|
55
|
+
@room.stub!(:guest_access_enabled?).and_return(false)
|
56
|
+
@room.guest_url.should be_nil
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should set guest_invite_code" do
|
61
|
+
@room.guest_invite_code.should == "90cf7"
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should set guest_access_enabled?" do
|
65
|
+
@room.guest_access_enabled?.should be_true
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "name=" do
|
69
|
+
it "should put to update the room" do
|
70
|
+
FakeWeb.register_uri(:put, "http://mytoken:X@test.campfirenow.com/room/80749.json",
|
71
|
+
:status => '200')
|
72
|
+
@room.name = "Foo"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "listen" do
|
77
|
+
before do
|
78
|
+
require 'twitter/json_stream'
|
79
|
+
# Get EventMachine out of the way. We could be using em-spec, but seems like overkill for testing one method.
|
80
|
+
module EventMachine; def self.run; yield end end
|
81
|
+
@stream = mock(Twitter::JSONStream)
|
82
|
+
@stream.stub!(:each_item)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should get from the streaming url" do
|
86
|
+
Twitter::JSONStream.should_receive(:connect).
|
87
|
+
with({:host=>"streaming.campfirenow.com", :path=>"/room/80749/live.json", :auth=>"mytoken:X", :timeout=>2}).
|
88
|
+
and_return(@stream)
|
89
|
+
@room.listen { }
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should raise an exception if no block is given" do
|
93
|
+
lambda {
|
94
|
+
@room.listen
|
95
|
+
}.should raise_error("no block provided")
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|