octonaut 0.0.1

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.
@@ -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