fuselage 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.
Files changed (54) hide show
  1. data/.DS_Store +0 -0
  2. data/.gitignore +4 -0
  3. data/Gemfile +4 -0
  4. data/README.markdown +65 -0
  5. data/Rakefile +15 -0
  6. data/examples/authenticated.rb +21 -0
  7. data/examples/simple.rb +6 -0
  8. data/fuselage.gemspec +25 -0
  9. data/lib/.DS_Store +0 -0
  10. data/lib/fuselage/api.rb +100 -0
  11. data/lib/fuselage/base.rb +27 -0
  12. data/lib/fuselage/blob.rb +31 -0
  13. data/lib/fuselage/commit.rb +49 -0
  14. data/lib/fuselage/error.rb +28 -0
  15. data/lib/fuselage/reference.rb +50 -0
  16. data/lib/fuselage/repository.rb +111 -0
  17. data/lib/fuselage/tag.rb +44 -0
  18. data/lib/fuselage/tree.rb +41 -0
  19. data/lib/fuselage/user.rb +80 -0
  20. data/lib/fuselage/version.rb +3 -0
  21. data/lib/fuselage.rb +31 -0
  22. data/test/base_test.rb +17 -0
  23. data/test/blob_test.rb +29 -0
  24. data/test/commits_test.rb +30 -0
  25. data/test/references_test.rb +38 -0
  26. data/test/repository_test.rb +103 -0
  27. data/test/stubs/blobs/tester/new +16 -0
  28. data/test/stubs/blobs/tester/old +18 -0
  29. data/test/stubs/commits/tester/new +36 -0
  30. data/test/stubs/commits/tester/old +58 -0
  31. data/test/stubs/refs/tester/all +58 -0
  32. data/test/stubs/refs/tester/master +20 -0
  33. data/test/stubs/refs/tester/new +20 -0
  34. data/test/stubs/repos/coreycollins/tester/branches +27 -0
  35. data/test/stubs/repos/coreycollins/tester/commits +71 -0
  36. data/test/stubs/repos/coreycollins/tester/main +41 -0
  37. data/test/stubs/repos/coreycollins/tester/tags +40 -0
  38. data/test/stubs/repos/show/coreycollins +39 -0
  39. data/test/stubs/repos/show/coreycollins-private +39 -0
  40. data/test/stubs/repos/show/gitpilot +39 -0
  41. data/test/stubs/repos/show/gitpilot-private +120 -0
  42. data/test/stubs/tags/tester/new +27 -0
  43. data/test/stubs/tags/tester/old +27 -0
  44. data/test/stubs/trees/tester/new +26 -0
  45. data/test/stubs/trees/tester/old +25 -0
  46. data/test/stubs/users/coreycollins +34 -0
  47. data/test/stubs/users/coreycollins-private +34 -0
  48. data/test/stubs/users/emails +0 -0
  49. data/test/stubs/users/followers +25 -0
  50. data/test/stubs/users/following +25 -0
  51. data/test/stubs/users/repositories +40 -0
  52. data/test/test_helper.rb +103 -0
  53. data/test/user_test.rb +60 -0
  54. metadata +139 -0
@@ -0,0 +1,103 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+ require 'fakeweb'
5
+ require 'ruby-debug'
6
+
7
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
8
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
9
+ require 'fuselage'
10
+
11
+ ENV['HOME'] = File.dirname(__FILE__)
12
+ FakeWeb.allow_net_connect = false
13
+
14
+ def stub_file(*path)
15
+ File.join(File.dirname(__FILE__), "stubs", path)
16
+ end
17
+
18
+ def auth(&block)
19
+ authenticated('11d5295ea3814f9be2e52d966252cc461dab200b') do
20
+ yield
21
+ end
22
+ end
23
+
24
+ def fake_everything
25
+ FakeWeb.clean_registry
26
+
27
+ # helper variables to make things shorter.
28
+ sha = "f6609209c3ac0badd004512d318bfaa508ea10ae"
29
+ fake_sha = "ea3cd978650417470535f3a4725b6b5042a6ab59"
30
+
31
+ api = "api.github.com"
32
+
33
+ # Public stuff
34
+ fakes = {
35
+ "user/coreycollins" => File.join("users", "coreycollins"),
36
+ "users/coreycollins/repos?type=all" => File.join("repos", "show", "coreycollins"),
37
+ "repos/coreycollins/tester?type=all" => File.join("repos", "coreycollins", "tester", "main"),
38
+ "orgs/gitpilot/repos?type=all" => File.join("repos", "show", "gitpilot")
39
+ }
40
+
41
+ fakes.each do |key, value|
42
+ FakeWeb.register_uri(:get, "https://#{api}/" + key, :response => stub_file(value))
43
+ end
44
+
45
+ FakeWeb.register_uri(:get, "https://#{api}/users/i-am-most-probably-a-user-that-does-not-exist/repos?type=all", :status => ["404", "Not Found"])
46
+ # nothere is obviously an invalid sha
47
+ #FakeWeb.register_uri(:get, "https://#{api}/commits/show/fcoury/octopi/nothere", :status => ["404", "Not Found"])
48
+ # not-a-number is obviously not a *number*
49
+ #FakeWeb.register_uri(:get, "https://#{api}/issues/show/fcoury/octopi/not-a-number", :status => ["404", "Not Found"])
50
+ # is an invalid hash
51
+ #FakeWeb.register_uri(:get, "https://#{api}/tree/show/fcoury/octopi/#{fake_sha}", :status => ["404", "Not Found"])
52
+ # is not a user
53
+ FakeWeb.register_uri(:get, "https://#{api}/user/i-am-most-probably-a-user-that-does-not-exist", :status => ["404", "Not Found"])
54
+
55
+
56
+ def auth_query
57
+ "access_token=11d5295ea3814f9be2e52d966252cc461dab200b"
58
+ end
59
+
60
+ secure_fakes = {
61
+ "user?" => File.join("users", "coreycollins-private"),
62
+ "user/emails?" => File.join("users", "emails"),
63
+ "user/following?" => File.join("users", "following"),
64
+ "user/followers?" => File.join("users", "followers"),
65
+ "user/repos?type=all&" => File.join("repos", "show", "coreycollins-private"),
66
+ "orgs/gitpilot/repos?type=all&" => File.join("repos", "show", "gitpilot-private"),
67
+ "orgs/gitpilot/repos?type=private&" => File.join("repos", "show", "gitpilot-private"),
68
+ "repos/coreycollins/tester?type=all&" => File.join("repos", "coreycollins", "tester", "main"),
69
+ "repos/coreycollins/tester/tags?" => File.join("repos", "coreycollins", "tester", "tags"),
70
+ "repos/coreycollins/tester/branches?" => File.join("repos", "coreycollins", "tester", "branches"),
71
+ "repos/coreycollins/tester/commits?" => File.join("repos", "coreycollins", "tester", "commits"),
72
+ "repos/coreycollins/tester/commits/6c5b0e754460477ed049e5b1b0785e667eadaeb9?" => File.join("commits", "tester", "old"),
73
+ "repos/coreycollins/tester/git/refs/heads/master?" => File.join("refs", "tester", "master"),
74
+ "repos/coreycollins/tester/git/refs?" => File.join("refs", "tester", "all"),
75
+ "repos/coreycollins/tester/git/blobs/6c5b0e754460477ed049e5b1b0785e667eadaeb9?" => File.join("blobs", "tester", "old"),
76
+ "repos/coreycollins/tester/git/trees/6c5b0e754460477ed049e5b1b0785e667eadaeb9?" => File.join("trees", "tester", "old"),
77
+ "repos/coreycollins/tester/git/tags/6c5b0e754460477ed049e5b1b0785e667eadaeb9?" => File.join("tags", "tester", "old")
78
+ }
79
+
80
+ secure_fakes.each do |key, value|
81
+ FakeWeb.register_uri(:get, "https://#{api}/" + key + auth_query, :response => stub_file(value))
82
+ end
83
+
84
+ secure_post_fakes = {
85
+ "user" => File.join("users", "coreycollins-patched"),
86
+ "user/repos?" => File.join("repos", "coreycollins", "tester", "main"),
87
+ "repos/coreycollins/tester/git/commits?" => File.join("commits", "tester", "new"),
88
+ "repos/coreycollins/tester/git/refs?" => File.join("refs", "tester", "new"),
89
+ "repos/coreycollins/tester/git/blobs?" => File.join("blobs", "tester", "new"),
90
+ "repos/coreycollins/tester/git/trees?" => File.join("trees", "tester", "new"),
91
+ "repos/coreycollins/tester/git/tags?" => File.join("tags", "tester", "new")
92
+ }
93
+
94
+ secure_post_fakes.each do |key, value|
95
+ FakeWeb.register_uri(:post, "https://#{api}/" + key + auth_query, :response => stub_file(value))
96
+ end
97
+
98
+ end
99
+
100
+
101
+ class Test::Unit::TestCase
102
+
103
+ end
data/test/user_test.rb ADDED
@@ -0,0 +1,60 @@
1
+ require File.join(File.dirname(__FILE__), 'test_helper')
2
+
3
+ class UserTest < Test::Unit::TestCase
4
+ include Fuselage
5
+
6
+ def setup
7
+ fake_everything
8
+ end
9
+
10
+ should "be able to find a user" do
11
+ u = User.find("coreycollins")
12
+ assert_not_nil u
13
+ assert_equal "coreycollins", u.login
14
+ end
15
+
16
+ should "not be able to find a user that doesn't exist" do
17
+ exception = assert_raise NotFound do
18
+ User.find("i-am-most-probably-a-user-that-does-not-exist")
19
+ end
20
+
21
+ assert_equal "The User could not be found or created. It could be private.", exception.message
22
+ end
23
+
24
+ should "not be able to get current user if not authenticated" do
25
+ assert_raise AuthenticationRequired do
26
+ User.current
27
+ end
28
+ end
29
+
30
+ context "authenticated" do
31
+
32
+ should "return current authenticated user information" do
33
+ auth do
34
+ u = User.current
35
+ assert_not_nil u
36
+ assert_equal "coreycollins", u.login
37
+ end
38
+ end
39
+
40
+ should "get users following" do
41
+ auth do
42
+ u = User.current
43
+ assert_not_nil u
44
+ assert_not_nil u.following
45
+ assert_equal true, u.following.map{ |u| u.to_s }.include?('jprichardson')
46
+ end
47
+ end
48
+
49
+ should "get users followers" do
50
+ auth do
51
+ u = User.current
52
+ assert_not_nil u
53
+ assert_not_nil u.followers
54
+ assert_equal true, u.followers.map{ |u| u.to_s }.include?('gitpilot-team')
55
+ end
56
+ end
57
+
58
+ end
59
+
60
+ end
metadata ADDED
@@ -0,0 +1,139 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fuselage
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Corey Collins
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-07-18 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ type: :development
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: fakeweb
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :development
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: httparty
39
+ prerelease: false
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ type: :runtime
47
+ version_requirements: *id003
48
+ description: LightWeight Github API v3 Wrapper
49
+ email:
50
+ - corey@gitpilot.com
51
+ executables: []
52
+
53
+ extensions: []
54
+
55
+ extra_rdoc_files: []
56
+
57
+ files:
58
+ - .DS_Store
59
+ - .gitignore
60
+ - Gemfile
61
+ - README.markdown
62
+ - Rakefile
63
+ - examples/authenticated.rb
64
+ - examples/simple.rb
65
+ - fuselage.gemspec
66
+ - lib/.DS_Store
67
+ - lib/fuselage.rb
68
+ - lib/fuselage/api.rb
69
+ - lib/fuselage/base.rb
70
+ - lib/fuselage/blob.rb
71
+ - lib/fuselage/commit.rb
72
+ - lib/fuselage/error.rb
73
+ - lib/fuselage/reference.rb
74
+ - lib/fuselage/repository.rb
75
+ - lib/fuselage/tag.rb
76
+ - lib/fuselage/tree.rb
77
+ - lib/fuselage/user.rb
78
+ - lib/fuselage/version.rb
79
+ - test/base_test.rb
80
+ - test/blob_test.rb
81
+ - test/commits_test.rb
82
+ - test/references_test.rb
83
+ - test/repository_test.rb
84
+ - test/stubs/blobs/tester/new
85
+ - test/stubs/blobs/tester/old
86
+ - test/stubs/commits/tester/new
87
+ - test/stubs/commits/tester/old
88
+ - test/stubs/refs/tester/all
89
+ - test/stubs/refs/tester/master
90
+ - test/stubs/refs/tester/new
91
+ - test/stubs/repos/coreycollins/tester/branches
92
+ - test/stubs/repos/coreycollins/tester/commits
93
+ - test/stubs/repos/coreycollins/tester/main
94
+ - test/stubs/repos/coreycollins/tester/tags
95
+ - test/stubs/repos/show/coreycollins
96
+ - test/stubs/repos/show/coreycollins-private
97
+ - test/stubs/repos/show/gitpilot
98
+ - test/stubs/repos/show/gitpilot-private
99
+ - test/stubs/tags/tester/new
100
+ - test/stubs/tags/tester/old
101
+ - test/stubs/trees/tester/new
102
+ - test/stubs/trees/tester/old
103
+ - test/stubs/users/coreycollins
104
+ - test/stubs/users/coreycollins-private
105
+ - test/stubs/users/emails
106
+ - test/stubs/users/followers
107
+ - test/stubs/users/following
108
+ - test/stubs/users/repositories
109
+ - test/test_helper.rb
110
+ - test/user_test.rb
111
+ homepage: ""
112
+ licenses: []
113
+
114
+ post_install_message:
115
+ rdoc_options: []
116
+
117
+ require_paths:
118
+ - lib
119
+ required_ruby_version: !ruby/object:Gem::Requirement
120
+ none: false
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: "0"
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: "0"
131
+ requirements: []
132
+
133
+ rubyforge_project: fuselage
134
+ rubygems_version: 1.7.2
135
+ signing_key:
136
+ specification_version: 3
137
+ summary: LightWeight Github API v3 Wrapper
138
+ test_files: []
139
+