gitlab-grack 2.0.0.pre → 2.0.0.rc1
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.
- checksums.yaml +4 -4
- data/.gitignore +22 -3
- data/Gemfile +2 -7
- data/Gemfile.lock +8 -17
- data/Makefile +153 -0
- data/Procfile.example +3 -0
- data/README.md +292 -95
- data/Vagrantfile +41 -0
- data/database.yml.example +13 -0
- data/gitlab-openldap/.gitignore +1 -0
- data/gitlab-openldap/Makefile +40 -0
- data/gitlab-openldap/README.md +60 -0
- data/gitlab-openldap/bootstrap.ldif +36 -0
- data/gitlab-openldap/frontend.alt.example.com.ldif +109 -0
- data/gitlab-openldap/frontend.example.com.ldif +109 -0
- data/gitlab-openldap/run-slapd +3 -0
- data/gitlab-openldap/run-slapd-alt +3 -0
- data/redis/redis.conf.example +2 -0
- data/redis/resque.yml.example +2 -0
- data/support/edit-gitlab.yml +11 -0
- metadata +29 -25
- data/.gitmodules +0 -3
- data/.travis.yml +0 -14
- data/CHANGELOG +0 -2
- data/Rakefile +0 -27
- data/examples/dispatch.fcgi +0 -9
- data/grack.gemspec +0 -20
- data/install.txt +0 -60
- data/lib/grack.rb +0 -5
- data/lib/grack/auth.rb +0 -37
- data/lib/grack/bundle.rb +0 -20
- data/lib/grack/server.rb +0 -324
- data/lib/grack/version.rb +0 -3
- data/tests/main_test.rb +0 -239
data/lib/grack/version.rb
DELETED
data/tests/main_test.rb
DELETED
@@ -1,239 +0,0 @@
|
|
1
|
-
require 'rack'
|
2
|
-
require 'rack/test'
|
3
|
-
require 'test/unit'
|
4
|
-
require 'mocha'
|
5
|
-
require 'digest/sha1'
|
6
|
-
|
7
|
-
require_relative '../lib/grack/server.rb'
|
8
|
-
require 'pp'
|
9
|
-
|
10
|
-
class GitHttpTest < Test::Unit::TestCase
|
11
|
-
include Rack::Test::Methods
|
12
|
-
|
13
|
-
def example
|
14
|
-
File.expand_path(File.dirname(__FILE__))
|
15
|
-
end
|
16
|
-
|
17
|
-
def app
|
18
|
-
config = {
|
19
|
-
:project_root => example,
|
20
|
-
:upload_pack => true,
|
21
|
-
:receive_pack => true,
|
22
|
-
}
|
23
|
-
Grack::Server.new(config)
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_upload_pack_advertisement
|
27
|
-
get "/example/info/refs?service=git-upload-pack"
|
28
|
-
assert_equal 200, r.status
|
29
|
-
assert_equal "application/x-git-upload-pack-advertisement", r.headers["Content-Type"]
|
30
|
-
assert_equal "001e# service=git-upload-pack", r.body.split("\n").first
|
31
|
-
assert_match 'multi_ack_detailed', r.body
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_no_access_wrong_content_type_up
|
35
|
-
post "/example/git-upload-pack"
|
36
|
-
assert_equal 403, r.status
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_no_access_wrong_content_type_rp
|
40
|
-
post "/example/git-receive-pack"
|
41
|
-
assert_equal 403, r.status
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_no_access_wrong_method_rcp
|
45
|
-
get "/example/git-upload-pack"
|
46
|
-
assert_equal 400, r.status
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_no_access_wrong_command_rcp
|
50
|
-
post "/example/git-upload-packfile"
|
51
|
-
assert_equal 404, r.status
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_no_access_wrong_path_rcp
|
55
|
-
post "/example-wrong/git-upload-pack"
|
56
|
-
assert_equal 404, r.status
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_upload_pack_rpc
|
60
|
-
IO.stubs(:popen).returns(MockProcess.new)
|
61
|
-
post "/example/git-upload-pack", {}, {"CONTENT_TYPE" => "application/x-git-upload-pack-request"}
|
62
|
-
assert_equal 200, r.status
|
63
|
-
assert_equal "application/x-git-upload-pack-result", r.headers["Content-Type"]
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_receive_pack_advertisement
|
67
|
-
get "/example/info/refs?service=git-receive-pack"
|
68
|
-
assert_equal 200, r.status
|
69
|
-
assert_equal "application/x-git-receive-pack-advertisement", r.headers["Content-Type"]
|
70
|
-
assert_equal "001f# service=git-receive-pack", r.body.split("\n").first
|
71
|
-
assert_match 'report-status', r.body
|
72
|
-
assert_match 'delete-refs', r.body
|
73
|
-
assert_match 'ofs-delta', r.body
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_recieve_pack_rpc
|
77
|
-
IO.stubs(:popen).yields(MockProcess.new)
|
78
|
-
post "/example/git-receive-pack", {}, {"CONTENT_TYPE" => "application/x-git-receive-pack-request"}
|
79
|
-
assert_equal 200, r.status
|
80
|
-
assert_equal "application/x-git-receive-pack-result", r.headers["Content-Type"]
|
81
|
-
end
|
82
|
-
|
83
|
-
def test_info_refs_dumb
|
84
|
-
get "/example/.git/info/refs"
|
85
|
-
assert_equal 200, r.status
|
86
|
-
end
|
87
|
-
|
88
|
-
def test_info_packs
|
89
|
-
get "/example/.git/objects/info/packs"
|
90
|
-
assert_equal 200, r.status
|
91
|
-
assert_match /P pack-(.*?).pack/, r.body
|
92
|
-
end
|
93
|
-
|
94
|
-
def test_loose_objects
|
95
|
-
path, content = write_test_objects
|
96
|
-
get "/example/.git/objects/#{path}"
|
97
|
-
assert_equal 200, r.status
|
98
|
-
assert_equal content, r.body
|
99
|
-
remove_test_objects
|
100
|
-
end
|
101
|
-
|
102
|
-
def test_pack_file
|
103
|
-
path, content = write_test_objects
|
104
|
-
get "/example/.git/objects/pack/pack-#{content}.pack"
|
105
|
-
assert_equal 200, r.status
|
106
|
-
assert_equal content, r.body
|
107
|
-
remove_test_objects
|
108
|
-
end
|
109
|
-
|
110
|
-
def test_index_file
|
111
|
-
path, content = write_test_objects
|
112
|
-
get "/example/.git/objects/pack/pack-#{content}.idx"
|
113
|
-
assert_equal 200, r.status
|
114
|
-
assert_equal content, r.body
|
115
|
-
remove_test_objects
|
116
|
-
end
|
117
|
-
|
118
|
-
def test_text_file
|
119
|
-
get "/example/.git/HEAD"
|
120
|
-
assert_equal 200, r.status
|
121
|
-
assert_equal 41, r.body.size # submodules have detached head
|
122
|
-
end
|
123
|
-
|
124
|
-
def test_no_size_avail
|
125
|
-
File.stubs('size?').returns(false)
|
126
|
-
get "/example/.git/HEAD"
|
127
|
-
assert_equal 200, r.status
|
128
|
-
assert_equal 46, r.body.size # submodules have detached head
|
129
|
-
end
|
130
|
-
|
131
|
-
def test_config_upload_pack_off
|
132
|
-
a1 = app
|
133
|
-
a1.set_config_setting(:upload_pack, false)
|
134
|
-
session = Rack::Test::Session.new(a1)
|
135
|
-
session.get "/example/info/refs?service=git-upload-pack"
|
136
|
-
assert_equal 404, session.last_response.status
|
137
|
-
end
|
138
|
-
|
139
|
-
def test_config_receive_pack_off
|
140
|
-
a1 = app
|
141
|
-
a1.set_config_setting(:receive_pack, false)
|
142
|
-
session = Rack::Test::Session.new(a1)
|
143
|
-
session.get "/example/info/refs?service=git-receive-pack"
|
144
|
-
assert_equal 404, session.last_response.status
|
145
|
-
end
|
146
|
-
|
147
|
-
def test_config_bad_service
|
148
|
-
get "/example/info/refs?service=git-receive-packfile"
|
149
|
-
assert_equal 404, r.status
|
150
|
-
end
|
151
|
-
|
152
|
-
def test_git_config_receive_pack
|
153
|
-
app1 = Grack::Server.new({:project_root => example})
|
154
|
-
session = Rack::Test::Session.new(app1)
|
155
|
-
|
156
|
-
app1.stubs(:get_git_config).with('http.receivepack').returns('')
|
157
|
-
session.get "/example/info/refs?service=git-receive-pack"
|
158
|
-
assert_equal 404, session.last_response.status
|
159
|
-
|
160
|
-
app1.stubs(:get_git_config).with('http.receivepack').returns('true')
|
161
|
-
session.get "/example/info/refs?service=git-receive-pack"
|
162
|
-
assert_equal 200, session.last_response.status
|
163
|
-
|
164
|
-
app1.stubs(:get_git_config).with('http.receivepack').returns('false')
|
165
|
-
session.get "/example/info/refs?service=git-receive-pack"
|
166
|
-
assert_equal 404, session.last_response.status
|
167
|
-
end
|
168
|
-
|
169
|
-
def test_git_config_upload_pack
|
170
|
-
app1 = Grack::Server.new({:project_root => example})
|
171
|
-
session = Rack::Test::Session.new(app1)
|
172
|
-
|
173
|
-
app1.stubs(:get_git_config).with('http.uploadpack').returns('')
|
174
|
-
session.get "/example/info/refs?service=git-upload-pack"
|
175
|
-
assert_equal 200, session.last_response.status
|
176
|
-
|
177
|
-
app1.stubs(:get_git_config).with('http.uploadpack').returns('true')
|
178
|
-
session.get "/example/info/refs?service=git-upload-pack"
|
179
|
-
assert_equal 200, session.last_response.status
|
180
|
-
|
181
|
-
app1.stubs(:get_git_config).with('http.uploadpack').returns('false')
|
182
|
-
session.get "/example/info/refs?service=git-upload-pack"
|
183
|
-
assert_equal 404, session.last_response.status
|
184
|
-
end
|
185
|
-
|
186
|
-
private
|
187
|
-
|
188
|
-
def r
|
189
|
-
last_response
|
190
|
-
end
|
191
|
-
|
192
|
-
def write_test_objects
|
193
|
-
content = Digest::SHA1.hexdigest('gitrocks')
|
194
|
-
base = File.join(File.expand_path(File.dirname(__FILE__)), 'example', '.git', 'objects')
|
195
|
-
obj = File.join(base, '20')
|
196
|
-
Dir.mkdir(obj) rescue nil
|
197
|
-
file = File.join(obj, content[0, 38])
|
198
|
-
File.open(file, 'w') { |f| f.write(content) }
|
199
|
-
pack = File.join(base, 'pack', "pack-#{content}.pack")
|
200
|
-
File.open(pack, 'w') { |f| f.write(content) }
|
201
|
-
idx = File.join(base, 'pack', "pack-#{content}.idx")
|
202
|
-
File.open(idx, 'w') { |f| f.write(content) }
|
203
|
-
["20/#{content[0,38]}", content]
|
204
|
-
end
|
205
|
-
|
206
|
-
def remove_test_objects
|
207
|
-
content = Digest::SHA1.hexdigest('gitrocks')
|
208
|
-
base = File.join(File.expand_path(File.dirname(__FILE__)), 'example', '.git', 'objects')
|
209
|
-
obj = File.join(base, '20')
|
210
|
-
file = File.join(obj, content[0, 38])
|
211
|
-
pack = File.join(base, 'pack', "pack-#{content}.pack")
|
212
|
-
idx = File.join(base, 'pack', "pack-#{content}.idx")
|
213
|
-
File.unlink(file)
|
214
|
-
File.unlink(pack)
|
215
|
-
File.unlink(idx)
|
216
|
-
end
|
217
|
-
|
218
|
-
end
|
219
|
-
|
220
|
-
class MockProcess
|
221
|
-
def initialize
|
222
|
-
@counter = 0
|
223
|
-
end
|
224
|
-
|
225
|
-
def write(data)
|
226
|
-
end
|
227
|
-
|
228
|
-
def read(data)
|
229
|
-
end
|
230
|
-
|
231
|
-
def eof?
|
232
|
-
@counter += 1
|
233
|
-
@counter > 1 ? true : false
|
234
|
-
end
|
235
|
-
|
236
|
-
def close_write
|
237
|
-
true
|
238
|
-
end
|
239
|
-
end
|