From 1521f467cbf8b1b9b3e9cb4169f3e96a9984bb46 Mon Sep 17 00:00:00 2001 From: Jason Hollingsworth Date: Tue, 3 Dec 2013 20:13:19 -0600 Subject: [PATCH] Update default public pull url. This updates the default pull URL for public projects when the user is not logged in. --- app/helpers/projects_helper.rb | 8 ++++++++ app/views/projects/empty.html.haml | 4 ++-- app/views/shared/_clone_panel.html.haml | 6 +++--- features/public/public_projects.feature | 19 ++++++++++++++++--- features/steps/public/projects_feature.rb | 18 ++++++++++++++++-- 5 files changed, 45 insertions(+), 10 deletions(-) diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 0141da1d071..660528952b2 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -179,4 +179,12 @@ module ProjectsHelper title end + + def default_url_to_repo + current_user ? @project.url_to_repo : @project.http_url_to_repo + end + + def default_clone_protocol + current_user ? "ssh" : "http" + end end diff --git a/app/views/projects/empty.html.haml b/app/views/projects/empty.html.haml index b63e6a6b554..15cf150460f 100644 --- a/app/views/projects/empty.html.haml +++ b/app/views/projects/empty.html.haml @@ -29,7 +29,7 @@ touch README git add README git commit -m 'first commit' - %span.clone= "git remote add origin #{@project.url_to_repo}" + %span.clone= "git remote add origin #{default_url_to_repo}" :preserve git push -u origin master @@ -38,7 +38,7 @@ %pre.dark :preserve cd existing_git_repo - %span.clone= "git remote add origin #{@project.url_to_repo}" + %span.clone= "git remote add origin #{default_url_to_repo}" :preserve git push -u origin master diff --git a/app/views/shared/_clone_panel.html.haml b/app/views/shared/_clone_panel.html.haml index 097c81100ba..2ae3e6d97f4 100644 --- a/app/views/shared/_clone_panel.html.haml +++ b/app/views/shared/_clone_panel.html.haml @@ -1,4 +1,4 @@ .git-clone-holder - %button{class: "btn #{ current_user ? 'active' : '' }", :"data-clone" => @project.ssh_url_to_repo} SSH - %button{class: "btn #{ current_user ? '' : 'active' }", :"data-clone" => @project.http_url_to_repo}= gitlab_config.protocol.upcase - = text_field_tag :project_clone, (current_user ? @project.url_to_repo : @project.http_url_to_repo), class: "one_click_select span5", readonly: true + %button{class: "btn #{ 'active' if default_clone_protocol == 'ssh' }", :"data-clone" => @project.ssh_url_to_repo} SSH + %button{class: "btn #{ 'active' if default_clone_protocol == 'http' }", :"data-clone" => @project.http_url_to_repo}= gitlab_config.protocol.upcase + = text_field_tag :project_clone, default_url_to_repo, class: "one_click_select span5", readonly: true diff --git a/features/public/public_projects.feature b/features/public/public_projects.feature index 5a30c03dd4a..d6574ca900e 100644 --- a/features/public/public_projects.feature +++ b/features/public/public_projects.feature @@ -26,6 +26,14 @@ Feature: Public Projects Feature Given 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 + Given I sign in as a user + 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 ssh clone info Scenario: I visit public area as user Given I sign in as a user @@ -42,10 +50,15 @@ Feature: Public Projects Feature Scenario: I visit public project page When I visit project "Community" page Then I should see project "Community" home page - And I should see a http link to the repository + And I should see an http link to the repository - Scenario: I visit public area as user + Scenario: I visit public project page as user Given I sign in as a user When I visit project "Community" page Then I should see project "Community" home page - And I should see a ssh link to the repository + And I should see an ssh link to the repository + + Scenario: I visit an empty public project page + Given public empty project "Empty Public Project" + When I visit empty project page + Then I should see empty public project details diff --git a/features/steps/public/projects_feature.rb b/features/steps/public/projects_feature.rb index a4209bb9c78..47e52f47d07 100644 --- a/features/steps/public/projects_feature.rb +++ b/features/steps/public/projects_feature.rb @@ -46,6 +46,20 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps page.should have_content 'Git global setup' end + step 'I should see empty public project details with http clone info' do + project = Project.find_by_name('Empty Public Project') + page.all(:css, '.git-empty .clone').each do |element| + element.text.should include(project.http_url_to_repo) + end + end + + step 'I should see empty public project details with ssh clone info' do + project = Project.find_by_name('Empty Public Project') + page.all(:css, '.git-empty .clone').each do |element| + element.text.should include(project.url_to_repo) + end + end + step 'private project "Enterprise"' do create :project, name: 'Enterprise' end @@ -84,12 +98,12 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps end end - Then 'I should see a http link to the repository' do + step 'I should see an http link to the repository' do project = Project.find_by_name 'Community' page.should have_field('project_clone', with: project.http_url_to_repo) end - Then 'I should see a ssh link to the repository' do + step 'I should see an ssh link to the repository' do project = Project.find_by_name 'Community' page.should have_field('project_clone', with: project.url_to_repo) end -- GitLab