From bbfb0102f58aadf153549a64e298ee5c873ff471 Mon Sep 17 00:00:00 2001 From: TheOtherP Date: Tue, 12 Nov 2024 21:08:30 +0100 Subject: [PATCH] Automatically determine forbidden word prefix to use --- .../org/nzbhydra/indexers/NewznabTest.java | 18 ++++++++++++++++-- .../indexers/capscheck/NewznabCheckerTest.java | 4 ++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/core/src/test/java/org/nzbhydra/indexers/NewznabTest.java b/core/src/test/java/org/nzbhydra/indexers/NewznabTest.java index 72b9bd400..1d6bc3396 100644 --- a/core/src/test/java/org/nzbhydra/indexers/NewznabTest.java +++ b/core/src/test/java/org/nzbhydra/indexers/NewznabTest.java @@ -114,6 +114,8 @@ public class NewznabTest { SearchingConfig searchingConfigMock; @Mock private QueryGenerator queryGeneratorMock; + @Mock + private BaseConfigHandler configHandler; Category animeCategory = new Category("anime"); Category naCategory = new Category("n/a"); Category otherCategory = new Category("other"); @@ -121,8 +123,7 @@ public class NewznabTest { private ConfigProvider configProviderMock; @InjectMocks - private Newznab testee = new Newznab(configProviderMock, indexerRepositoryMock, searchResultRepositoryMock, indexerApiAccessRepositoryMock, shortRepositoryMock, null, indexerWebAccessMock, resultAcceptorMock, - categoryProviderMock, infoProviderMock, null, queryGeneratorMock, null, unmarshallerMock, null); + private Newznab testee; @BeforeEach @@ -145,6 +146,7 @@ public void setUp() throws Exception { testee.config = new IndexerConfig(); testee.config.setSupportedSearchIds(Lists.newArrayList(MediaIdType.TMDB, MediaIdType.TVRAGE)); testee.config.setHost("http://127.0.0.1:1234"); + testee.config.setForbiddenWordPrefix(IndexerConfig.ForbiddenWordPrefix.EXCLAMATION_MARK); testee.indexer = indexerEntityMock; baseConfig = new BaseConfig(); @@ -175,6 +177,7 @@ public String answer(InvocationOnMock invocation) throws Throwable { return invocation.getArgument(1); } }); + } @Test @@ -411,6 +414,7 @@ void shouldNotConvertIdIfNotNecessary() throws Exception { @Test void shouldAddExcludedAndRequiredWordsToQuery() throws Exception { + testee.config.setForbiddenWordPrefix(IndexerConfig.ForbiddenWordPrefix.DOUBLE_DASH); SearchRequest searchRequest = new SearchRequest(SearchSource.INTERNAL, SearchType.SEARCH, 0, 100); searchRequest.setQuery("q"); searchRequest.getInternalData().setForbiddenWords(Lists.newArrayList("a", "b", "c")); @@ -436,12 +440,22 @@ void shouldAddExcludedAndRequiredWordsToQuery() throws Exception { @Test void shoulNotdAddExcludedAndRequiredWordsWithSomeCharacters() throws Exception { + testee.config.setForbiddenWordPrefix(IndexerConfig.ForbiddenWordPrefix.DOUBLE_DASH); SearchRequest searchRequest = new SearchRequest(SearchSource.INTERNAL, SearchType.SEARCH, 0, 100); searchRequest.setQuery("q"); searchRequest.getInternalData().setForbiddenWords(Lists.newArrayList("a", "b b", "-c", "d.d")); assertEquals(UriComponentsBuilder.fromHttpUrl("http://127.0.0.1:1234/api?t=search&extended=1&q=q --a&limit=1000").build(), buildCleanedSearchUrl(searchRequest, null, null).build()); } + @Test + void shoulNotdAddExcludedWordsWithExclamationMark() throws Exception { + testee.config.setForbiddenWordPrefix(IndexerConfig.ForbiddenWordPrefix.EXCLAMATION_MARK); + SearchRequest searchRequest = new SearchRequest(SearchSource.INTERNAL, SearchType.SEARCH, 0, 100); + searchRequest.setQuery("q"); + searchRequest.getInternalData().setForbiddenWords(Lists.newArrayList("a", "b b", "-c", "d.d")); + assertEquals(UriComponentsBuilder.fromHttpUrl("http://127.0.0.1:1234/api?t=search&extended=1&q=q !a&limit=1000").build(), buildCleanedSearchUrl(searchRequest, null, null).build()); + } + @Test void shouldUseDifferentExclusionFormatForNzedbAndOmgWtf() throws Exception { testee.config.setBackend(BackendType.NZEDB); diff --git a/core/src/test/java/org/nzbhydra/indexers/capscheck/NewznabCheckerTest.java b/core/src/test/java/org/nzbhydra/indexers/capscheck/NewznabCheckerTest.java index 662107dbe..ab928b237 100644 --- a/core/src/test/java/org/nzbhydra/indexers/capscheck/NewznabCheckerTest.java +++ b/core/src/test/java/org/nzbhydra/indexers/capscheck/NewznabCheckerTest.java @@ -50,6 +50,7 @@ import java.net.URI; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; @@ -117,6 +118,8 @@ void shouldCheckCaps() throws Exception { .thenReturn(builder.getTestResult(1, 100, "Avengers", 0, 100)); when(indexerWebAccess.get(new URI("http://127.0.0.1:1234/api?apikey=apikey&t=movie&imdbid=0848228"), indexerConfig)) .thenReturn(builder.getTestResult(1, 100, "Avengers", 0, 100)); + when(indexerWebAccess.get(new URI("http://127.0.0.1:1234/api?apikey=apikey&t=search&q=Avengers%20--1080p"), indexerConfig, NewznabXmlRoot.class)) + .thenReturn(builder.getTestResult(1, 100, "Avengers", 0, 100)); capsRoot.getSearching().setAudioSearch(new CapsXmlSearch("yes", "q")); @@ -138,6 +141,7 @@ void shouldCheckCaps() throws Exception { assertThat(checkCapsRespone.getIndexerConfig().getBackend()).isEqualTo(BackendType.NZEDB); assertTrue(checkCapsRespone.isAllCapsChecked()); + assertEquals(IndexerConfig.ForbiddenWordPrefix.DOUBLE_DASH, checkCapsRespone.getIndexerConfig().getForbiddenWordPrefix()); verify(indexerWebAccess, times(8)).get(any(), eq(indexerConfig)); }