summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Kozono <mkozono@gmail.com>2017-05-17 17:01:19 -0700
committerMichael Kozono <mkozono@gmail.com>2017-05-17 17:12:09 -0700
commit8d4cc9cbe07d96ee34dd2559e34b38b712c3b3b4 (patch)
tree015d7e518cb71d37bd0a5098da96a37a5f3eaf48
parent0b946a7bc69058a952a558a9530cd3e8302361e7 (diff)
downloadgitlab-ce-8d4cc9cbe07d96ee34dd2559e34b38b712c3b3b4.tar.gz
Fixes #32474
Older namespace records may be both `type == ‘Group` AND `owner_id` is not null.
-rw-r--r--app/models/user.rb4
-rw-r--r--spec/models/user_spec.rb16
2 files changed, 16 insertions, 4 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index 088a7cb83d5..7d71b0773e0 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -351,7 +351,9 @@ class User < ActiveRecord::Base
def find_by_full_path(path, follow_redirects: false)
namespace = Namespace.find_by_full_path(path, follow_redirects: follow_redirects)
- namespace&.owner
+ return unless namespace && namespace.kind == 'user'
+
+ namespace.owner
end
def reference_prefix
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index e6e7774431e..6a15830a15c 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -929,10 +929,20 @@ describe User, models: true do
end
context 'with a group route matching the given path' do
- let!(:group) { create(:group, path: 'group_path') }
+ context 'when the group namespace has an owner_id (legacy data)' do
+ let!(:group) { create(:group, path: 'group_path', owner: user) }
- it 'returns nil' do
- expect(User.find_by_full_path('group_path')).to eq(nil)
+ it 'returns nil' do
+ expect(User.find_by_full_path('group_path')).to eq(nil)
+ end
+ end
+
+ context 'when the group namespace does not have an owner_id' do
+ let!(:group) { create(:group, path: 'group_path') }
+
+ it 'returns nil' do
+ expect(User.find_by_full_path('group_path')).to eq(nil)
+ end
end
end
end