github_api 0.1.0.pre → 0.1.0
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/README.rdoc +21 -3
- data/lib/github_api/api.rb +22 -2
- data/lib/github_api/client.rb +6 -1
- data/lib/github_api/configuration.rb +1 -1
- data/lib/github_api/git_data/blobs.rb +42 -0
- data/lib/github_api/git_data/commits.rb +69 -0
- data/lib/github_api/git_data/references.rb +104 -0
- data/lib/github_api/git_data/tags.rb +69 -0
- data/lib/github_api/git_data/trees.rb +80 -0
- data/lib/github_api/issues/comments.rb +1 -0
- data/lib/github_api/orgs/members.rb +1 -0
- data/lib/github_api/repos/keys.rb +68 -17
- data/lib/github_api/repos/watching.rb +68 -24
- data/lib/github_api/request/oauth2.rb +3 -3
- data/lib/github_api/version.rb +1 -1
- data/spec/fixtures/repos/key.json +6 -0
- data/spec/fixtures/repos/keys.json +8 -0
- data/spec/fixtures/repos/watched.json +29 -0
- data/spec/fixtures/repos/watchers.json +8 -0
- data/spec/github/api_spec.rb +21 -2
- data/spec/github/repos/keys_spec.rb +202 -2
- data/spec/github/repos/watching_spec.rb +209 -2
- data/spec/github/repos_spec.rb +5 -2
- data/spec/github_spec.rb +89 -1
- data/spec/spec_helper.rb +52 -1
- metadata +32 -17
@@ -3,48 +3,92 @@
|
|
3
3
|
module Github
|
4
4
|
class Repos
|
5
5
|
module Watching
|
6
|
-
|
6
|
+
|
7
7
|
# List repo watchers
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# = Examples
|
10
|
+
# @github = Github.new :user => 'user-name', :repo => 'repo-name'
|
11
|
+
# @github.repos.watchers
|
12
|
+
# @github.repos.watchers { |watcher| ... }
|
10
13
|
#
|
11
|
-
def watchers
|
12
|
-
|
14
|
+
def watchers(user_name=nil, repo_name=nil, params={})
|
15
|
+
_update_user_repo_params(user_name, repo_name)
|
16
|
+
_validate_user_repo_params(user, repo) unless user? && repo?
|
17
|
+
_normalize_params_keys(params)
|
18
|
+
|
19
|
+
response = get("/repos/#{user}/#{repo}/watchers")
|
20
|
+
return response unless block_given?
|
21
|
+
response.each { |el| yield el }
|
13
22
|
end
|
14
|
-
|
15
|
-
# List repos being watched
|
16
|
-
|
17
|
-
|
23
|
+
|
24
|
+
# List repos being watched by a user
|
25
|
+
#
|
26
|
+
# = Examples
|
27
|
+
# @github = Github.new :user => 'user-name'
|
28
|
+
# @github.repos.watched
|
29
|
+
#
|
30
|
+
# List repos being watched by the authenticated user
|
31
|
+
#
|
32
|
+
# = Examples
|
33
|
+
# @github = Github.new :oauth_token => '...'
|
34
|
+
# @github.repos.watched
|
35
|
+
#
|
36
|
+
def watched(user_name=nil, params={})
|
37
|
+
_update_user_repo_params(user_name)
|
38
|
+
_normalize_params_keys(params)
|
39
|
+
|
40
|
+
response = if user
|
18
41
|
get("/users/#{user}/watched")
|
19
42
|
else
|
20
43
|
get("/user/watched")
|
21
44
|
end
|
45
|
+
return response unless block_given?
|
46
|
+
response.each { |el| yield el }
|
22
47
|
end
|
23
48
|
|
24
|
-
# Check if you are watching a
|
49
|
+
# Check if you are watching a repository
|
25
50
|
#
|
26
|
-
#
|
51
|
+
# Returns <tt>true</tt> if this repo is watched by you, <tt>false</tt> otherwise
|
52
|
+
# = Examples
|
53
|
+
# @github = Github.new
|
54
|
+
# @github.repos.watching? 'user-name', 'repo-name'
|
27
55
|
#
|
28
|
-
def watching?(
|
29
|
-
|
56
|
+
def watching?(user_name, repo_name, params={})
|
57
|
+
_validate_presence_of user_name, repo_name
|
58
|
+
_normalize_params_keys(params)
|
59
|
+
get("/user/watched/#{user_name}/#{repo_name}")
|
60
|
+
true
|
61
|
+
rescue Github::ResourceNotFound
|
62
|
+
false
|
30
63
|
end
|
31
64
|
|
32
|
-
# Watch a
|
65
|
+
# Watch a repository
|
33
66
|
#
|
34
|
-
#
|
67
|
+
# You need to be authenticated to watch a repository
|
35
68
|
#
|
36
|
-
|
37
|
-
|
69
|
+
# = Examples
|
70
|
+
# @github = Github.new
|
71
|
+
# @github.repos.start_watching 'user-name', 'repo-name'
|
72
|
+
#
|
73
|
+
def start_watching(user_name, repo_name, params={})
|
74
|
+
_validate_presence_of user_name, repo_name
|
75
|
+
_normalize_params_keys(params)
|
76
|
+
put("/user/watched/#{user_name}/#{repo_name}")
|
38
77
|
end
|
39
|
-
|
40
|
-
# Stop watching a
|
78
|
+
|
79
|
+
# Stop watching a repository
|
41
80
|
#
|
42
|
-
#
|
81
|
+
# You need to be authenticated to stop watching a repository.
|
82
|
+
# = Examples
|
83
|
+
# @github = Github.new
|
84
|
+
# @github.repos.start_watching 'user-name', 'repo-name'
|
43
85
|
#
|
44
|
-
def stop_watching(
|
45
|
-
|
86
|
+
def stop_watching(user_name, repo_name, params={})
|
87
|
+
_validate_presence_of user_name, repo_name
|
88
|
+
_normalize_params_keys(params)
|
89
|
+
delete("/user/watched/#{user_name}/#{repo_name}")
|
46
90
|
end
|
47
91
|
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
92
|
+
end # Watching
|
93
|
+
end # Repos
|
94
|
+
end # Github
|
@@ -8,9 +8,9 @@ module Github
|
|
8
8
|
dependency 'oauth2'
|
9
9
|
|
10
10
|
def call(env)
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
# puts "ENV: #{env.inspect}"
|
12
|
+
# puts "TOKEN : #{@token}"
|
13
|
+
# puts "APP: #{@app}"
|
14
14
|
|
15
15
|
# Extract parameters from the query
|
16
16
|
params = env[:url].query_values || {}
|
data/lib/github_api/version.rb
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"url": "https://api.github.com/repos/octocat/Hello-World",
|
4
|
+
"html_url": "https://github.com/octocat/Hello-World",
|
5
|
+
"clone_url": "https://github.com/octocat/Hello-World.git",
|
6
|
+
"git_url": "git://github.com/octocat/Hello-World.git",
|
7
|
+
"ssh_url": "git@github.com:octocat/Hello-World.git",
|
8
|
+
"svn_url": "https://svn.github.com/octocat/Hello-World",
|
9
|
+
"owner": {
|
10
|
+
"login": "octocat",
|
11
|
+
"id": 1,
|
12
|
+
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
13
|
+
"url": "https://api.github.com/users/octocat"
|
14
|
+
},
|
15
|
+
"name": "Hello-World",
|
16
|
+
"description": "This your first repo!",
|
17
|
+
"homepage": "https://github.com",
|
18
|
+
"language": null,
|
19
|
+
"private": false,
|
20
|
+
"fork": false,
|
21
|
+
"forks": 9,
|
22
|
+
"watchers": 80,
|
23
|
+
"size": 108,
|
24
|
+
"master_branch": "master",
|
25
|
+
"open_issues": 0,
|
26
|
+
"pushed_at": "2011-01-26T19:06:43Z",
|
27
|
+
"created_at": "2011-01-26T19:01:12Z"
|
28
|
+
}
|
29
|
+
]
|
data/spec/github/api_spec.rb
CHANGED
@@ -1,6 +1,25 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Github::API do
|
4
|
-
|
5
|
-
|
4
|
+
|
5
|
+
let(:api) { Github::API.new }
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
@params = { 'a' => { :b => { 'c' => 1 }, 'd' => [ 'a', { :e => 2 }] } }
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should stringify all the keys inside nested hash" do
|
12
|
+
actual = api.send(:_normalize_params_keys, @params)
|
13
|
+
expected = { 'a' => { 'b'=> { 'c' => 1 }, 'd' => [ 'a', { 'e'=> 2 }] } }
|
14
|
+
actual.should == expected
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should filter param keys" do
|
18
|
+
valid = ['a', 'b', 'e']
|
19
|
+
hash = {'a' => 1, 'b' => 3, 'c' => 2, 'd'=> 4, 'e' => 5 }
|
20
|
+
actual = api.send(:_filter_params_keys, valid, hash)
|
21
|
+
expected = {'a' => 1, 'b' => 3, 'e' => 5 }
|
22
|
+
actual.should == expected
|
23
|
+
end
|
24
|
+
|
6
25
|
end
|
@@ -1,5 +1,205 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Github::Repos::Keys do
|
4
|
-
|
5
|
-
|
4
|
+
|
5
|
+
let(:github) { Github.new }
|
6
|
+
let(:user) { 'peter-murach'}
|
7
|
+
let(:repo) { 'github' }
|
8
|
+
|
9
|
+
describe "keys" do
|
10
|
+
|
11
|
+
context "resource found" do
|
12
|
+
before do
|
13
|
+
stub_get("/repos/#{user}/#{repo}/keys").
|
14
|
+
to_return(:body => fixture("repos/keys.json"), :status => 200, :headers => {})
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should fail to get resource without username" do
|
18
|
+
github.user, github.repo = nil, nil
|
19
|
+
expect { github.repos.keys }.to raise_error(ArgumentError)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should get the resources" do
|
23
|
+
github.repos.keys(user, repo)
|
24
|
+
a_get("/repos/#{user}/#{repo}/keys").should have_been_made
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should return array of resources" do
|
28
|
+
keys = github.repos.keys(user, repo)
|
29
|
+
keys.should be_an Array
|
30
|
+
keys.should have(1).items
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should get key information" do
|
34
|
+
keys = github.repos.keys(user, repo)
|
35
|
+
keys.first.title.should == 'octocat@octomac'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context "resource not found" do
|
40
|
+
before do
|
41
|
+
stub_get("/repos/#{user}/#{repo}/keys").
|
42
|
+
to_return(:body => fixture("repos/keys.json"), :status => 404)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should fail to retrieve resource" do
|
46
|
+
expect {
|
47
|
+
github.repos.keys user, repo
|
48
|
+
}.to raise_error(Github::ResourceNotFound)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "get_key" do
|
55
|
+
let(:key_id) { 1 }
|
56
|
+
|
57
|
+
context "resource found" do
|
58
|
+
before do
|
59
|
+
stub_get("/repos/#{user}/#{repo}/keys/#{key_id}").
|
60
|
+
to_return(:body => fixture("repos/key.json"), :status => 200)
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should fail to get resource without key" do
|
64
|
+
expect {
|
65
|
+
github.repos.get_key(user, repo, nil)
|
66
|
+
}.to raise_error(ArgumentError)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should get the resource" do
|
70
|
+
github.repos.get_key(user, repo, key_id)
|
71
|
+
a_get("/repos/#{user}/#{repo}/keys/#{key_id}").should have_been_made
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should get key information" do
|
75
|
+
key = github.repos.get_key(user, repo, key_id)
|
76
|
+
key.id.should == key_id
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
context "resource not found" do
|
81
|
+
before do
|
82
|
+
stub_get("/repos/#{user}/#{repo}/keys/#{key_id}").
|
83
|
+
to_return(:body => fixture("repos/keys.json"), :status => 404)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should fail to retrieve resource" do
|
87
|
+
expect {
|
88
|
+
github.repos.get_key(user, repo, key_id)
|
89
|
+
}.to raise_error(Github::ResourceNotFound)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe "create_key" do
|
95
|
+
let(:inputs) { {:title => "octocat@octomac", :key => "ssh-rsa AAA..." } }
|
96
|
+
|
97
|
+
context "resource created" do
|
98
|
+
before do
|
99
|
+
stub_post("/repos/#{user}/#{repo}/keys").
|
100
|
+
to_return(:body => fixture("repos/key.json"), :status => 201)
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should fail to create resource if 'title' input is missing" do
|
104
|
+
expect {
|
105
|
+
github.repos.create_key(user, repo, :key => 'ssh-rsa AAA...')
|
106
|
+
}.to raise_error(ArgumentError)
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should fail to create resource if 'key' input is missing" do
|
110
|
+
expect {
|
111
|
+
github.repos.create_key(user, repo, :title => 'octocat@octomac')
|
112
|
+
}.to raise_error(ArgumentError)
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should create the resource" do
|
116
|
+
github.repos.create_key(user, repo, inputs)
|
117
|
+
a_post("/repos/#{user}/#{repo}/keys").should have_been_made
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should get the key information back" do
|
121
|
+
key = github.repos.create_key(user, repo, inputs)
|
122
|
+
key.title.should == 'octocat@octomac'
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
context "failed to create resource" do
|
127
|
+
before do
|
128
|
+
stub_post("/repos/#{user}/#{repo}/keys").
|
129
|
+
to_return(:body => fixture("repos/key.json"), :status => 404)
|
130
|
+
end
|
131
|
+
|
132
|
+
it "should fail to retrieve resource" do
|
133
|
+
expect {
|
134
|
+
github.repos.create_key(user, repo, inputs)
|
135
|
+
}.to raise_error(Github::ResourceNotFound)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
describe "edit_key" do
|
141
|
+
let(:key_id) { 1 }
|
142
|
+
let(:inputs) { {:title => "octocat@octomac", :key => "ssh-rsa AAA..." } }
|
143
|
+
|
144
|
+
context "resource edited successfully" do
|
145
|
+
before do
|
146
|
+
stub_patch("/repos/#{user}/#{repo}/keys/#{key_id}").
|
147
|
+
to_return(:body => fixture("repos/key.json"), :status => 200)
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should edit the resource" do
|
151
|
+
github.repos.edit_key(user, repo, key_id, inputs)
|
152
|
+
a_patch("/repos/#{user}/#{repo}/keys/#{key_id}").should have_been_made
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should get the key information back" do
|
156
|
+
key = github.repos.edit_key(user, repo, key_id, inputs)
|
157
|
+
key.id.should == key_id
|
158
|
+
key.title.should == 'octocat@octomac'
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
context "failed to edit resource" do
|
163
|
+
before do
|
164
|
+
stub_patch("/repos/#{user}/#{repo}/keys/#{key_id}").
|
165
|
+
to_return(:body => fixture("repos/key.json"), :status => 404)
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should fail to retrieve resource" do
|
169
|
+
expect {
|
170
|
+
github.repos.edit_key(user, repo, key_id, inputs)
|
171
|
+
}.to raise_error(Github::ResourceNotFound)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
end
|
176
|
+
|
177
|
+
describe "delete_key" do
|
178
|
+
let(:key_id) { 1 }
|
179
|
+
|
180
|
+
context "resource found successfully" do
|
181
|
+
before do
|
182
|
+
stub_delete("/repos/#{user}/#{repo}/keys/#{key_id}").
|
183
|
+
to_return(:body => "", :status => 204)
|
184
|
+
end
|
185
|
+
|
186
|
+
it "should delete the resource" do
|
187
|
+
github.repos.delete_key(user, repo, key_id)
|
188
|
+
a_delete("/repos/#{user}/#{repo}/keys/#{key_id}").should have_been_made
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
context "failed to find resource" do
|
193
|
+
before do
|
194
|
+
stub_delete("/repos/#{user}/#{repo}/keys/#{key_id}").
|
195
|
+
to_return(:body => "", :status => 404)
|
196
|
+
end
|
197
|
+
it "should fail to find resource" do
|
198
|
+
expect {
|
199
|
+
github.repos.delete_key(user, repo, key_id)
|
200
|
+
}.to raise_error(Github::ResourceNotFound)
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
end # Github::Repos::Keys
|
@@ -1,5 +1,212 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Github::Repos::Watching do
|
4
|
-
|
5
|
-
|
6
|
+
|
7
|
+
let(:github) { Github.new }
|
8
|
+
let(:user) { 'peter-murach' }
|
9
|
+
let(:repo) { 'github' }
|
10
|
+
|
11
|
+
describe "watchers" do
|
12
|
+
before do
|
13
|
+
stub_get("/repos/#{user}/#{repo}/watchers").
|
14
|
+
to_return(:body => fixture("repos/watchers.json"), :status => 200, :headers => {})
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should fail to get resource without username" do
|
18
|
+
github.user, github.repo = nil, nil
|
19
|
+
expect { github.repos.watchers }.to raise_error(ArgumentError)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should yield iterator if block given" do
|
23
|
+
pending
|
24
|
+
block = lambda { ['a', 'b', 'c'] }
|
25
|
+
github.repos.watchers(user, repo, &block)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should get the resources" do
|
29
|
+
github.repos.watchers(user, repo)
|
30
|
+
a_get("/repos/#{user}/#{repo}/watchers").should have_been_made
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should return array of resources" do
|
34
|
+
watchers = github.repos.watchers(user, repo)
|
35
|
+
watchers.should be_an Array
|
36
|
+
watchers.should have(1).items
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should get watcher information" do
|
40
|
+
watchers = github.repos.watchers(user, repo)
|
41
|
+
watchers.first.login.should == 'octocat'
|
42
|
+
end
|
43
|
+
|
44
|
+
context "fail to find resource" do
|
45
|
+
before do
|
46
|
+
stub_get("/repos/#{user}/#{repo}/watchers").
|
47
|
+
to_return(:body => "", :status => 404)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should return 404 not found message" do
|
51
|
+
lambda { github.repos.watchers(user, repo) }.should raise_error(Github::ResourceNotFound)
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "watched" do
|
59
|
+
|
60
|
+
context "if user unauthenticated" do
|
61
|
+
before do
|
62
|
+
WebMock.reset!
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should fail to get resource without username " do
|
66
|
+
stub_get("/user/watched").
|
67
|
+
to_return(:body => fixture("repos/watched.json"), :status => 401, :headers => {})
|
68
|
+
expect {
|
69
|
+
github.user = nil
|
70
|
+
github.repos.watched
|
71
|
+
}.to raise_error(Github::Unauthorised)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should get the resource with username" do
|
75
|
+
stub_get("/users/#{user}/watched").
|
76
|
+
to_return(:body => fixture("repos/watched.json"), :status => 200, :headers => {})
|
77
|
+
github.repos.watched(user)
|
78
|
+
a_get("/users/#{user}/watched").should have_been_made
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
context "if user authenticated" do
|
83
|
+
before do
|
84
|
+
github.user = nil
|
85
|
+
github.oauth_token = OAUTH_TOKEN
|
86
|
+
stub_get("/user/watched?access_token=#{OAUTH_TOKEN}").
|
87
|
+
to_return(:body => fixture("repos/watched.json"), :status => 200, :headers => {})
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should get the resources" do
|
91
|
+
github.repos.watched
|
92
|
+
a_get("/user/watched?access_token=#{OAUTH_TOKEN}").should have_been_made
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should return array of resources" do
|
96
|
+
watched = github.repos.watched
|
97
|
+
watched.should be_an Array
|
98
|
+
watched.should have(1).items
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should get watched information" do
|
102
|
+
watched = github.repos.watched
|
103
|
+
watched.first.name.should == 'Hello-World'
|
104
|
+
watched.first.owner.login.should == 'octocat'
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe "watching?" do
|
110
|
+
|
111
|
+
context "with username ane reponame passed" do
|
112
|
+
|
113
|
+
context "this repo is being watched by the user"
|
114
|
+
before do
|
115
|
+
github.oauth_token = nil
|
116
|
+
github.user = nil
|
117
|
+
stub_get("/user/watched/#{user}/#{repo}").
|
118
|
+
to_return(:body => "", :status => 404, :headers => {:user_agent => github.user_agent})
|
119
|
+
end
|
120
|
+
|
121
|
+
it "should return false if resource not found" do
|
122
|
+
watching = github.repos.watching? user, repo
|
123
|
+
watching.should be_false
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should return true if resoure found" do
|
127
|
+
stub_get("/user/watched/#{user}/#{repo}").
|
128
|
+
to_return(:body => "", :status => 200, :headers => {:user_agent => github.user_agent})
|
129
|
+
watching = github.repos.watching? user, repo
|
130
|
+
watching.should be_true
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
134
|
+
|
135
|
+
context "without username and reponame passed" do
|
136
|
+
it "should fail validation " do
|
137
|
+
expect { github.repos.watching?(nil, nil) }.to raise_error(ArgumentError)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
describe "start_watching" do
|
143
|
+
|
144
|
+
context "user authenticated" do
|
145
|
+
|
146
|
+
context "with correct information" do
|
147
|
+
before do
|
148
|
+
github.user, github.repo = nil, nil
|
149
|
+
github.oauth_token = OAUTH_TOKEN
|
150
|
+
stub_put("/user/watched/#{user}/#{repo}?access_token=#{OAUTH_TOKEN}").
|
151
|
+
to_return(:body => "", :status => 204, :headers => {})
|
152
|
+
end
|
153
|
+
|
154
|
+
it "should successfully watch a repo" do
|
155
|
+
github.repos.start_watching(user, repo)
|
156
|
+
a_put("/user/watched/#{user}/#{repo}?access_token=#{OAUTH_TOKEN}").should have_been_made
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
context "without correct information" do
|
161
|
+
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
context "user unauthenticated" do
|
166
|
+
it "should fail" do
|
167
|
+
github.oauth_token = nil
|
168
|
+
stub_put("/user/watched/#{user}/#{repo}").
|
169
|
+
to_return(:body => "", :status => 401, :headers => {})
|
170
|
+
expect {
|
171
|
+
github.repos.start_watching(user, repo)
|
172
|
+
}.to raise_error(Github::Unauthorised)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
describe "stop_watching" do
|
178
|
+
|
179
|
+
context "user authenticated" do
|
180
|
+
|
181
|
+
context "with correct information" do
|
182
|
+
before do
|
183
|
+
github.user, github.repo = nil, nil
|
184
|
+
github.oauth_token = OAUTH_TOKEN
|
185
|
+
stub_delete("/user/watched/#{user}/#{repo}?access_token=#{OAUTH_TOKEN}").
|
186
|
+
to_return(:body => "", :status => 204, :headers => {})
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should successfully watch a repo" do
|
190
|
+
github.repos.stop_watching(user, repo)
|
191
|
+
a_delete("/user/watched/#{user}/#{repo}?access_token=#{OAUTH_TOKEN}").should have_been_made
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
context "without correct information" do
|
196
|
+
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
context "user unauthenticated" do
|
201
|
+
it "should fail" do
|
202
|
+
github.oauth_token = nil
|
203
|
+
stub_delete("/user/watched/#{user}/#{repo}").
|
204
|
+
to_return(:body => "", :status => 401, :headers => {})
|
205
|
+
expect {
|
206
|
+
github.repos.stop_watching(user, repo)
|
207
|
+
}.to raise_error(Github::Unauthorised)
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
end # Github::Respos::Watching
|
data/spec/github/repos_spec.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Github::Repos do
|
4
|
-
|
4
|
+
|
5
5
|
let(:github) { Github.new }
|
6
|
-
let(:repo)
|
6
|
+
let(:repo) { mock('object').as_null_object }
|
7
7
|
|
8
8
|
before do
|
9
9
|
github.stub(:repos).and_return(repo)
|
@@ -17,18 +17,21 @@ describe Github::Repos do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should raise error when no user" do
|
20
|
+
pending
|
20
21
|
expect {
|
21
22
|
Github.new.repos.branches
|
22
23
|
}.to raise_error(ArgumentError, /\[user\] parameter cannot be nil/)
|
23
24
|
end
|
24
25
|
|
25
26
|
it "should raise error when no repo" do
|
27
|
+
pending
|
26
28
|
expect {
|
27
29
|
Github.new(:user => 'peter-murach').repos.branches
|
28
30
|
}.to raise_error(ArgumentError, /\[repo\] parameter cannot be nil/)
|
29
31
|
end
|
30
32
|
|
31
33
|
it "should list all branches" do
|
34
|
+
pending
|
32
35
|
github.repos.should_receive(:branches).and_return(@branches)
|
33
36
|
end
|
34
37
|
end
|