Commit c3676aa1 authored by Robert Speicher's avatar Robert Speicher

Merge branch 'default_clone_protocol_based_on_user_keys' into 'master'

When rendering the clone page, check user profile to decide default
clone protocol

If the user has uploaded SSH-keys, use SSH; otherwise, use http(s).

Closes #3504.

See merge request !1998
parents 1954bd6e bb79573c
...@@ -175,11 +175,19 @@ module ProjectsHelper ...@@ -175,11 +175,19 @@ module ProjectsHelper
end end
def default_url_to_repo(project = @project) def default_url_to_repo(project = @project)
current_user ? project.url_to_repo : project.http_url_to_repo if default_clone_protocol == "ssh"
project.ssh_url_to_repo
else
project.http_url_to_repo
end
end end
def default_clone_protocol def default_clone_protocol
current_user ? "ssh" : "http" if !current_user || current_user.require_ssh_key?
"http"
else
"ssh"
end
end end
def project_last_activity(project) def project_last_activity(project)
......
...@@ -31,8 +31,17 @@ Feature: Explore Projects ...@@ -31,8 +31,17 @@ Feature: Explore Projects
Then I should see empty public project details Then I should see empty public project details
And I should see empty public project details with http clone info And I should see empty public project details with http clone info
Scenario: I visit an empty public project page as user Scenario: I visit an empty public project page as user with no ssh-keys
Given I sign in as a user Given I sign in as a user
And I have no ssh keys
And public empty project "Empty Public Project"
When I visit empty project page
Then I should see empty public project details
And I should see empty public project details with http clone info
Scenario: I visit an empty public project page as user with an ssh-key
Given I sign in as a user
And I have an ssh key
And public empty project "Empty Public Project" And public empty project "Empty Public Project"
When I visit empty project page When I visit empty project page
Then I should see empty public project details Then I should see empty public project details
...@@ -57,8 +66,16 @@ Feature: Explore Projects ...@@ -57,8 +66,16 @@ Feature: Explore Projects
Then I should see project "Community" home page Then I should see project "Community" home page
And I should see an http link to the repository And I should see an http link to the repository
Scenario: I visit public project page as user Scenario: I visit public project page as user with no ssh-keys
Given I sign in as a user
And I have no ssh keys
When I visit project "Community" page
Then I should see project "Community" home page
And I should see an http link to the repository
Scenario: I visit public project page as user with an ssh-key
Given I sign in as a user Given I sign in as a user
And I have an ssh key
When I visit project "Community" page When I visit project "Community" page
Then I should see project "Community" home page Then I should see project "Community" home page
And I should see an ssh link to the repository And I should see an ssh link to the repository
......
...@@ -7,6 +7,7 @@ Feature: Project Create ...@@ -7,6 +7,7 @@ Feature: Project Create
Scenario: User create a project Scenario: User create a project
Given I sign in as a user Given I sign in as a user
When I visit new project page When I visit new project page
And I have an ssh key
And fill project form with valid data And fill project form with valid data
Then I should see project page Then I should see project page
And I should see empty project instuctions And I should see empty project instuctions
...@@ -14,6 +15,7 @@ Feature: Project Create ...@@ -14,6 +15,7 @@ Feature: Project Create
@javascript @javascript
Scenario: Empty project instructions Scenario: Empty project instructions
Given I sign in as a user Given I sign in as a user
And I have an ssh key
When I visit new project page When I visit new project page
And fill project form with valid data And fill project form with valid data
Then I see empty project instuctions Then I see empty project instuctions
......
...@@ -2,6 +2,7 @@ class Spinach::Features::ExploreProjects < Spinach::FeatureSteps ...@@ -2,6 +2,7 @@ class Spinach::Features::ExploreProjects < Spinach::FeatureSteps
include SharedAuthentication include SharedAuthentication
include SharedPaths include SharedPaths
include SharedProject include SharedProject
include SharedUser
step 'I should see project "Empty Public Project"' do step 'I should see project "Empty Public Project"' do
expect(page).to have_content "Empty Public Project" expect(page).to have_content "Empty Public Project"
......
class Spinach::Features::ProjectCreate < Spinach::FeatureSteps class Spinach::Features::ProjectCreate < Spinach::FeatureSteps
include SharedAuthentication include SharedAuthentication
include SharedPaths include SharedPaths
include SharedUser
step 'fill project form with valid data' do step 'fill project form with valid data' do
fill_in 'project_path', with: 'Empty' fill_in 'project_path', with: 'Empty'
......
...@@ -18,4 +18,12 @@ module SharedUser ...@@ -18,4 +18,12 @@ module SharedUser
def user_exists(name, options = {}) def user_exists(name, options = {})
User.find_by(name: name) || create(:user, { name: name, admin: false }.merge(options)) User.find_by(name: name) || create(:user, { name: name, admin: false }.merge(options))
end end
step 'I have an ssh key' do
create(:key, user: @user, title: "An ssh-key", key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+L3TbFegm3k8QjejSwemk4HhlRh+DuN679Pc5ckqE/MPhVtE/+kZQDYCTB284GiT2aIoGzmZ8ee9TkaoejAsBwlA+Wz2Q3vhz65X6sMgalRwpdJx8kSEUYV8ZPV3MZvPo8KdNg993o4jL6G36GDW4BPIyO6FPZhfsawdf6liVD0Xo5kibIK7B9VoE178cdLQtLpS2YolRwf5yy6XR6hbbBGQR+6xrGOdP16eGZDb1CE2bMvvJijjloFqPscGktWOqW+nfh5txwFfBzlfARDTBsS8WZtg3Yoj1kn33kPsWRlgHfNutFRAIynDuDdQzQq8tTtVwm+Yi75RfcPHW8y3P Work")
end
step 'I have no ssh keys' do
Key.delete_all
end
end end
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