Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
95dd3704
Commit
95dd3704
authored
Aug 27, 2019
by
Heinrich Lee Yu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use `stub_full_request` to fix spec failure
Also change test URL sequest to .test TLD
parent
c83296ec
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
28 additions
and
18 deletions
+28
-18
ee/spec/features/groups/hooks/user_tests_hooks_spec.rb
ee/spec/features/groups/hooks/user_tests_hooks_spec.rb
+4
-2
spec/factories/sequences.rb
spec/factories/sequences.rb
+1
-1
spec/models/ci/pipeline_spec.rb
spec/models/ci/pipeline_spec.rb
+3
-2
spec/services/web_hook_service_spec.rb
spec/services/web_hook_service_spec.rb
+20
-13
No files found.
ee/spec/features/groups/hooks/user_tests_hooks_spec.rb
View file @
95dd3704
require
"rails_helper"
describe
"User tests hooks"
,
:js
do
include
StubRequests
let!
(
:group
)
{
create
(
:group
)
}
let!
(
:hook
)
{
create
(
:group_hook
,
group:
group
)
}
let!
(
:user
)
{
create
(
:user
)
}
...
...
@@ -29,7 +31,7 @@ describe "User tests hooks", :js do
context
"when URL is invalid"
do
before
do
stub_
request
(
:post
,
hook
.
url
).
to_raise
(
SocketError
.
new
(
"Failed to open"
))
stub_
full_request
(
hook
.
url
,
method: :post
).
to_raise
(
SocketError
.
new
(
"Failed to open"
))
click_link
(
"Test"
)
end
...
...
@@ -51,7 +53,7 @@ describe "User tests hooks", :js do
private
def
trigger_hook
stub_
request
(
:post
,
hook
.
url
).
to_return
(
status:
200
)
stub_
full_request
(
hook
.
url
,
method: :post
).
to_return
(
status:
200
)
click_link
(
"Test"
)
end
...
...
spec/factories/sequences.rb
View file @
95dd3704
...
...
@@ -7,7 +7,7 @@ FactoryBot.define do
sequence
(
:email_alias
)
{
|
n
|
"user.alias
#{
n
}
@example.org"
}
sequence
(
:title
)
{
|
n
|
"My title
#{
n
}
"
}
sequence
(
:filename
)
{
|
n
|
"filename-
#{
n
}
.rb"
}
sequence
(
:url
)
{
|
n
|
"http://example
#{
n
}
.
org
"
}
sequence
(
:url
)
{
|
n
|
"http://example
#{
n
}
.
test
"
}
sequence
(
:label_title
)
{
|
n
|
"label
#{
n
}
"
}
sequence
(
:branch
)
{
|
n
|
"my-branch-
#{
n
}
"
}
sequence
(
:past_time
)
{
|
n
|
4
.
hours
.
ago
+
(
2
*
n
).
seconds
}
...
...
spec/models/ci/pipeline_spec.rb
View file @
95dd3704
...
...
@@ -4,6 +4,7 @@ require 'spec_helper'
describe
Ci
::
Pipeline
,
:mailer
do
include
ProjectForksHelper
include
StubRequests
let
(
:user
)
{
create
(
:user
)
}
set
(
:project
)
{
create
(
:project
)
}
...
...
@@ -2504,7 +2505,7 @@ describe Ci::Pipeline, :mailer do
let
(
:enabled
)
{
true
}
before
do
WebMock
.
stub_request
(
:post
,
hook
.
url
)
stub_full_request
(
hook
.
url
,
method: :post
)
end
context
'with multiple builds'
do
...
...
@@ -2558,7 +2559,7 @@ describe Ci::Pipeline, :mailer do
end
def
have_requested_pipeline_hook
(
status
)
have_requested
(
:post
,
hook
.
url
).
with
do
|
req
|
have_requested
(
:post
,
stubbed_hostname
(
hook
.
url
)
).
with
do
|
req
|
json_body
=
JSON
.
parse
(
req
.
body
)
json_body
[
'object_attributes'
][
'status'
]
==
status
&&
json_body
[
'builds'
].
length
==
2
...
...
spec/services/web_hook_service_spec.rb
View file @
95dd3704
...
...
@@ -55,31 +55,38 @@ describe WebHookService do
describe
'#execute'
do
before
do
project
.
hooks
<<
[
project_hook
]
WebMock
.
stub_request
(
:post
,
project_hook
.
url
)
end
context
'when token is defined'
do
let
(
:project_hook
)
{
create
(
:project_hook
,
:token
)
}
it
'POSTs to the webhook URL'
do
stub_full_request
(
project_hook
.
url
,
method: :post
)
service_instance
.
execute
expect
(
WebMock
).
to
have_requested
(
:post
,
project_hook
.
url
).
with
(
expect
(
WebMock
).
to
have_requested
(
:post
,
stubbed_hostname
(
project_hook
.
url
)).
with
(
headers:
headers
.
merge
({
'X-Gitlab-Token'
=>
project_hook
.
token
})
).
once
end
end
it
'POSTs to the webhook URL'
do
stub_full_request
(
project_hook
.
url
,
method: :post
)
service_instance
.
execute
expect
(
WebMock
).
to
have_requested
(
:post
,
project_hook
.
url
).
with
(
expect
(
WebMock
).
to
have_requested
(
:post
,
stubbed_hostname
(
project_hook
.
url
)).
with
(
headers:
headers
).
once
end
it
'POSTs the data as JSON'
do
stub_full_request
(
project_hook
.
url
,
method: :post
)
service_instance
.
execute
expect
(
WebMock
).
to
have_requested
(
:post
,
project_hook
.
url
).
with
(
expect
(
WebMock
).
to
have_requested
(
:post
,
stubbed_hostname
(
project_hook
.
url
)).
with
(
headers:
headers
).
once
end
...
...
@@ -115,7 +122,7 @@ describe WebHookService do
end
it
'catches exceptions'
do
WebMock
.
stub_request
(
:post
,
project_hook
.
url
).
to_raise
(
StandardError
.
new
(
'Some error'
))
stub_full_request
(
project_hook
.
url
,
method: :post
).
to_raise
(
StandardError
.
new
(
'Some error'
))
expect
{
service_instance
.
execute
}.
to
raise_error
(
StandardError
)
end
...
...
@@ -125,20 +132,20 @@ describe WebHookService do
exceptions
.
each
do
|
exception_class
|
exception
=
exception_class
.
new
(
'Exception message'
)
WebMock
.
stub_request
(
:post
,
project_hook
.
url
).
to_raise
(
exception
)
stub_full_request
(
project_hook
.
url
,
method: :post
).
to_raise
(
exception
)
expect
(
service_instance
.
execute
).
to
eq
({
status: :error
,
message:
exception
.
to_s
})
expect
{
service_instance
.
execute
}.
not_to
raise_error
end
end
it
'handles 200 status code'
do
WebMock
.
stub_request
(
:post
,
project_hook
.
url
).
to_return
(
status:
200
,
body:
'Success'
)
stub_full_request
(
project_hook
.
url
,
method: :post
).
to_return
(
status:
200
,
body:
'Success'
)
expect
(
service_instance
.
execute
).
to
include
({
status: :success
,
http_status:
200
,
message:
'Success'
})
end
it
'handles 2xx status codes'
do
WebMock
.
stub_request
(
:post
,
project_hook
.
url
).
to_return
(
status:
201
,
body:
'Success'
)
stub_full_request
(
project_hook
.
url
,
method: :post
).
to_return
(
status:
201
,
body:
'Success'
)
expect
(
service_instance
.
execute
).
to
include
({
status: :success
,
http_status:
201
,
message:
'Success'
})
end
...
...
@@ -148,7 +155,7 @@ describe WebHookService do
context
'with success'
do
before
do
WebMock
.
stub_request
(
:post
,
project_hook
.
url
).
to_return
(
status:
200
,
body:
'Success'
)
stub_full_request
(
project_hook
.
url
,
method: :post
).
to_return
(
status:
200
,
body:
'Success'
)
service_instance
.
execute
end
...
...
@@ -165,7 +172,7 @@ describe WebHookService do
context
'with exception'
do
before
do
WebMock
.
stub_request
(
:post
,
project_hook
.
url
).
to_raise
(
SocketError
.
new
(
'Some HTTP Post error'
))
stub_full_request
(
project_hook
.
url
,
method: :post
).
to_raise
(
SocketError
.
new
(
'Some HTTP Post error'
))
service_instance
.
execute
end
...
...
@@ -182,7 +189,7 @@ describe WebHookService do
context
'with unsafe response body'
do
before
do
WebMock
.
stub_request
(
:post
,
project_hook
.
url
).
to_return
(
status:
200
,
body:
"
\xBB
"
)
stub_full_request
(
project_hook
.
url
,
method: :post
).
to_return
(
status:
200
,
body:
"
\xBB
"
)
service_instance
.
execute
end
...
...
@@ -202,7 +209,7 @@ describe WebHookService do
let
(
:service_instance
)
{
described_class
.
new
(
service_hook
,
data
,
'service_hook'
)
}
before
do
WebMock
.
stub_request
(
:post
,
service_hook
.
url
).
to_return
(
status:
200
,
body:
'Success'
)
stub_full_request
(
service_hook
.
url
,
method: :post
).
to_return
(
status:
200
,
body:
'Success'
)
end
it
{
expect
{
service_instance
.
execute
}.
not_to
change
(
WebHookLog
,
:count
)
}
...
...
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