git_hub 0.2.10 → 0.3.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.
Files changed (51) hide show
  1. data/README.rdoc +43 -7
  2. data/Rakefile +1 -0
  3. data/VERSION +1 -1
  4. data/bin/git_hub +1 -0
  5. data/git_hub.gemspec +36 -32
  6. data/lib/git_hub.rb +3 -5
  7. data/lib/git_hub/api.rb +8 -13
  8. data/lib/git_hub/base.rb +44 -42
  9. data/lib/git_hub/commit.rb +6 -4
  10. data/lib/git_hub/extensions.rb +25 -0
  11. data/lib/git_hub/repo.rb +21 -24
  12. data/lib/git_hub/user.rb +8 -6
  13. data/spec/git_hub/api_spec.rb +21 -0
  14. data/spec/git_hub/base_spec.rb +5 -5
  15. data/spec/git_hub/commit_spec.rb +2 -2
  16. data/spec/git_hub/extensions_spec.rb +55 -0
  17. data/spec/git_hub/repo_spec.rb +51 -40
  18. data/spec/git_hub/user_spec.rb +26 -20
  19. data/spec/spec_helper.rb +31 -46
  20. data/spec/stubs/{api_route_error.res → yaml/api_route_error.res} +0 -0
  21. data/spec/stubs/{commits → yaml/commits}/list/joe007/fine_repo/master.res +0 -0
  22. data/spec/stubs/{commits → yaml/commits}/list/joe007/fine_repo/master/README.res +0 -0
  23. data/spec/stubs/{commits → yaml/commits}/show/joe007/fine_repo/3a70f86293b719f193f778a8710b1f83f2f7bf38.res +0 -0
  24. data/spec/stubs/{commits → yaml/commits}/show/joe007/fine_repo/5e61f0687c40ca48214d09dc7ae2d0d0d8fbfeb8.res +0 -0
  25. data/spec/stubs/{commits → yaml/commits}/show/joe007/fine_repo/f7f5dddaa37deacc83f1f56876e2b135389d03ab.res +0 -0
  26. data/spec/stubs/{repos → yaml/repos}/create.1.res +0 -0
  27. data/spec/stubs/{repos → yaml/repos}/create.2.res +0 -0
  28. data/spec/stubs/{repos → yaml/repos}/create.3.res +0 -0
  29. data/spec/stubs/{repos → yaml/repos}/create.4.res +0 -0
  30. data/spec/stubs/{repos → yaml/repos}/delete/new_repo.1.res +0 -0
  31. data/spec/stubs/{repos → yaml/repos}/delete/new_repo.2.res +0 -0
  32. data/spec/stubs/{repos → yaml/repos}/delete/new_repo.res +0 -0
  33. data/spec/stubs/{repos → yaml/repos}/search/fine+repo.res +0 -0
  34. data/spec/stubs/{repos → yaml/repos}/search/joe+repo.res +0 -0
  35. data/spec/stubs/yaml/repos/show/invalid_github_user/err_repo.res +14 -0
  36. data/spec/stubs/{repos → yaml/repos}/show/joe007.res +0 -0
  37. data/spec/stubs/{repos → yaml/repos}/show/joe007/err_repo.res +0 -0
  38. data/spec/stubs/{repos → yaml/repos}/show/joe007/fine_repo.res +0 -0
  39. data/spec/stubs/{repos → yaml/repos}/show/joe007/fine_repo/branches.res +0 -0
  40. data/spec/stubs/{repos → yaml/repos}/show/joe007/fine_repo/tags.res +0 -0
  41. data/spec/stubs/{repos → yaml/repos}/show/joe007/new_repo.res +0 -0
  42. data/spec/stubs/{user → yaml/user}/follow/arvicco.res +0 -0
  43. data/spec/stubs/{user → yaml/user}/search/joe+007.res +0 -0
  44. data/spec/stubs/{user → yaml/user}/show/arvicco.res +0 -0
  45. data/spec/stubs/{user/show/joe_is_not_github_user.res → yaml/user/show/invalid_github_user.res} +7 -3
  46. data/spec/stubs/{user → yaml/user}/show/joe007.auth.res +0 -0
  47. data/spec/stubs/{user → yaml/user}/show/joe007.res +0 -0
  48. data/spec/stubs/{user → yaml/user}/show/joe007/followers.res +0 -0
  49. data/spec/stubs/{user → yaml/user}/show/joe007/following.empty.res +0 -0
  50. data/spec/stubs/{user → yaml/user}/show/joe007/following.res +0 -0
  51. metadata +36 -32
@@ -1,5 +1,4 @@
1
1
  require 'spec'
2
- require 'cgi'
3
2
  require 'fakeweb'
4
3
  require 'fakeweb_matcher'
5
4
  require File.expand_path(File.join(File.dirname(__FILE__), %w[.. lib git_hub]))
@@ -26,64 +25,41 @@ Spec::Runner.configure do |config|
26
25
  config.extend(SpecMacros)
27
26
  end
28
27
 
29
- module GitHubTest
28
+ module GitHubTest
30
29
 
31
30
  # Test related Constants:
32
- TEST_FAKE_WEB = false # turning this flag off switches on real-life github testing
31
+ TEST_FAKE_WEB = true # turning this flag on routes all Net calls to local stubs
33
32
 
34
- # Checks that given block does not raise any errors
35
- def use
36
- lambda {yield}.should_not raise_error
37
- end
33
+ API = GitHub::Api.instance
38
34
 
39
35
  # Extract response from file
40
- def response_from_file(file_path, uri_path='')
36
+ def response_from_file( file_path, uri_path = '' )
41
37
  filename = File.join(File.dirname(__FILE__), 'stubs', file_path + '.res')
42
38
  unless File.exists?(filename) && !File.directory?(filename)
43
- raise "No stub file #{filename}. To obtain it use:\n#{curl_string(uri_path, filename)}"
39
+ raise "No stub file #{filename}. To obtain it use:\n#{curl_string(filename, uri_path)}"
44
40
  end
45
41
  filename
46
42
  end
47
43
 
48
- def curl_string(uri_path, filename)
44
+ # Curl command to retrieve non-existent stub file
45
+ def curl_string( filename, uri_path )
49
46
  if api.authenticated?
50
47
  "curl -i -d \"login=#{api.auth['login']}&token=#{api.auth['token']}\" #{uri_path} > #{filename}"
51
48
  else
52
- "curl -i #{github_yaml}#{path} > #{filename}"
49
+ "curl -i #{uri_path} > #{filename}"
53
50
  end
54
51
  end
55
52
 
56
- # Stubs github server, with options:
57
- # :host:: Host name - default 'github.com'
58
- # :port:: Port - default 80
59
- def stub_server(options={})
60
- server = Net::HTTP.new(options[:host] ||'github.com', options[:port] || 80)
61
- Net::HTTP.stub!(:new).and_return(server)
62
- server
63
- end
64
-
65
- # Stubs http request, with options:
66
- # :path:: Request path - default '/api/v2/yaml/repos/create'
67
- # :get:: Indicates that request is get, otherwise post
68
- def stub_req(options={})
69
- path = options[:path] || '/api/v2/yaml/repos/create'
70
- options[:get] ? Net::HTTP::Get.new(path) : Net::HTTP::Post.new(path)
71
- end
72
-
73
- def stub_server_and_req(options = {})
74
- [stub_server(options), stub_req(options)]
75
- end
76
-
77
53
  # Converts path to uri, registers it with FakeWeb with stub file at stubs/(http)/path as a response
78
54
  # If extensions given (possibly as an Array), looks for stub files with extensions, responds in sequence
79
55
  # If block is given, yields to block and checks that registered uri was hit during block execution
80
- def expect(method, path, extensions = nil)
81
- uri_path = path
56
+ def expect( method, path, extensions = nil )
82
57
  if TEST_FAKE_WEB
58
+ uri_path = path
83
59
  [extensions].flatten.each do |ext|
84
60
  case path
85
61
  when Regexp.new(github_yaml)
86
- file_path = path.sub(github_yaml, '')
62
+ file_path = path.sub(github_yaml, '/yaml')
87
63
  when Regexp.new(github_http)
88
64
  file_path = path.sub(github_http, '/http')
89
65
  else
@@ -102,9 +78,14 @@ module GitHubTest
102
78
  end
103
79
  end
104
80
 
105
- # Auth for joe
81
+ # Remove authentication
82
+ def clear_auth
83
+ API.auth.clear
84
+ end
85
+
86
+ # Authenticate as joe
106
87
  def authenticate_as_joe
107
- api.auth = joe_auth
88
+ API.auth = joe_auth
108
89
  end
109
90
 
110
91
  def joe_auth
@@ -116,7 +97,7 @@ module GitHubTest
116
97
  GitHub::User.find(:user=>'joe007')
117
98
  end
118
99
 
119
- def github_http
100
+ def github_http
120
101
  'http://github.com'
121
102
  end
122
103
 
@@ -124,16 +105,19 @@ module GitHubTest
124
105
  'http://github.com/api/v2/yaml'
125
106
  end
126
107
 
127
- def api
128
- GitHub::Api.instance
108
+ # repo name for 'new_repo' for real life tests - needed because GitHub
109
+ # gets stuck after several attempts to create repo with the same name
110
+ def new_repo
111
+ @new_repo_name ||= TEST_FAKE_WEB ? 'new_repo' : "new_repo#{Time.now.strftime("%Y%m%d-%H%M%S")}"
129
112
  end
130
113
 
114
+ # waits a little bit - needed because cache is sticky on real github
131
115
  def wait
132
- sleep 1 unless TEST_FAKE_WEB # cache is sticky on real github
116
+ sleep 1 unless TEST_FAKE_WEB
133
117
  end
134
118
 
135
119
  # specific expectations used in more than one spec file
136
- def should_be_commit commit, type
120
+ def should_be_commit( commit, type )
137
121
  arvicco = { 'name'=> 'arvicco', 'email'=> 'arvitallian@gmail.com'}
138
122
  commit.should be_a GitHub::Commit
139
123
  commit.author.should == arvicco
@@ -142,18 +126,19 @@ module GitHubTest
142
126
  commit.repo.should == 'fine_repo'
143
127
  case type.to_s
144
128
  when '5e61'
129
+ commit.parents.should == [{"id"=>"f7f5dddaa37deacc83f1f56876e2b135389d03ab"}]
145
130
  commit.sha.should == '5e61f0687c40ca48214d09dc7ae2d0d0d8fbfeb8'
146
131
  commit.url.should == 'http://github.com/joe007/fine_repo/commit/5e61f0687c40ca48214d09dc7ae2d0d0d8fbfeb8'
147
- commit.committed_date.should == "2010-01-08T02:49:26-08:00"
148
- commit.authored_date.should == "2010-01-08T02:49:26-08:00"
132
+ commit.committed.should == Time.parse("2010-01-08T02:49:26-08:00")
133
+ commit.authored.should == Time.parse("2010-01-08T02:49:26-08:00")
149
134
  commit.message.should == 'Version bump to 0.1.2'
150
135
  commit.tree.should == '917a288e375020ac4c0f4413dc6f23d6f06fc51b'
151
136
  when '543b'
152
137
  commit.parents.should == []
153
138
  commit.sha.should == '4f223bdbbfe6acade73f4b81d089f0705b07d75d'
154
139
  commit.url.should == 'http://github.com/joe007/fine_repo/commit/4f223bdbbfe6acade73f4b81d089f0705b07d75d'
155
- commit.committed_date.should == "2010-01-08T01:20:55-08:00"
156
- commit.authored_date.should == "2010-01-08T01:20:55-08:00"
140
+ commit.committed.should == Time.parse("2010-01-08T01:20:55-08:00")
141
+ commit.authored.should == Time.parse("2010-01-08T01:20:55-08:00")
157
142
  commit.message.should == 'First commit'
158
143
  commit.tree.should == '543b9bebdc6bd5c4b22136034a95dd097a57d3dd'
159
144
  end
@@ -0,0 +1,14 @@
1
+ HTTP/1.1 403 Forbidden
2
+ Server: nginx/0.7.61
3
+ Date: Fri, 15 Jan 2010 10:30:10 GMT
4
+ Content-Type: application/x-yaml; charset=utf-8
5
+ Connection: keep-alive
6
+ Status: 403 Forbidden
7
+ X-Runtime: 3ms
8
+ Content-Length: 43
9
+ Set-Cookie: _github_ses=BAh7BiIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7AA%3D%3D--884981fc5aa85daf318eeff084d98e2cff92578f; path=/; expires=Wed, 01 Jan 2020 08:00:00 GMT; HttpOnly
10
+ Cache-Control: no-cache
11
+
12
+ ---
13
+ error:
14
+ - error: repository not found
@@ -1,8 +1,8 @@
1
1
  HTTP/1.1 404 Not Found
2
2
  Server: nginx/0.7.61
3
- Date: Wed, 13 Jan 2010 14:51:55 GMT
3
+ Date: Fri, 15 Jan 2010 10:27:53 GMT
4
4
  Content-Type: text/html
5
- Content-Length: 3758
5
+ Content-Length: 3773
6
6
  Connection: keep-alive
7
7
 
8
8
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -73,7 +73,11 @@ Connection: keep-alive
73
73
  <a href="http://twitter.com/github">Status</a>
74
74
  </div>
75
75
  <div class="company">
76
- GitHub is <a href="http://logicalawesome.com/">Logical Awesome</a> &copy;2010 | <a href="http://github.com/site/terms">Terms of Service</a> | <a href="http://github.com/site/privacy">Privacy Policy</a>
76
+ &copy;
77
+ 2010
78
+ GitHub Inc.
79
+ All rights reserved.
80
+ | <a href="http://github.com/site/terms">Terms of Service</a> | <a href="http://github.com/site/privacy">Privacy Policy</a>
77
81
  </div>
78
82
  </div>
79
83
  <div class="sponsor">
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_hub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.10
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - arvicco
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-14 00:00:00 +03:00
12
+ date: 2010-01-16 00:00:00 +03:00
13
13
  default_executable: git_hub
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -55,46 +55,49 @@ files:
55
55
  - lib/git_hub/api.rb
56
56
  - lib/git_hub/base.rb
57
57
  - lib/git_hub/commit.rb
58
+ - lib/git_hub/extensions.rb
58
59
  - lib/git_hub/repo.rb
59
60
  - lib/git_hub/user.rb
60
61
  - spec/git_hub/api_spec.rb
61
62
  - spec/git_hub/base_spec.rb
62
63
  - spec/git_hub/commit_spec.rb
64
+ - spec/git_hub/extensions_spec.rb
63
65
  - spec/git_hub/repo_spec.rb
64
66
  - spec/git_hub/user_spec.rb
65
67
  - spec/spec.opts
66
68
  - spec/spec_helper.rb
67
- - spec/stubs/api_route_error.res
68
- - spec/stubs/commits/list/joe007/fine_repo/master.res
69
- - spec/stubs/commits/list/joe007/fine_repo/master/README.res
70
- - spec/stubs/commits/show/joe007/fine_repo/3a70f86293b719f193f778a8710b1f83f2f7bf38.res
71
- - spec/stubs/commits/show/joe007/fine_repo/5e61f0687c40ca48214d09dc7ae2d0d0d8fbfeb8.res
72
- - spec/stubs/commits/show/joe007/fine_repo/f7f5dddaa37deacc83f1f56876e2b135389d03ab.res
73
69
  - spec/stubs/http/users/follow.res
74
- - spec/stubs/repos/create.1.res
75
- - spec/stubs/repos/create.2.res
76
- - spec/stubs/repos/create.3.res
77
- - spec/stubs/repos/create.4.res
78
- - spec/stubs/repos/delete/new_repo.1.res
79
- - spec/stubs/repos/delete/new_repo.2.res
80
- - spec/stubs/repos/delete/new_repo.res
81
- - spec/stubs/repos/search/fine+repo.res
82
- - spec/stubs/repos/search/joe+repo.res
83
- - spec/stubs/repos/show/joe007.res
84
- - spec/stubs/repos/show/joe007/err_repo.res
85
- - spec/stubs/repos/show/joe007/fine_repo.res
86
- - spec/stubs/repos/show/joe007/fine_repo/branches.res
87
- - spec/stubs/repos/show/joe007/fine_repo/tags.res
88
- - spec/stubs/repos/show/joe007/new_repo.res
89
- - spec/stubs/user/follow/arvicco.res
90
- - spec/stubs/user/search/joe+007.res
91
- - spec/stubs/user/show/arvicco.res
92
- - spec/stubs/user/show/joe007.auth.res
93
- - spec/stubs/user/show/joe007.res
94
- - spec/stubs/user/show/joe007/followers.res
95
- - spec/stubs/user/show/joe007/following.empty.res
96
- - spec/stubs/user/show/joe007/following.res
97
- - spec/stubs/user/show/joe_is_not_github_user.res
70
+ - spec/stubs/yaml/api_route_error.res
71
+ - spec/stubs/yaml/commits/list/joe007/fine_repo/master.res
72
+ - spec/stubs/yaml/commits/list/joe007/fine_repo/master/README.res
73
+ - spec/stubs/yaml/commits/show/joe007/fine_repo/3a70f86293b719f193f778a8710b1f83f2f7bf38.res
74
+ - spec/stubs/yaml/commits/show/joe007/fine_repo/5e61f0687c40ca48214d09dc7ae2d0d0d8fbfeb8.res
75
+ - spec/stubs/yaml/commits/show/joe007/fine_repo/f7f5dddaa37deacc83f1f56876e2b135389d03ab.res
76
+ - spec/stubs/yaml/repos/create.1.res
77
+ - spec/stubs/yaml/repos/create.2.res
78
+ - spec/stubs/yaml/repos/create.3.res
79
+ - spec/stubs/yaml/repos/create.4.res
80
+ - spec/stubs/yaml/repos/delete/new_repo.1.res
81
+ - spec/stubs/yaml/repos/delete/new_repo.2.res
82
+ - spec/stubs/yaml/repos/delete/new_repo.res
83
+ - spec/stubs/yaml/repos/search/fine+repo.res
84
+ - spec/stubs/yaml/repos/search/joe+repo.res
85
+ - spec/stubs/yaml/repos/show/invalid_github_user/err_repo.res
86
+ - spec/stubs/yaml/repos/show/joe007.res
87
+ - spec/stubs/yaml/repos/show/joe007/err_repo.res
88
+ - spec/stubs/yaml/repos/show/joe007/fine_repo.res
89
+ - spec/stubs/yaml/repos/show/joe007/fine_repo/branches.res
90
+ - spec/stubs/yaml/repos/show/joe007/fine_repo/tags.res
91
+ - spec/stubs/yaml/repos/show/joe007/new_repo.res
92
+ - spec/stubs/yaml/user/follow/arvicco.res
93
+ - spec/stubs/yaml/user/search/joe+007.res
94
+ - spec/stubs/yaml/user/show/arvicco.res
95
+ - spec/stubs/yaml/user/show/invalid_github_user.res
96
+ - spec/stubs/yaml/user/show/joe007.auth.res
97
+ - spec/stubs/yaml/user/show/joe007.res
98
+ - spec/stubs/yaml/user/show/joe007/followers.res
99
+ - spec/stubs/yaml/user/show/joe007/following.empty.res
100
+ - spec/stubs/yaml/user/show/joe007/following.res
98
101
  has_rdoc: true
99
102
  homepage: http://github.com/arvicco/git_hub
100
103
  licenses: []
@@ -127,6 +130,7 @@ test_files:
127
130
  - spec/git_hub/api_spec.rb
128
131
  - spec/git_hub/base_spec.rb
129
132
  - spec/git_hub/commit_spec.rb
133
+ - spec/git_hub/extensions_spec.rb
130
134
  - spec/git_hub/repo_spec.rb
131
135
  - spec/git_hub/user_spec.rb
132
136
  - spec/spec_helper.rb