Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
heptapod
heptapod
Commits
9a9a99061a2f
Commit
3bbe9177
authored
Mar 10, 2018
by
Semyon Pupkov
Browse files
Replace project redirects spinach tests with RSpec analog
https://gitlab.com/gitlab-org/gitlab-ce/issues/23036
parent
844a6dfaa4fa
Changes
3
Hide whitespace changes
Inline
Side-by-side
features/project/redirects.feature
deleted
100644 → 0
View file @
844a6dfa
Feature
:
Project Redirects
Background
:
Given
public project
"Community"
And
private project
"Enterprise"
Scenario
:
I
visit public project page
When
I visit project
"Community"
page
Then
I should see project
"Community"
home page
Scenario
:
I
visit private project page
When
I visit project
"Enterprise"
page
Then
I should be redirected to sign in page
Scenario
:
I
visit a non-existent project page
When
I visit project
"CommunityDoesNotExist"
page
Then
I should be redirected to sign in page
Scenario
:
I
visit a non-existent project page as user
Given
I sign in as a user
When
I visit project
"CommunityDoesNotExist"
page
Then
page status code should be 404
Scenario
:
I
visit unauthorized project page as user
Given
I sign in as a user
When
I visit project
"Enterprise"
page
Then
page status code should be 404
Scenario
:
I
visit a public project without signing in
When
I visit project
"Community"
page
And
I should see project
"Community"
home page
And
I click on
"Sign In"
And
Authenticate
Then
I should be redirected to
"Community"
page
Scenario
:
I
visit private project page without signing in
When
I visit project
"Enterprise"
page
And
I get redirected to signin page where I sign in
Then
I should be redirected to
"Enterprise"
page
features/steps/project/redirects.rb
deleted
100644 → 0
View file @
844a6dfa
class
Spinach::Features::ProjectRedirects
<
Spinach
::
FeatureSteps
include
SharedAuthentication
include
SharedPaths
include
SharedProject
step
'public project "Community"'
do
create
(
:project
,
:public
,
name:
'Community'
)
end
step
'private project "Enterprise"'
do
create
(
:project
,
:private
,
name:
'Enterprise'
)
end
step
'I visit project "Community" page'
do
project
=
Project
.
find_by
(
name:
'Community'
)
visit
project_path
(
project
)
end
step
'I should see project "Community" home page'
do
Gitlab
.
config
.
gitlab
.
should_receive
(
:host
).
and_return
(
"www.example.com"
)
page
.
within
'.breadcrumbs .breadcrumb-item-text'
do
expect
(
page
).
to
have_content
'Community'
end
end
step
'I visit project "Enterprise" page'
do
project
=
Project
.
find_by
(
name:
'Enterprise'
)
visit
project_path
(
project
)
end
step
'I visit project "CommunityDoesNotExist" page'
do
project
=
Project
.
find_by
(
name:
'Community'
)
visit
project_path
(
project
)
+
'DoesNotExist'
end
step
'I click on "Sign In"'
do
first
(
:link
,
"Sign in"
).
click
end
step
'Authenticate'
do
admin
=
create
(
:admin
)
fill_in
"user_login"
,
with:
admin
.
email
fill_in
"user_password"
,
with:
admin
.
password
click_button
"Sign in"
Thread
.
current
[
:current_user
]
=
admin
end
step
'I should be redirected to "Community" page'
do
project
=
Project
.
find_by
(
name:
'Community'
)
expect
(
current_path
).
to
eq
"/
#{
project
.
full_path
}
"
expect
(
status_code
).
to
eq
200
end
step
'I get redirected to signin page where I sign in'
do
admin
=
create
(
:admin
)
fill_in
"user_login"
,
with:
admin
.
email
fill_in
"user_password"
,
with:
admin
.
password
click_button
"Sign in"
Thread
.
current
[
:current_user
]
=
admin
end
step
'I should be redirected to "Enterprise" page'
do
project
=
Project
.
find_by
(
name:
'Enterprise'
)
expect
(
current_path
).
to
eq
"/
#{
project
.
full_path
}
"
expect
(
status_code
).
to
eq
200
end
end
spec/features/projects/redirects_spec.rb
0 → 100644
View file @
9a9a9906
require
'spec_helper'
describe
'Project redirects'
do
let
(
:user
)
{
create
:user
}
let
(
:public_project
)
{
create
:project
,
:public
}
let
(
:private_project
)
{
create
:project
,
:private
}
before
do
allow
(
Gitlab
.
config
.
gitlab
).
to
receive
(
:host
).
and_return
(
'www.example.com'
)
end
it
'shows public project page'
do
visit
project_path
(
public_project
)
page
.
within
'.breadcrumbs .breadcrumb-item-text'
do
expect
(
page
).
to
have_content
(
public_project
.
name
)
end
end
it
'redirects to sign in page when project is private'
do
visit
project_path
(
private_project
)
expect
(
current_path
).
to
eq
(
new_user_session_path
)
end
it
'redirects to sign in page when project does not exist'
do
visit
project_path
(
build
(
:project
,
:public
))
expect
(
current_path
).
to
eq
(
new_user_session_path
)
end
it
'redirects to public project page after signing in'
do
visit
project_path
(
public_project
)
first
(
:link
,
'Sign in'
).
click
fill_in
'user_login'
,
with:
user
.
email
fill_in
'user_password'
,
with:
user
.
password
click_button
'Sign in'
expect
(
status_code
).
to
eq
(
200
)
expect
(
current_path
).
to
eq
(
"/
#{
public_project
.
full_path
}
"
)
end
it
'redirects to private project page after sign in'
do
visit
project_path
(
private_project
)
owner
=
private_project
.
owner
fill_in
'user_login'
,
with:
owner
.
email
fill_in
'user_password'
,
with:
owner
.
password
click_button
'Sign in'
expect
(
status_code
).
to
eq
(
200
)
expect
(
current_path
).
to
eq
(
"/
#{
private_project
.
full_path
}
"
)
end
context
'when signed in'
do
before
do
sign_in
(
user
)
end
it
'returns 404 status when project does not exist'
do
visit
project_path
(
build
(
:project
,
:public
))
expect
(
status_code
).
to
eq
(
404
)
end
it
'returns 404 when project is private'
do
visit
project_path
(
private_project
)
expect
(
status_code
).
to
eq
(
404
)
end
end
end
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