fuselage 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.DS_Store +0 -0
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.markdown +65 -0
- data/Rakefile +15 -0
- data/examples/authenticated.rb +21 -0
- data/examples/simple.rb +6 -0
- data/fuselage.gemspec +25 -0
- data/lib/.DS_Store +0 -0
- data/lib/fuselage/api.rb +100 -0
- data/lib/fuselage/base.rb +27 -0
- data/lib/fuselage/blob.rb +31 -0
- data/lib/fuselage/commit.rb +49 -0
- data/lib/fuselage/error.rb +28 -0
- data/lib/fuselage/reference.rb +50 -0
- data/lib/fuselage/repository.rb +111 -0
- data/lib/fuselage/tag.rb +44 -0
- data/lib/fuselage/tree.rb +41 -0
- data/lib/fuselage/user.rb +80 -0
- data/lib/fuselage/version.rb +3 -0
- data/lib/fuselage.rb +31 -0
- data/test/base_test.rb +17 -0
- data/test/blob_test.rb +29 -0
- data/test/commits_test.rb +30 -0
- data/test/references_test.rb +38 -0
- data/test/repository_test.rb +103 -0
- data/test/stubs/blobs/tester/new +16 -0
- data/test/stubs/blobs/tester/old +18 -0
- data/test/stubs/commits/tester/new +36 -0
- data/test/stubs/commits/tester/old +58 -0
- data/test/stubs/refs/tester/all +58 -0
- data/test/stubs/refs/tester/master +20 -0
- data/test/stubs/refs/tester/new +20 -0
- data/test/stubs/repos/coreycollins/tester/branches +27 -0
- data/test/stubs/repos/coreycollins/tester/commits +71 -0
- data/test/stubs/repos/coreycollins/tester/main +41 -0
- data/test/stubs/repos/coreycollins/tester/tags +40 -0
- data/test/stubs/repos/show/coreycollins +39 -0
- data/test/stubs/repos/show/coreycollins-private +39 -0
- data/test/stubs/repos/show/gitpilot +39 -0
- data/test/stubs/repos/show/gitpilot-private +120 -0
- data/test/stubs/tags/tester/new +27 -0
- data/test/stubs/tags/tester/old +27 -0
- data/test/stubs/trees/tester/new +26 -0
- data/test/stubs/trees/tester/old +25 -0
- data/test/stubs/users/coreycollins +34 -0
- data/test/stubs/users/coreycollins-private +34 -0
- data/test/stubs/users/emails +0 -0
- data/test/stubs/users/followers +25 -0
- data/test/stubs/users/following +25 -0
- data/test/stubs/users/repositories +40 -0
- data/test/test_helper.rb +103 -0
- data/test/user_test.rb +60 -0
- metadata +139 -0
data/test/test_helper.rb
ADDED
@@ -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
|
+
|