tinder 1.3.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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,11 @@
1
+ {
2
+ "user": {
3
+ "email_address": "user@example.com",
4
+ "type": "Member",
5
+ "created_at": "2006/04/06 00:38:28 +0000",
6
+ "admin": true,
7
+ "id": 12345,
8
+ "name": "John Doe",
9
+ "api_auth_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
10
+ }
11
+ }
@@ -1 +1,2 @@
1
1
  --colour
2
+ --backtrace
@@ -1,3 +1,13 @@
1
+ $:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
2
+
1
3
  require 'rubygems'
2
4
  require 'spec'
5
+ gem 'activesupport', ENV['RAILS_VERSION'] if ENV['RAILS_VERSION']
3
6
  require 'tinder'
7
+ require 'fakeweb'
8
+
9
+ FakeWeb.allow_net_connect = false
10
+
11
+ def fixture(name)
12
+ File.read(File.dirname(__FILE__) + "/fixtures/#{name}")
13
+ 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,99 @@
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
+ EventMachine.stub!(:reactor_running?).and_return(true)
82
+ @stream = mock(Twitter::JSONStream)
83
+ @stream.stub!(:each_item)
84
+ end
85
+
86
+ it "should get from the streaming url" do
87
+ Twitter::JSONStream.should_receive(:connect).
88
+ with({:host=>"streaming.campfirenow.com", :path=>"/room/80749/live.json", :auth=>"mytoken:X", :timeout=>6, :ssl=>false}).
89
+ and_return(@stream)
90
+ @room.listen { }
91
+ end
92
+
93
+ it "should raise an exception if no block is given" do
94
+ lambda {
95
+ @room.listen
96
+ }.should raise_error("no block provided")
97
+ end
98
+ end
99
+ end
@@ -5,21 +5,20 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{tinder}
8
- s.version = "1.3.1"
8
+ s.version = "1.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Brandon Keepers"]
12
- s.date = %q{2009-12-17}
13
- s.description = %q{An API for interfacing with Campfire, the 37Signals chat application.}
12
+ s.date = %q{2010-05-11}
13
+ s.description = %q{A Ruby API for interfacing with Campfire, the 37Signals chat application.}
14
14
  s.email = %q{brandon@opensoul.org}
15
15
  s.extra_rdoc_files = [
16
- "README.txt"
16
+ "README.markdown"
17
17
  ]
18
18
  s.files = [
19
19
  ".gitignore",
20
20
  "CHANGELOG.txt",
21
- "Manifest.txt",
22
- "README.txt",
21
+ "README.markdown",
23
22
  "Rakefile",
24
23
  "VERSION",
25
24
  "init.rb",
@@ -30,28 +29,29 @@ Gem::Specification.new do |s|
30
29
  "lib/tinder/room.rb",
31
30
  "site/index.html",
32
31
  "site/stylesheets/style.css",
33
- "spec/campfire_spec.rb",
34
- "spec/html/full_lobby.html",
35
- "spec/html/normal_lobby.html",
36
- "spec/html/transcript.html",
32
+ "spec/fixtures/rooms.json",
33
+ "spec/fixtures/rooms/room80749.json",
34
+ "spec/fixtures/rooms/room80751.json",
35
+ "spec/fixtures/rooms/show.json",
36
+ "spec/fixtures/users/me.json",
37
37
  "spec/spec.opts",
38
38
  "spec/spec_helper.rb",
39
- "test/remote/credentials.rb.example",
40
- "test/remote/remote_campfire_test.rb",
41
- "test/test_helper.rb",
39
+ "spec/tinder/campfire_spec.rb",
40
+ "spec/tinder/connection_spec.rb",
41
+ "spec/tinder/room_spec.rb",
42
42
  "tinder.gemspec"
43
43
  ]
44
44
  s.homepage = %q{http://github.com/collectiveidea/tinder}
45
45
  s.rdoc_options = ["--charset=UTF-8"]
46
46
  s.require_paths = ["lib"]
47
47
  s.rubyforge_project = %q{tinder}
48
- s.rubygems_version = %q{1.3.5}
49
- s.summary = %q{An (unofficial) Campfire API}
48
+ s.rubygems_version = %q{1.3.6}
49
+ s.summary = %q{Ruby wrapper for the Campfire API}
50
50
  s.test_files = [
51
- "spec/campfire_spec.rb",
52
- "spec/spec_helper.rb",
53
- "test/remote/remote_campfire_test.rb",
54
- "test/test_helper.rb"
51
+ "spec/spec_helper.rb",
52
+ "spec/tinder/campfire_spec.rb",
53
+ "spec/tinder/connection_spec.rb",
54
+ "spec/tinder/room_spec.rb"
55
55
  ]
56
56
 
57
57
  if s.respond_to? :specification_version then
@@ -62,18 +62,27 @@ Gem::Specification.new do |s|
62
62
  s.add_runtime_dependency(%q<activesupport>, [">= 0"])
63
63
  s.add_runtime_dependency(%q<httparty>, [">= 0"])
64
64
  s.add_runtime_dependency(%q<mime-types>, [">= 0"])
65
+ s.add_runtime_dependency(%q<twitter-stream>, [">= 0"])
66
+ s.add_runtime_dependency(%q<eventmachine>, [">= 0"])
65
67
  s.add_development_dependency(%q<rspec>, [">= 0"])
68
+ s.add_development_dependency(%q<fakeweb>, [">= 0"])
66
69
  else
67
70
  s.add_dependency(%q<activesupport>, [">= 0"])
68
71
  s.add_dependency(%q<httparty>, [">= 0"])
69
72
  s.add_dependency(%q<mime-types>, [">= 0"])
73
+ s.add_dependency(%q<twitter-stream>, [">= 0"])
74
+ s.add_dependency(%q<eventmachine>, [">= 0"])
70
75
  s.add_dependency(%q<rspec>, [">= 0"])
76
+ s.add_dependency(%q<fakeweb>, [">= 0"])
71
77
  end
72
78
  else
73
79
  s.add_dependency(%q<activesupport>, [">= 0"])
74
80
  s.add_dependency(%q<httparty>, [">= 0"])
75
81
  s.add_dependency(%q<mime-types>, [">= 0"])
82
+ s.add_dependency(%q<twitter-stream>, [">= 0"])
83
+ s.add_dependency(%q<eventmachine>, [">= 0"])
76
84
  s.add_dependency(%q<rspec>, [">= 0"])
85
+ s.add_dependency(%q<fakeweb>, [">= 0"])
77
86
  end
78
87
  end
79
88
 
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tinder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 4
8
+ - 0
9
+ version: 1.4.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - Brandon Keepers
@@ -9,62 +14,105 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-12-17 00:00:00 -05:00
17
+ date: 2010-05-11 00:00:00 -04:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: activesupport
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
23
29
  version: "0"
24
- version:
30
+ type: :runtime
31
+ version_requirements: *id001
25
32
  - !ruby/object:Gem::Dependency
26
33
  name: httparty
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - ">="
32
38
  - !ruby/object:Gem::Version
39
+ segments:
40
+ - 0
33
41
  version: "0"
34
- version:
42
+ type: :runtime
43
+ version_requirements: *id002
35
44
  - !ruby/object:Gem::Dependency
36
45
  name: mime-types
46
+ prerelease: false
47
+ requirement: &id003 !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ segments:
52
+ - 0
53
+ version: "0"
54
+ type: :runtime
55
+ version_requirements: *id003
56
+ - !ruby/object:Gem::Dependency
57
+ name: twitter-stream
58
+ prerelease: false
59
+ requirement: &id004 !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ segments:
64
+ - 0
65
+ version: "0"
37
66
  type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
67
+ version_requirements: *id004
68
+ - !ruby/object:Gem::Dependency
69
+ name: eventmachine
70
+ prerelease: false
71
+ requirement: &id005 !ruby/object:Gem::Requirement
40
72
  requirements:
41
73
  - - ">="
42
74
  - !ruby/object:Gem::Version
75
+ segments:
76
+ - 0
43
77
  version: "0"
44
- version:
78
+ type: :runtime
79
+ version_requirements: *id005
45
80
  - !ruby/object:Gem::Dependency
46
81
  name: rspec
82
+ prerelease: false
83
+ requirement: &id006 !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ segments:
88
+ - 0
89
+ version: "0"
47
90
  type: :development
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
91
+ version_requirements: *id006
92
+ - !ruby/object:Gem::Dependency
93
+ name: fakeweb
94
+ prerelease: false
95
+ requirement: &id007 !ruby/object:Gem::Requirement
50
96
  requirements:
51
97
  - - ">="
52
98
  - !ruby/object:Gem::Version
99
+ segments:
100
+ - 0
53
101
  version: "0"
54
- version:
55
- description: An API for interfacing with Campfire, the 37Signals chat application.
102
+ type: :development
103
+ version_requirements: *id007
104
+ description: A Ruby API for interfacing with Campfire, the 37Signals chat application.
56
105
  email: brandon@opensoul.org
57
106
  executables: []
58
107
 
59
108
  extensions: []
60
109
 
61
110
  extra_rdoc_files:
62
- - README.txt
111
+ - README.markdown
63
112
  files:
64
113
  - .gitignore
65
114
  - CHANGELOG.txt
66
- - Manifest.txt
67
- - README.txt
115
+ - README.markdown
68
116
  - Rakefile
69
117
  - VERSION
70
118
  - init.rb
@@ -75,15 +123,16 @@ files:
75
123
  - lib/tinder/room.rb
76
124
  - site/index.html
77
125
  - site/stylesheets/style.css
78
- - spec/campfire_spec.rb
79
- - spec/html/full_lobby.html
80
- - spec/html/normal_lobby.html
81
- - spec/html/transcript.html
126
+ - spec/fixtures/rooms.json
127
+ - spec/fixtures/rooms/room80749.json
128
+ - spec/fixtures/rooms/room80751.json
129
+ - spec/fixtures/rooms/show.json
130
+ - spec/fixtures/users/me.json
82
131
  - spec/spec.opts
83
132
  - spec/spec_helper.rb
84
- - test/remote/credentials.rb.example
85
- - test/remote/remote_campfire_test.rb
86
- - test/test_helper.rb
133
+ - spec/tinder/campfire_spec.rb
134
+ - spec/tinder/connection_spec.rb
135
+ - spec/tinder/room_spec.rb
87
136
  - tinder.gemspec
88
137
  has_rdoc: true
89
138
  homepage: http://github.com/collectiveidea/tinder
@@ -98,23 +147,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
147
  requirements:
99
148
  - - ">="
100
149
  - !ruby/object:Gem::Version
150
+ segments:
151
+ - 0
101
152
  version: "0"
102
- version:
103
153
  required_rubygems_version: !ruby/object:Gem::Requirement
104
154
  requirements:
105
155
  - - ">="
106
156
  - !ruby/object:Gem::Version
157
+ segments:
158
+ - 0
107
159
  version: "0"
108
- version:
109
160
  requirements: []
110
161
 
111
162
  rubyforge_project: tinder
112
- rubygems_version: 1.3.5
163
+ rubygems_version: 1.3.6
113
164
  signing_key:
114
165
  specification_version: 3
115
- summary: An (unofficial) Campfire API
166
+ summary: Ruby wrapper for the Campfire API
116
167
  test_files:
117
- - spec/campfire_spec.rb
118
168
  - spec/spec_helper.rb
119
- - test/remote/remote_campfire_test.rb
120
- - test/test_helper.rb
169
+ - spec/tinder/campfire_spec.rb
170
+ - spec/tinder/connection_spec.rb
171
+ - spec/tinder/room_spec.rb