fuselage 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+