Merge branch 'case-sensetivity-import' into 'master'

Fix import check for case sensetive namespaces

If you already have namespace `ABc` and you try to import project with namespace `abC` - import will fail with 422 error.

cc @valery

See merge request !1618
This commit is contained in:
Dmitriy Zaporozhets
2015-03-04 10:15:02 -08:00
committed by Marin Jankovski
parent 63e74ce9d6
commit 520a49d325
3 changed files with 16 additions and 1 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ class Import::BaseController < ApplicationController
private
def get_or_create_namespace
existing_namespace = Namespace.find_by("path = ? OR name = ?", @target_namespace, @target_namespace)
existing_namespace = Namespace.find_by_path_or_name(@target_namespace)
if existing_namespace
if existing_namespace.owner == current_user
+5
View File
@@ -48,6 +48,11 @@ class Namespace < ActiveRecord::Base
where('lower(path) = :value', value: path.downcase).first
end
# Case insensetive search for namespace by path or name
def self.find_by_path_or_name(path)
find_by("lower(path) = :path OR lower(name) = :path", path: path.downcase)
end
def self.search(query)
where("name LIKE :query OR path LIKE :query", query: "%#{query}%")
end
+10
View File
@@ -75,4 +75,14 @@ describe Namespace do
expect(namespace.rm_dir).to be_truthy
end
end
describe :find_by_path_or_name do
before do
@namespace = create(:namespace, name: 'WoW', path: 'woW')
end
it { expect(Namespace.find_by_path_or_name('wow')).to eq(@namespace) }
it { expect(Namespace.find_by_path_or_name('WOW')).to eq(@namespace) }
it { expect(Namespace.find_by_path_or_name('unknown')).to eq(nil) }
end
end