Commit e9de5694 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Fix tests for user page

Signed-off-by: default avatarDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
parent 72b29525
...@@ -6,7 +6,7 @@ class UsersController < ApplicationController ...@@ -6,7 +6,7 @@ class UsersController < ApplicationController
@user = User.find_by_username!(params[:username]) @user = User.find_by_username!(params[:username])
@projects = Project.personal(@user).accessible_to(current_user) @projects = Project.personal(@user).accessible_to(current_user)
if !current_user && @projects.empty? unless current_user || @user.public_profile?
return authenticate_user! return authenticate_user!
end end
......
...@@ -478,4 +478,8 @@ class User < ActiveRecord::Base ...@@ -478,4 +478,8 @@ class User < ActiveRecord::Base
def generate_tmp_oauth_email def generate_tmp_oauth_email
self.email = "temp-email-for-oauth-#{username}@gitlab.localhost" self.email = "temp-email-for-oauth-#{username}@gitlab.localhost"
end end
def public_profile?
authorized_projects.public_only.any?
end
end end
...@@ -102,24 +102,24 @@ module SharedProject ...@@ -102,24 +102,24 @@ module SharedProject
page.should_not have_content "Community" page.should_not have_content "Community"
end end
step '"John Doe" is authorized to private project "Enterprise"' do step '"John Doe" owns private project "Enterprise"' do
user = user_exists("John Doe", username: "john_doe") user = user_exists("John Doe", username: "john_doe")
project = Project.find_by(name: "Enterprise") project = Project.find_by(name: "Enterprise")
project ||= create(:project, name: "Enterprise", namespace: user.namespace) project ||= create(:empty_project, name: "Enterprise", namespace: user.namespace)
project.team << [user, :master] project.team << [user, :master]
end end
step '"John Doe" is authorized to internal project "Internal"' do step '"John Doe" owns internal project "Internal"' do
user = user_exists("John Doe", username: "john_doe") user = user_exists("John Doe", username: "john_doe")
project = Project.find_by(name: "Internal") project = Project.find_by(name: "Internal")
project ||= create :project, :internal, name: 'Internal' project ||= create :empty_project, :internal, name: 'Internal', namespace: user.namespace
project.team << [user, :master] project.team << [user, :master]
end end
step '"John Doe" is authorized to public project "Community"' do step '"John Doe" owns public project "Community"' do
user = user_exists("John Doe", username: "john_doe") user = user_exists("John Doe", username: "john_doe")
project = Project.find_by(name: "Community") project = Project.find_by(name: "Community")
project ||= create :project, :public, name: 'Community' project ||= create :empty_project, :public, name: 'Community', namespace: user.namespace
project.team << [user, :master] project.team << [user, :master]
end end
end end
Feature: User Feature: User
Background: Background:
Given User "John Doe" exists Given User "John Doe" exists
And "John Doe" is authorized to private project "Enterprise" And "John Doe" owns private project "Enterprise"
# Signed out # Signed out
Scenario: I visit user "John Doe" page while not signed in when he is authorized to a public project Scenario: I visit user "John Doe" page while not signed in when he owns a public project
Given "John Doe" is authorized to internal project "Internal" Given "John Doe" owns internal project "Internal"
And "John Doe" is authorized to public project "Community" And "John Doe" owns public project "Community"
When I visit user "John Doe" page When I visit user "John Doe" page
Then I should see user "John Doe" page Then I should see user "John Doe" page
And I should not see project "Enterprise" And I should not see project "Enterprise"
...@@ -15,15 +15,15 @@ Feature: User ...@@ -15,15 +15,15 @@ Feature: User
And I should see project "Community" And I should see project "Community"
Scenario: I visit user "John Doe" page while not signed in when he is not authorized to a public project Scenario: I visit user "John Doe" page while not signed in when he is not authorized to a public project
Given "John Doe" is authorized to internal project "Internal" Given "John Doe" owns internal project "Internal"
When I visit user "John Doe" page When I visit user "John Doe" page
Then I should be redirected to sign in page Then I should be redirected to sign in page
# Signed in as someone else # Signed in as someone else
Scenario: I visit user "John Doe" page while signed in as someone else when he is authorized to a public project Scenario: I visit user "John Doe" page while signed in as someone else when he owns a public project
Given "John Doe" is authorized to public project "Community" Given "John Doe" owns public project "Community"
And "John Doe" is authorized to internal project "Internal" And "John Doe" owns internal project "Internal"
And I sign in as a user And I sign in as a user
When I visit user "John Doe" page When I visit user "John Doe" page
Then I should see user "John Doe" page Then I should see user "John Doe" page
...@@ -32,7 +32,7 @@ Feature: User ...@@ -32,7 +32,7 @@ Feature: User
And I should see project "Community" And I should see project "Community"
Scenario: I visit user "John Doe" page while signed in as someone else when he is not authorized to a public project Scenario: I visit user "John Doe" page while signed in as someone else when he is not authorized to a public project
Given "John Doe" is authorized to internal project "Internal" Given "John Doe" owns internal project "Internal"
And I sign in as a user And I sign in as a user
When I visit user "John Doe" page When I visit user "John Doe" page
Then I should see user "John Doe" page Then I should see user "John Doe" page
...@@ -51,8 +51,8 @@ Feature: User ...@@ -51,8 +51,8 @@ Feature: User
# Signed in as the user himself # Signed in as the user himself
Scenario: I visit user "John Doe" page while signed in as "John Doe" when he has a public project Scenario: I visit user "John Doe" page while signed in as "John Doe" when he has a public project
Given "John Doe" is authorized to internal project "Internal" Given "John Doe" owns internal project "Internal"
And "John Doe" is authorized to public project "Community" And "John Doe" owns public project "Community"
And I sign in as "John Doe" And I sign in as "John Doe"
When I visit user "John Doe" page When I visit user "John Doe" page
Then I should see user "John Doe" page Then I should see user "John Doe" page
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment