Commit 4d3896eb authored by Rémy Coutable's avatar Rémy Coutable

Merge branch 'master' of dev.gitlab.org:gitlab/gitlab-ee

parents d7bc6b82 d18056d8
...@@ -8,6 +8,9 @@ v 8.6.0 (unreleased) ...@@ -8,6 +8,9 @@ v 8.6.0 (unreleased)
- [Elastic] Update index on push to wiki - [Elastic] Update index on push to wiki
- [Elastic] Use subprocesses for ElasticSearch index jobs - [Elastic] Use subprocesses for ElasticSearch index jobs
v 8.5.4
- [Elastic][Security] Notes exposure
v 8.5.3 v 8.5.3
- Prevent LDAP from downgrading a group's last owner - Prevent LDAP from downgrading a group's last owner
- Update gitlab-elastic-search gem to 0.0.11 - Update gitlab-elastic-search gem to 0.0.11
......
...@@ -42,7 +42,7 @@ module Elastic ...@@ -42,7 +42,7 @@ module Elastic
query_hash = basic_query_hash(%w(title^2 description), query) query_hash = basic_query_hash(%w(title^2 description), query)
end end
query_hash = project_ids_filter(query_hash, options[:projects_ids]) query_hash = project_ids_filter(query_hash, options[:project_ids])
self.__elasticsearch__.search(query_hash) self.__elasticsearch__.search(query_hash)
end end
......
...@@ -65,12 +65,12 @@ module Elastic ...@@ -65,12 +65,12 @@ module Elastic
query_hash = basic_query_hash(%w(title^2 description), query) query_hash = basic_query_hash(%w(title^2 description), query)
end end
if options[:projects_ids] if options[:project_ids]
query_hash[:query][:filtered][:filter] = { query_hash[:query][:filtered][:filter] = {
and: [ and: [
{ {
terms: { terms: {
target_project_id: [options[:projects_ids]].flatten target_project_id: [options[:project_ids]].flatten
} }
} }
] ]
......
...@@ -28,7 +28,7 @@ module Elastic ...@@ -28,7 +28,7 @@ module Elastic
query_hash = basic_query_hash(options[:in], query) query_hash = basic_query_hash(options[:in], query)
query_hash = project_ids_filter(query_hash, options[:projects_ids]) query_hash = project_ids_filter(query_hash, options[:project_ids])
self.__elasticsearch__.search(query_hash) self.__elasticsearch__.search(query_hash)
end end
......
...@@ -37,7 +37,7 @@ module Elastic ...@@ -37,7 +37,7 @@ module Elastic
query_hash[:track_scores] = true query_hash[:track_scores] = true
end end
query_hash = project_ids_filter(query_hash, options[:projects_ids]) query_hash = project_ids_filter(query_hash, options[:project_ids])
query_hash[:sort] = [ query_hash[:sort] = [
{ updated_at_sort: { order: :desc, mode: :min } }, { updated_at_sort: { order: :desc, mode: :min } },
......
...@@ -63,7 +63,7 @@ module Gitlab ...@@ -63,7 +63,7 @@ module Gitlab
def issues def issues
opt = { opt = {
projects_ids: limit_project_ids project_ids: limit_project_ids
} }
Issue.elastic_search(query, options: opt) Issue.elastic_search(query, options: opt)
...@@ -71,7 +71,7 @@ module Gitlab ...@@ -71,7 +71,7 @@ module Gitlab
def milestones def milestones
opt = { opt = {
projects_ids: limit_project_ids project_ids: limit_project_ids
} }
Milestone.elastic_search(query, options: opt) Milestone.elastic_search(query, options: opt)
...@@ -79,7 +79,7 @@ module Gitlab ...@@ -79,7 +79,7 @@ module Gitlab
def merge_requests def merge_requests
opt = { opt = {
projects_ids: limit_project_ids project_ids: limit_project_ids
} }
MergeRequest.elastic_search(query, options: opt) MergeRequest.elastic_search(query, options: opt)
......
...@@ -23,7 +23,7 @@ describe "Issue", elastic: true do ...@@ -23,7 +23,7 @@ describe "Issue", elastic: true do
Issue.__elasticsearch__.refresh_index! Issue.__elasticsearch__.refresh_index!
options = { projects_ids: [project.id] } options = { project_ids: [project.id] }
expect(Issue.elastic_search('term', options: options).total_count).to eq(2) expect(Issue.elastic_search('term', options: options).total_count).to eq(2)
end end
......
...@@ -23,7 +23,7 @@ describe "MergeRequest", elastic: true do ...@@ -23,7 +23,7 @@ describe "MergeRequest", elastic: true do
MergeRequest.__elasticsearch__.refresh_index! MergeRequest.__elasticsearch__.refresh_index!
options = { projects_ids: [project.id] } options = { project_ids: [project.id] }
expect(MergeRequest.elastic_search('term', options: options).total_count).to eq(2) expect(MergeRequest.elastic_search('term', options: options).total_count).to eq(2)
end end
......
...@@ -18,11 +18,12 @@ describe "Milestone", elastic: true do ...@@ -18,11 +18,12 @@ describe "Milestone", elastic: true do
create :milestone, description: 'bla-bla term', project: project create :milestone, description: 'bla-bla term', project: project
create :milestone, project: project create :milestone, project: project
# The milestone you have no access to
create :milestone, title: 'bla-bla term' create :milestone, title: 'bla-bla term'
Milestone.__elasticsearch__.refresh_index! Milestone.__elasticsearch__.refresh_index!
options = { projects_ids: [project.id] } options = { project_ids: [project.id] }
expect(Milestone.elastic_search('term', options: options).total_count).to eq(2) expect(Milestone.elastic_search('term', options: options).total_count).to eq(2)
end end
......
...@@ -22,7 +22,7 @@ describe "Note", elastic: true do ...@@ -22,7 +22,7 @@ describe "Note", elastic: true do
Note.__elasticsearch__.refresh_index! Note.__elasticsearch__.refresh_index!
options = { projects_ids: [issue.project.id] } options = { project_ids: [issue.project.id] }
expect(Note.elastic_search('term', options: options).total_count).to eq(1) expect(Note.elastic_search('term', options: options).total_count).to eq(1)
end end
......
...@@ -31,4 +31,35 @@ describe Gitlab::Elastic::ProjectSearchResults, lib: true do ...@@ -31,4 +31,35 @@ describe Gitlab::Elastic::ProjectSearchResults, lib: true do
it { expect(results.repository_ref).to eq(ref) } it { expect(results.repository_ref).to eq(ref) }
it { expect(results.query).to eq('hello world') } it { expect(results.query).to eq('hello world') }
end end
describe "search" do
it "returns correct amounts" do
project = create :project
project1 = create :project
project.repository.index_blobs
project.repository.index_commits
# Notes
create :note, note: 'bla-bla term', project: project
# The note in the project you have no access to
create :note, note: 'bla-bla term', project: project1
# Wiki
project.wiki.create_page("index_page", "term")
project.wiki.index_blobs
project1.wiki.create_page("index_page", " term")
project1.wiki.index_blobs
Project.__elasticsearch__.refresh_index!
result = Gitlab::Elastic::ProjectSearchResults.new(project.id, "term")
expect(result.notes_count).to eq(1)
expect(result.wiki_blobs_count).to eq(1)
expect(result.blobs_count).to eq(1)
result1 = Gitlab::Elastic::ProjectSearchResults.new(project.id, "initial")
expect(result1.commits_count).to eq(1)
end
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