From c2e1e12b581de543d82bafbd2c5097c1cb86ee14 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Wed, 8 Jun 2016 13:11:30 +0900 Subject: [PATCH] Extend tests of owner: search with trailing slash Add tests to confirm behavior when passing an invalid query containing trailing slash. For Lucene: return bad request For Elasticsearch: return no result Bug: Issue 4168 Change-Id: I0187c49f6b73b3792fd5df27d6db6ca7fd50ca80 --- .../elasticsearch/ElasticQueryChangesTest.java | 12 ++++++++++++ .../query/change/AbstractQueryChangesTest.java | 3 +++ .../server/query/change/LuceneQueryChangesTest.java | 12 ++++++++++++ 3 files changed, 27 insertions(+) diff --git a/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryChangesTest.java b/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryChangesTest.java index 78590a1719..9a6755f2a6 100644 --- a/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryChangesTest.java +++ b/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryChangesTest.java @@ -27,12 +27,14 @@ import com.google.gerrit.server.index.IndexModule.IndexType; import com.google.gerrit.server.index.change.ChangeSchemaDefinitions; import com.google.gerrit.server.query.change.AbstractQueryChangesTest; import com.google.gerrit.testutil.InMemoryModule; +import com.google.gerrit.testutil.InMemoryRepositoryManager.Repo; import com.google.gson.FieldNamingPolicy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.inject.Guice; import com.google.inject.Injector; +import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.lib.Config; import org.elasticsearch.action.admin.cluster.node.info.NodesInfoRequest; import org.elasticsearch.common.settings.Settings; @@ -41,6 +43,7 @@ import org.elasticsearch.node.NodeBuilder; import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.Test; import java.io.File; import java.nio.file.Path; @@ -179,4 +182,13 @@ public class ElasticQueryChangesTest extends AbstractQueryChangesTest { return httpAddress.substring(httpAddress.indexOf(':') + 1, httpAddress.length()); } + + @Test + public void byOwnerInvalidQuery() throws Exception { + TestRepository repo = createProject("repo"); + insert(repo, newChange(repo), userId); + String nameEmail = user.asIdentifiedUser().getNameEmail(); + assertQuery("owner: \"" + nameEmail + "\"\\"); + } + } diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java index 3e3ec132a2..a1a5fbc473 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java @@ -374,6 +374,9 @@ public abstract class AbstractQueryChangesTest extends GerritServerTests { assertQuery("owner:" + userId.get(), change1); assertQuery("owner:" + user2, change2); + + String nameEmail = user.asIdentifiedUser().getNameEmail(); + assertQuery("owner: \"" + nameEmail + "\"", change1); } @Test diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/LuceneQueryChangesTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/LuceneQueryChangesTest.java index 038abda381..70493e848d 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/LuceneQueryChangesTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/LuceneQueryChangesTest.java @@ -14,6 +14,7 @@ package com.google.gerrit.server.query.change; +import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.testutil.InMemoryModule; import com.google.gerrit.testutil.InMemoryRepositoryManager.Repo; @@ -52,4 +53,15 @@ public class LuceneQueryChangesTest extends AbstractQueryChangesTest { assertQuery("message:one.two", change2); assertQuery("message:one two", change2); } + + @Test + public void byOwnerInvalidQuery() throws Exception { + TestRepository repo = createProject("repo"); + Change change1 = insert(repo, newChange(repo), userId); + String nameEmail = user.asIdentifiedUser().getNameEmail(); + + exception.expect(BadRequestException.class); + exception.expectMessage("Cannot create full-text query with value: \\"); + assertQuery("owner: \"" + nameEmail + "\"\\", change1); + } }