Commit e67574fe authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge pull request #4829 from hiroponz/render-not-found-when-failing-to-look-for-commit

Render not found when failing to look for commit
parents fede36f0 1101ceb3
......@@ -8,10 +8,6 @@ class Projects::NetworkController < Projects::ApplicationController
before_filter :require_non_empty_project
def show
if @options[:q]
@commit = @project.repository.commit(@options[:q]) || @commit
end
respond_to do |format|
format.html
......
......@@ -4,7 +4,7 @@
.pull-left
= form_tag project_network_path(@project, @id), method: :get do |f|
.control-group
= label_tag :filter_ref, "Show only selected ref", class: 'control-label light'
= label_tag :filter_ref, "Begin with the selected commit", class: 'control-label light'
.controls
= check_box_tag :filter_ref, 1, @options[:filter_ref]
- @options.each do |key, value|
......@@ -15,9 +15,9 @@
.control-group
= label_tag :search , "Looking for commit:", class: 'control-label light'
.controls
= text_field_tag :q, @options[:q], placeholder: "Input SHA", class: "search-input input-xlarge"
= text_field_tag :extended_sha1, @options[:extended_sha1], placeholder: "Input an extended SHA1 syntax", class: "search-input input-xlarge"
= button_tag type: 'submit', class: 'btn vtop' do
%i.icon-search
- @options.each do |key, value|
= hidden_field_tag(key, value, id: nil) unless key == "q"
= hidden_field_tag(key, value, id: nil) unless key == "extended_sha1"
......@@ -34,3 +34,7 @@ Feature: Project Network Graph
Then page should not have content not cotaining "v2.1.0"
When click "Show only selected branch" checkbox
Then page should have content not cotaining "v2.1.0"
Scenario: I should fail to look for a commit
When I look for a commit by ";"
Then page status code should be 404
......@@ -76,7 +76,7 @@ class ProjectNetworkGraph < Spinach::FeatureSteps
When 'I looking for a commit by SHA of "v2.1.0"' do
within ".content .search" do
fill_in 'q', with: '98d6492'
fill_in 'extended_sha1', with: '98d6492'
find('button').click
end
sleep 2
......@@ -87,4 +87,11 @@ class ProjectNetworkGraph < Spinach::FeatureSteps
page.should have_content 'v2.1.0'
end
end
When 'I look for a commit by ";"' do
within ".content .search" do
fill_in 'extended_sha1', with: ';'
find('button').click
end
end
end
......@@ -51,6 +51,10 @@ module SharedProject
page.should have_content("Features:")
end
Then 'page status code should be 404' do
page.status_code.should == 404
end
def current_project
@project ||= Project.first
end
......
......@@ -94,19 +94,23 @@ module ExtractsPath
# Automatically renders `not_found!` if a valid tree path could not be
# resolved (e.g., when a user inserts an invalid path or ref).
def assign_ref_vars
# assign allowed options
allowed_options = ["filter_ref", "extended_sha1"]
@options = params.select {|key, value| allowed_options.include?(key) && !value.blank? }
@options = HashWithIndifferentAccess.new(@options)
@id = get_id
@ref, @path = extract_ref(@id)
@repo = @project.repository
if @options[:extended_sha1].blank?
@commit = @repo.commit(@ref)
else
@commit = @repo.commit(@options[:extended_sha1])
end
@tree = Tree.new(@repo, @commit.id, @ref, @path)
@hex_path = Digest::SHA1.hexdigest(@path)
@logs_path = logs_file_project_ref_path(@project, @ref, @path)
# assign allowed options
allowed_options = ["filter_ref", "q"]
@options = params.select {|key, value| allowed_options.include?(key) && !value.blank? }
@options = HashWithIndifferentAccess.new(@options)
raise InvalidPathError unless @tree.exists?
rescue RuntimeError, NoMethodError, InvalidPathError
not_found!
......
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