BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
f50598f7
Commit
f50598f7
authored
May 23, 2017
by
Stan Hu
Committed by
Timothy Andrew
May 24, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merge branch 'fix-notify-post-receive' into 'master'
Prevent errors from non-functional notify_post_receive endpoint See merge request !11509
parent
dae88380
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
91 additions
and
89 deletions
+91
-89
GITLAB_SHELL_VERSION
GITLAB_SHELL_VERSION
+1
-1
internal.rb
lib/api/internal.rb
+9
-8
internal_spec.rb
spec/requests/api/internal_spec.rb
+81
-80
No files found.
GITLAB_SHELL_VERSION
View file @
f50598f7
5.0.
3
5.0.
4
lib/api/internal.rb
View file @
f50598f7
...
...
@@ -136,14 +136,15 @@ module API
post
"/notify_post_receive"
do
status
200
return
unless
Gitlab
::
GitalyClient
.
enabled?
begin
repository
=
wiki?
?
project
.
wiki
.
repository
:
project
.
repository
Gitlab
::
GitalyClient
::
Notifications
.
new
(
repository
.
raw_repository
).
post_receive
rescue
GRPC
::
Unavailable
=>
e
render_api_error!
(
e
,
500
)
end
# TODO: Re-enable when Gitaly is processing the post-receive notification
# return unless Gitlab::GitalyClient.enabled?
#
# begin
# repository = wiki? ? project.wiki.repository : project.repository
# Gitlab::GitalyClient::Notifications.new(repository.raw_repository).post_receive
# rescue GRPC::Unavailable => e
# render_api_error!(e, 500)
# end
end
end
end
...
...
spec/requests/api/internal_spec.rb
View file @
f50598f7
...
...
@@ -466,86 +466,87 @@ describe API::Internal do
end
end
describe
'POST /notify_post_receive'
do
let
(
:valid_params
)
do
{
project:
project
.
repository
.
path
,
secret_token:
secret_token
}
end
let
(
:valid_wiki_params
)
do
{
project:
project
.
wiki
.
repository
.
path
,
secret_token:
secret_token
}
end
before
do
allow
(
Gitlab
.
config
.
gitaly
).
to
receive
(
:enabled
).
and_return
(
true
)
end
it
"calls the Gitaly client with the project's repository"
do
expect
(
Gitlab
::
GitalyClient
::
Notifications
).
to
receive
(
:new
).
with
(
gitlab_git_repository_with
(
path:
project
.
repository
.
path
)).
and_call_original
expect_any_instance_of
(
Gitlab
::
GitalyClient
::
Notifications
).
to
receive
(
:post_receive
)
post
api
(
"/internal/notify_post_receive"
),
valid_params
expect
(
response
).
to
have_http_status
(
200
)
end
it
"calls the Gitaly client with the wiki's repository if it's a wiki"
do
expect
(
Gitlab
::
GitalyClient
::
Notifications
).
to
receive
(
:new
).
with
(
gitlab_git_repository_with
(
path:
project
.
wiki
.
repository
.
path
)).
and_call_original
expect_any_instance_of
(
Gitlab
::
GitalyClient
::
Notifications
).
to
receive
(
:post_receive
)
post
api
(
"/internal/notify_post_receive"
),
valid_wiki_params
expect
(
response
).
to
have_http_status
(
200
)
end
it
"returns 500 if the gitaly call fails"
do
expect_any_instance_of
(
Gitlab
::
GitalyClient
::
Notifications
).
to
receive
(
:post_receive
).
and_raise
(
GRPC
::
Unavailable
)
post
api
(
"/internal/notify_post_receive"
),
valid_params
expect
(
response
).
to
have_http_status
(
500
)
end
context
'with a gl_repository parameter'
do
let
(
:valid_params
)
do
{
gl_repository:
"project-
#{
project
.
id
}
"
,
secret_token:
secret_token
}
end
let
(
:valid_wiki_params
)
do
{
gl_repository:
"wiki-
#{
project
.
id
}
"
,
secret_token:
secret_token
}
end
it
"calls the Gitaly client with the project's repository"
do
expect
(
Gitlab
::
GitalyClient
::
Notifications
).
to
receive
(
:new
).
with
(
gitlab_git_repository_with
(
path:
project
.
repository
.
path
)).
and_call_original
expect_any_instance_of
(
Gitlab
::
GitalyClient
::
Notifications
).
to
receive
(
:post_receive
)
post
api
(
"/internal/notify_post_receive"
),
valid_params
expect
(
response
).
to
have_http_status
(
200
)
end
it
"calls the Gitaly client with the wiki's repository if it's a wiki"
do
expect
(
Gitlab
::
GitalyClient
::
Notifications
).
to
receive
(
:new
).
with
(
gitlab_git_repository_with
(
path:
project
.
wiki
.
repository
.
path
)).
and_call_original
expect_any_instance_of
(
Gitlab
::
GitalyClient
::
Notifications
).
to
receive
(
:post_receive
)
post
api
(
"/internal/notify_post_receive"
),
valid_wiki_params
expect
(
response
).
to
have_http_status
(
200
)
end
end
end
# TODO: Uncomment when the end-point is reenabled
# describe 'POST /notify_post_receive' do
# let(:valid_params) do
# { project: project.repository.path, secret_token: secret_token }
# end
#
# let(:valid_wiki_params) do
# { project: project.wiki.repository.path, secret_token: secret_token }
# end
#
# before do
# allow(Gitlab.config.gitaly).to receive(:enabled).and_return(true)
# end
#
# it "calls the Gitaly client with the project's repository" do
# expect(Gitlab::GitalyClient::Notifications).
# to receive(:new).with(gitlab_git_repository_with(path: project.repository.path)).
# and_call_original
# expect_any_instance_of(Gitlab::GitalyClient::Notifications).
# to receive(:post_receive)
#
# post api("/internal/notify_post_receive"), valid_params
#
# expect(response).to have_http_status(200)
# end
#
# it "calls the Gitaly client with the wiki's repository if it's a wiki" do
# expect(Gitlab::GitalyClient::Notifications).
# to receive(:new).with(gitlab_git_repository_with(path: project.wiki.repository.path)).
# and_call_original
# expect_any_instance_of(Gitlab::GitalyClient::Notifications).
# to receive(:post_receive)
#
# post api("/internal/notify_post_receive"), valid_wiki_params
#
# expect(response).to have_http_status(200)
# end
#
# it "returns 500 if the gitaly call fails" do
# expect_any_instance_of(Gitlab::GitalyClient::Notifications).
# to receive(:post_receive).and_raise(GRPC::Unavailable)
#
# post api("/internal/notify_post_receive"), valid_params
#
# expect(response).to have_http_status(500)
# end
#
# context 'with a gl_repository parameter' do
# let(:valid_params) do
# { gl_repository: "project-#{project.id}", secret_token: secret_token }
# end
#
# let(:valid_wiki_params) do
# { gl_repository: "wiki-#{project.id}", secret_token: secret_token }
# end
#
# it "calls the Gitaly client with the project's repository" do
# expect(Gitlab::GitalyClient::Notifications).
# to receive(:new).with(gitlab_git_repository_with(path: project.repository.path)).
# and_call_original
# expect_any_instance_of(Gitlab::GitalyClient::Notifications).
# to receive(:post_receive)
#
# post api("/internal/notify_post_receive"), valid_params
#
# expect(response).to have_http_status(200)
# end
#
# it "calls the Gitaly client with the wiki's repository if it's a wiki" do
# expect(Gitlab::GitalyClient::Notifications).
# to receive(:new).with(gitlab_git_repository_with(path: project.wiki.repository.path)).
# and_call_original
# expect_any_instance_of(Gitlab::GitalyClient::Notifications).
# to receive(:post_receive)
#
# post api("/internal/notify_post_receive"), valid_wiki_params
#
# expect(response).to have_http_status(200)
# end
# end
# end
def
project_with_repo_path
(
path
)
double
().
tap
do
|
fake_project
|
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment