octonaut 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,30 @@
1
+ sanyer
2
+ birgita
3
+ Sakirk
4
+ shilezi
5
+ zhuyinan
6
+ Sup3rgnu
7
+ tokuda109
8
+ robot9
9
+ bcachet
10
+ turboho
11
+ luoyangylh
12
+ rmmillar86
13
+ yekowele
14
+ ksauzz
15
+ tsnow
16
+ ziyasal
17
+ jessebikman
18
+ svallory
19
+ srned
20
+ rafaelsachetto
21
+ cslew
22
+ igoogle1990
23
+ johnnywell
24
+ yoshi10321
25
+ matthewmspencer
26
+ showaid
27
+ eranb
28
+ mzararagoza
29
+ douglascamata
30
+ jnewland
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+
3
+ describe Octonaut do
4
+
5
+ before :each do
6
+ @old_stderr = $stderr
7
+ $stderr = StringIO.new
8
+ @old_stdout = $stdout
9
+ $stdout = StringIO.new
10
+ end
11
+
12
+ after :each do
13
+ $stderr = @old_stderr
14
+ $stdout = @old_stdout
15
+ end
16
+
17
+ context "with an empty config file" do
18
+ before do
19
+ FileUtils.rm_f Dir.glob(File.join(ENV['HOME'], '.octonaut'))
20
+ end
21
+
22
+ after do
23
+ FileUtils.rm_f Dir.glob(File.join(ENV['HOME'], '.octonaut'))
24
+ end
25
+
26
+ it "works" do
27
+ expect(true).to be_true
28
+ end
29
+ end
30
+
31
+ context "when authenticating" do
32
+
33
+ before do
34
+ FileUtils.cp File.join('spec', 'fixtures', '.netrc'), File.join(ENV['HOME'])
35
+ end
36
+
37
+ it "knows about .netrc info" do
38
+ request = stub_get("https://defunkt:il0veruby@api.github.com/user").
39
+ to_return(json_response("user.json"))
40
+ Octonaut.run %w(-n me)
41
+ expect(request).to have_been_made
42
+ end
43
+
44
+ it "uses basic auth" do
45
+ request = stub_get("https://pengwynn:m3tal@api.github.com/user").
46
+ to_return(json_response("user.json"))
47
+ Octonaut.run %w(--login=pengwynn --password=m3tal me)
48
+ expect(request).to have_been_made
49
+ end
50
+
51
+ it "can use an OAuth token" do
52
+ request = stub_get("https://pengwynn:m3tal@api.github.com/user").
53
+ to_return(json_response("user.json"))
54
+ Octonaut.run %w(--login=pengwynn --password=m3tal me)
55
+ expect(request).to have_been_made
56
+ end
57
+
58
+ it "can use an OAuth token" do
59
+ request = stub_get("https://api.github.com/user").
60
+ with(:headers => { "Authorization" => "token 1234567890123456789012345678901234567890" }).
61
+ to_return(json_response("user.json"))
62
+ Octonaut.run %w(--oauth_token=1234567890123456789012345678901234567890 me)
63
+ expect(request).to have_been_made
64
+ end
65
+
66
+ end
67
+
68
+ end
69
+
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ describe Octonaut do
4
+
5
+ before :each do
6
+ @old_stderr = $stderr
7
+ $stderr = StringIO.new
8
+ @old_stdout = $stdout
9
+ $stdout = StringIO.new
10
+ end
11
+
12
+ after :each do
13
+ $stderr = @old_stderr
14
+ $stdout = @old_stdout
15
+ end
16
+
17
+ context "repositories" do
18
+
19
+ it "displays repository information" do
20
+ request = stub_get('/repos/defunkt/dotjs').
21
+ to_return(json_response("repository.json"))
22
+
23
+ Octonaut.run %w(repo defunkt/dotjs)
24
+
25
+ expect(request).to have_been_made
26
+ expect($stdout.string).to include("1336779")
27
+ expect($stdout.string).to include("dotjs")
28
+
29
+ end
30
+
31
+ it "displays languages for a repository" do
32
+ request = stub_get('/repos/pengwynn/dotfiles/languages').
33
+ to_return(json_response("languages.json"))
34
+
35
+ Octonaut.run %w(languages pengwynn/dotfiles)
36
+ expect(request).to have_been_made
37
+ expect($stdout.string).to eq(fixture('languages.table').read)
38
+ end
39
+
40
+ context "listing repositories" do
41
+
42
+ it "lists your repositories" do
43
+ request = stub_get("https://defunkt:il0veruby@api.github.com/user/repos").
44
+ to_return(json_response("repositories.json"))
45
+
46
+ Octonaut.run %w(-u defunkt -p il0veruby repos)
47
+ expect(request).to have_been_made
48
+
49
+ expect($stdout.string).to eq(fixture('repositories.ls').read)
50
+ end
51
+
52
+ end
53
+
54
+ end
55
+
56
+ end
@@ -0,0 +1,90 @@
1
+ RSpec.configure do |config|
2
+ config.treat_symbols_as_metadata_keys_with_true_values = true
3
+ config.order = 'random'
4
+
5
+ config.before do
6
+ unless ENV['CI']
7
+ @original_home = ENV['HOME']
8
+ new_home = File.expand_path("./tmp/fakehome")
9
+ ENV['HOME'] = new_home
10
+ end
11
+ end
12
+
13
+ config.after do
14
+ ENV['HOME'] = @original_home unless ENV['CI']
15
+ end
16
+
17
+ end
18
+
19
+ require 'octonaut'
20
+ require 'rspec/mocks'
21
+ require 'webmock/rspec'
22
+
23
+ def a_delete(url)
24
+ a_request(:delete, github_url(url))
25
+ end
26
+
27
+ def a_get(url)
28
+ a_request(:get, github_url(url))
29
+ end
30
+
31
+ def a_patch(url)
32
+ a_request(:patch, github_url(url))
33
+ end
34
+
35
+ def a_post(url)
36
+ a_request(:post, github_url(url))
37
+ end
38
+
39
+ def a_put(url)
40
+ a_request(:put, github_url(url))
41
+ end
42
+
43
+ def stub_delete(url)
44
+ stub_request(:delete, github_url(url))
45
+ end
46
+
47
+ def stub_get(url)
48
+ stub_request(:get, github_url(url))
49
+ end
50
+
51
+ def stub_head(url)
52
+ stub_request(:head, github_url(url))
53
+ end
54
+
55
+ def stub_patch(url)
56
+ stub_request(:patch, github_url(url))
57
+ end
58
+
59
+ def stub_post(url)
60
+ stub_request(:post, github_url(url))
61
+ end
62
+
63
+ def stub_put(url)
64
+ stub_request(:put, github_url(url))
65
+ end
66
+
67
+ def fixture_path
68
+ File.expand_path("../fixtures", __FILE__)
69
+ end
70
+
71
+ def fixture(file)
72
+ File.new(fixture_path + '/' + file)
73
+ end
74
+
75
+ def json_response(file)
76
+ {
77
+ :body => fixture(file),
78
+ :headers => {
79
+ :content_type => 'application/json; charset=utf-8'
80
+ }
81
+ }
82
+ end
83
+
84
+ def github_url(url)
85
+ if url =~ /^http/
86
+ url
87
+ else
88
+ "https://api.github.com#{url}"
89
+ end
90
+ end
@@ -0,0 +1,138 @@
1
+ require 'spec_helper'
2
+
3
+ describe Octonaut do
4
+
5
+ before :each do
6
+ @old_stderr = $stderr
7
+ $stderr = StringIO.new
8
+ @old_stdout = $stdout
9
+ $stdout = StringIO.new
10
+ end
11
+
12
+ after :each do
13
+ $stderr = @old_stderr
14
+ $stdout = @old_stdout
15
+ end
16
+
17
+ context "users" do
18
+
19
+ it "looks up users by login" do
20
+ request = stub_get('/users/defunkt').
21
+ to_return(json_response("user.json"))
22
+
23
+ Octonaut.run %w(whois defunkt)
24
+
25
+ expect(request).to have_been_made
26
+ expect($stdout.string).to include("Chris Wanstrath")
27
+ end
28
+
29
+ it "gracefully handles bogus users" do
30
+ request = stub_get('/users/defunktzzz').
31
+ to_return(:status => 404)
32
+
33
+ Octonaut.run %w(whois defunktzzz)
34
+
35
+ expect(request).to have_been_made
36
+ expect($stdout.string).to include("User defunktzzz not found")
37
+ end
38
+
39
+ end
40
+
41
+ context "listing followers" do
42
+
43
+ it "should list followers for the current user" do
44
+ request = stub_get("https://defunkt:il0veruby@api.github.com/users/defunkt/followers").
45
+ to_return(json_response("users.json"))
46
+
47
+ Octonaut.run %w(-l defunkt -p il0veruby followers)
48
+ expect(request).to have_been_made
49
+ expect($stdout.string).to eq(fixture('users.ls').read)
50
+ end
51
+
52
+ it "should list followers for a user" do
53
+ request = stub_get("https://api.github.com/users/pengwynn/followers").
54
+ to_return(json_response("users.json"))
55
+
56
+ Octonaut.run %w(followers pengwynn)
57
+ expect(request).to have_been_made
58
+ expect($stdout.string).to eq(fixture('users.ls').read)
59
+ end
60
+
61
+ end
62
+
63
+ context "listing following" do
64
+
65
+ it "should list who the current users follows" do
66
+ request = stub_get("https://defunkt:il0veruby@api.github.com/users/defunkt/following").
67
+ to_return(json_response("users.json"))
68
+
69
+ Octonaut.run %w(-l defunkt -p il0veruby following)
70
+ expect(request).to have_been_made
71
+ expect($stdout.string).to eq(fixture('users.ls').read)
72
+ end
73
+
74
+ it "should list followers for a user" do
75
+ request = stub_get("https://api.github.com/users/pengwynn/following").
76
+ to_return(json_response("users.json"))
77
+
78
+ Octonaut.run %w(following pengwynn)
79
+ expect(request).to have_been_made
80
+ expect($stdout.string).to eq(fixture('users.ls').read)
81
+ end
82
+
83
+ end
84
+
85
+ context "checking if a user follows another" do
86
+ it "should check if the current user follows a user" do
87
+ request = stub_get("https://defunkt:il0veruby@api.github.com/user/following/pengwynn").
88
+ to_return(:status => 204)
89
+
90
+ Octonaut.run %w(-l defunkt -p il0veruby follows pengwynn)
91
+ expect(request).to have_been_made
92
+ expect($stdout.string).to eq("Yes, defunkt follows pengwynn.\n")
93
+ end
94
+ end
95
+
96
+ context "following users" do
97
+
98
+ it "should follow users" do
99
+
100
+ request = stub_put("https://defunkt:il0veruby@api.github.com/user/following/mojombo").
101
+ to_return(:status => 204)
102
+
103
+ request_two = stub_put("https://defunkt:il0veruby@api.github.com/user/following/joeyw").
104
+ to_return(:status => 204)
105
+
106
+ request_three = stub_put("https://defunkt:il0veruby@api.github.com/user/following/linus").
107
+ to_return(:status => 204)
108
+
109
+ Octonaut.run %w(-l defunkt -p il0veruby follow mojombo joeyw linus)
110
+ expect(request).to have_been_made
111
+ expect(request_two).to have_been_made
112
+ expect(request_three).to have_been_made
113
+ expect($stdout.string).to eq("Followed mojombo.\nFollowed joeyw.\nFollowed linus.\n")
114
+
115
+ end
116
+
117
+ it "should unfollow users" do
118
+
119
+ request = stub_delete("https://defunkt:il0veruby@api.github.com/user/following/mojombo").
120
+ to_return(:status => 204)
121
+
122
+ request_two = stub_delete("https://defunkt:il0veruby@api.github.com/user/following/joeyw").
123
+ to_return(:status => 204)
124
+
125
+ request_three = stub_delete("https://defunkt:il0veruby@api.github.com/user/following/linus").
126
+ to_return(:status => 204)
127
+
128
+ Octonaut.run %w(-l defunkt -p il0veruby unfollow mojombo joeyw linus)
129
+ expect(request).to have_been_made
130
+ expect(request_two).to have_been_made
131
+ expect(request_three).to have_been_made
132
+ expect($stdout.string).to eq("Unfollowed mojombo.\nUnfollowed joeyw.\nUnfollowed linus.\n")
133
+
134
+ end
135
+
136
+ end
137
+ end
138
+
metadata ADDED
@@ -0,0 +1,265 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: octonaut
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Wynn Netherland
9
+ - Larry Marburger
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-03-18 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: octokit
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: 1.22.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: 1.22.0
31
+ - !ruby/object:Gem::Dependency
32
+ name: launchy
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: rdoc
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ - !ruby/object:Gem::Dependency
80
+ name: guard-cucumber
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: rb-fsevent
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ~>
101
+ - !ruby/object:Gem::Version
102
+ version: 0.9.1
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 0.9.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ~>
117
+ - !ruby/object:Gem::Version
118
+ version: 2.12.0
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ~>
125
+ - !ruby/object:Gem::Version
126
+ version: 2.12.0
127
+ - !ruby/object:Gem::Dependency
128
+ name: rspec-mocks
129
+ requirement: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ~>
133
+ - !ruby/object:Gem::Version
134
+ version: 2.12.0
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ~>
141
+ - !ruby/object:Gem::Version
142
+ version: 2.12.0
143
+ - !ruby/object:Gem::Dependency
144
+ name: simplecov
145
+ requirement: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ type: :development
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: webmock
161
+ requirement: !ruby/object:Gem::Requirement
162
+ none: false
163
+ requirements:
164
+ - - ! '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ! '>='
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ - !ruby/object:Gem::Dependency
176
+ name: gli
177
+ requirement: !ruby/object:Gem::Requirement
178
+ none: false
179
+ requirements:
180
+ - - '='
181
+ - !ruby/object:Gem::Version
182
+ version: 2.5.2
183
+ type: :runtime
184
+ prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ none: false
187
+ requirements:
188
+ - - '='
189
+ - !ruby/object:Gem::Version
190
+ version: 2.5.2
191
+ description:
192
+ email: wynn.netherland@gmail.com
193
+ executables:
194
+ - octonaut
195
+ extensions: []
196
+ extra_rdoc_files: []
197
+ files:
198
+ - README.md
199
+ - LICENSE.md
200
+ - Rakefile
201
+ - octonaut.gemspec
202
+ - lib/octonaut/commands/common.rb
203
+ - lib/octonaut/commands/repositories.rb
204
+ - lib/octonaut/commands/users.rb
205
+ - lib/octonaut/helpers.rb
206
+ - lib/octonaut/printer.rb
207
+ - lib/octonaut/printers/organizations.rb
208
+ - lib/octonaut/printers/repositories.rb
209
+ - lib/octonaut/printers/users.rb
210
+ - lib/octonaut/version.rb
211
+ - lib/octonaut.rb
212
+ - bin/octonaut
213
+ - spec/fixtures/languages.json
214
+ - spec/fixtures/languages.table
215
+ - spec/fixtures/repositories.json
216
+ - spec/fixtures/repositories.ls
217
+ - spec/fixtures/repository.json
218
+ - spec/fixtures/user.json
219
+ - spec/fixtures/users.json
220
+ - spec/fixtures/users.ls
221
+ - spec/octonaut_spec.rb
222
+ - spec/repositories_spec.rb
223
+ - spec/spec_helper.rb
224
+ - spec/users_spec.rb
225
+ - spec/fixtures/.netrc
226
+ homepage: http://github.com/pengwynn
227
+ licenses:
228
+ - MIT
229
+ post_install_message:
230
+ rdoc_options: []
231
+ require_paths:
232
+ - lib
233
+ - lib
234
+ required_ruby_version: !ruby/object:Gem::Requirement
235
+ none: false
236
+ requirements:
237
+ - - ! '>='
238
+ - !ruby/object:Gem::Version
239
+ version: '0'
240
+ required_rubygems_version: !ruby/object:Gem::Requirement
241
+ none: false
242
+ requirements:
243
+ - - ! '>='
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ requirements: []
247
+ rubyforge_project:
248
+ rubygems_version: 1.8.23
249
+ signing_key:
250
+ specification_version: 3
251
+ summary: CLI for GitHub
252
+ test_files:
253
+ - spec/fixtures/.netrc
254
+ - spec/fixtures/languages.json
255
+ - spec/fixtures/languages.table
256
+ - spec/fixtures/repositories.json
257
+ - spec/fixtures/repositories.ls
258
+ - spec/fixtures/repository.json
259
+ - spec/fixtures/user.json
260
+ - spec/fixtures/users.json
261
+ - spec/fixtures/users.ls
262
+ - spec/octonaut_spec.rb
263
+ - spec/repositories_spec.rb
264
+ - spec/spec_helper.rb
265
+ - spec/users_spec.rb