def test_sonarr_snatch(self): release = Release( messages=["son snatch - /dog/ ¤/(- #sad# - pasta"], channel=channel, title="son snatch", url="animal: dog &mood=sad f1: first_fixed f2: fixed_second", indexer="Single", backends=config.backends.keys(), snatches=["my_sonarr"], ) backends.send_approved("my_sonarr", True) misc.announce_await_push(self, release) backends.check_first_rx( self, config.backends["my_sonarr"], release, ) backends.max_announcements(self, "my_radarr", 1) backends.max_announcements(self, "my_lidarr", 1) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 1) misc.check_announced( self, config, release, )
def test_no_snatch(self): release = Release( messages=["this is a name - /cow/ ¤/(- #angry# - pasta and sauce"], channel=channel, title="this is a name", url="animal: cow &mood=angry f1: first_fixed f2: fixed_second", indexer="Single", backends=["my_sonarr"], ) backends.push_counter = 1 misc.announce_await_push(self, release) backends.check_first_rx( self, config.backends["my_sonarr"], release, ) backends.max_announcements(self, "my_radarr", 0) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 0) misc.check_announced( self, config, release, )
def test_radarr1_snatch(self): release = Release( messages=["two title : another stuff"], channel=channel, title="two title", url="smth: another stuff", indexer="Simple1", backends=config.backends.keys(), snatches=["Radarr1"], ) backends.send_approved("Radarr1", True) misc.announce_await_push(self, release) backends.check_first_rx( self, config.backends["Radarr1"], release, ) backends.max_announcements(self, "Sonarr1", 1) backends.max_announcements(self, "Sonarr2", 1) backends.max_announcements(self, "Radarr2", 1) backends.max_announcements(self, "Lidarr1", 1) backends.max_announcements(self, "Lidarr2", 1) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 1) misc.check_announced( self, config, release, )
def test_sonarr_snatch(self): release = Release( messages=[ "Old: second multi ", "Category: color;", "PATH: https://example/a?id=54321", ], channel=channel, title="second multi", url="http://example/dl.php/54321/config_string/second+multi.jpg", indexer="Multi", backends=["my_sonarr"], snatches=["my_sonarr"], ) backends.send_approved("my_sonarr", True) irc.announce(release) irc.announce(release) misc.announce_await_push(self, release) backends.check_first_rx( self, config.backends["my_sonarr"], release, ) backends.max_announcements(self, "my_radarr", 0) backends.max_announcements(self, "my_lidarr", 0) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 1) misc.check_announced( self, config, release, )
def test_renotify_missing_radarr(self): release = Release( messages=["son snatch2 - /horsie/ ¤/(- #calm# - pasta"], channel=channel, title="son snatch2", url="animal: horsie &mood=calm f1: first_fixed f2: fixed_second", indexer="Single", backends=["my_sonarr"], ) misc.announce_await_push(self, release) backends.check_first_rx( self, config.backends["my_sonarr"], release, ) backends.max_announcements(self, "my_radarr", 0) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 0) misc.check_announced( self, config, release, ) browser.renotify(self, config, table_row=1, backend="my_sonarr", success=False) # Causes connection refused browser.renotify( self, config, table_row=1, backend="missing_radarr", success=False ) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 0)
def test_all_variables_missing(self): release = Release( messages=["test - test"], channel=channel, ) irc.announce(release, wait=1) backends.max_announcements(self, "line_sonarr", 0) backends.max_announcements(self, "line_radarr", 0) backends.max_announcements(self, "line_lidarr", 0) self.assertEqual(db.nr_announcements(), 0) self.assertEqual(db.nr_snatches(), 0)
def test_missing_torrent_url(self): release = Release( messages=["tags: tag1||tag2 - extractone: SetRegex : ; 2"], channel=channel, ) irc.announce(release, wait=1) backends.max_announcements(self, "line_sonarr", 0) backends.max_announcements(self, "line_radarr", 0) backends.max_announcements(self, "line_lidarr", 0) self.assertEqual(db.nr_announcements(), 0) self.assertEqual(db.nr_snatches(), 0)
def test_no_match(self): release = Release( messages=[ "this is a name - cow/ ¤/(- #angry# - pasta and sauce" ], channel=channel, ) irc.announce(release, wait=1) backends.max_announcements(self, "my_sonarr", 0) backends.max_announcements(self, "my_radarr", 0) backends.max_announcements(self, "my_lidarr", 0) self.assertEqual(db.nr_announcements(), 0) self.assertEqual(db.nr_snatches(), 0)
def test_no_snatch(self): release = Release( messages=["title 1 - stuff 1"], channel=channel, title="title 1", url="stuff: stuff 1", indexer="Delay", backends=config.backends.keys(), ) irc.announce(release) time.sleep(7) backends.max_announcements(self, "delayed_sonarr", 0) backends.max_announcements(self, "delayed_radarr", 0) backends.max_announcements(self, "delayed_lidarr", 0) time.sleep(2) backends.check_first_rx( self, config.backends["delayed_sonarr"], release, ) backends.check_first_rx( self, config.backends["delayed_radarr"], release, ) backends.check_first_rx( self, config.backends["delayed_lidarr"], release, ) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 0) misc.check_announced( self, config, release, )
def test_database_transaction_error(self): release = Release( messages=["database transaction title : some stuff"], channel=channel, title="database transaction", url="smth: some stuff", indexer="Simple1", backends=config.backends.keys(), ) # Trigger database error by moving the db file os.rename("data/brain.db", "data/brain.db.tmp") irc.announce(release, wait=1) os.rename("data/brain.db.tmp", "data/brain.db") backends.max_announcements(self, "MySonarr", 0) backends.max_announcements(self, "MyRadarr", 0) backends.max_announcements(self, "MyLidarr", 0) self.assertEqual(db.nr_announcements(), 0) self.assertEqual(db.nr_snatches(), 0)
def test_snatches(self): releases = [] snatches = [] for i in range(90): tracker = trackers[i % 3] release = Release( messages=[f"title {i} yes : else {i}"], channel=tracker["channel"], title=f"title {i} yes", url=f"{tracker['url']}: else {i}", indexer=tracker["name"], backends=config.backends.keys(), ) if i % 3 == 0: backends.send_approved("MySonarr", True) release.snatches.append("MySonarr") snatches.append(release) elif i % 5 == 0: backends.send_approved("MyRadarr", True) release.snatches.append("MyRadarr") snatches.append(release) elif i % 7 == 0: backends.send_approved("MyLidarr", True) release.snatches.append("MyLidarr") snatches.append(release) misc.announce_await_push(self, release, wait=0) releases.append(release) # Wait for all to complete time.sleep(1) backends.max_announcements(self, "MySonarr", 90) backends.max_announcements(self, "MyRadarr", 90) backends.max_announcements(self, "MyLidarr", 90) misc.check_announcements(self, config, releases, snatches)
def test_extracttags_empty_tag(self): release = Release( messages=["tags: tag1||tag2 - extractone: SetRegex : ; 1"], channel=channel, title="IF 1 tag1 tag2", url="matched: mfix1&_mfix2%26_SetRegex_SetRegex_IS1", indexer="Linematched", backends=config.backends.keys(), ) misc.announce_await_push(self, release) backends.max_announcements(self, "line_sonarr", 1) backends.max_announcements(self, "line_radarr", 1) backends.max_announcements(self, "line_lidarr", 1) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 0) misc.check_announced( self, config, release, )
def test_match_all(self): release = Release( messages=["tags: tag1|qwert|tag3 - extractone: SetRegex% : ; 2>1"], channel=channel, title="IF 2%21%3D1 tag1 qwert", url="matched: mfix1&_mfix2%26_SetRegex%_SetRegex%25_IS1", indexer="Linematched", backends=config.backends.keys(), ) misc.announce_await_push(self, release) backends.max_announcements(self, "line_sonarr", 1) backends.max_announcements(self, "line_radarr", 1) backends.max_announcements(self, "line_lidarr", 1) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 0) misc.check_announced( self, config, release, )
def test_renotify_nonexistant(self): release = Release( messages=["title - /some/ ¤/(- #thing# - pasta"], channel=channel, title="title", url="animal: some &mood=thing f1: first_fixed f2: fixed_second", indexer="Single", backends=config.backends.keys(), ) misc.announce_await_push(self, release) backends.max_announcements(self, "my_sonarr", 1) backends.max_announcements(self, "my_radarr", 1) backends.max_announcements(self, "my_lidarr", 1) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 0) misc.check_announced( self, config, release, ) web.login(config) web.renotify(self, config, db.get_announcement(), "nonexistent") backends.max_announcements(self, "my_sonarr", 1) backends.max_announcements(self, "my_radarr", 1) backends.max_announcements(self, "my_lidarr", 1) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 0)
def test_renotify_radarr(self): release = Release( messages=["son snatch2 - /horsie/ ¤/(- #calm# - pasta"], channel=channel, title="son snatch2", url="animal: horsie &mood=calm f1: first_fixed f2: fixed_second", indexer="Single", backends=config.backends.keys(), snatches=["my_sonarr"], ) backends.send_approved("my_sonarr", True) misc.announce_await_push(self, release) backends.check_first_rx( self, config.backends["my_sonarr"], release, ) backends.max_announcements(self, "my_radarr", 1) backends.max_announcements(self, "my_lidarr", 1) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 1) misc.check_announced( self, config, release, ) backends.send_approved("my_radarr", True) browser.renotify(self, config, table_row=1, backend="my_sonarr", success=False) browser.renotify(self, config, table_row=1, backend="my_lidarr", success=False) browser.renotify(self, config, table_row=1, backend="my_radarr", success=True) release.snatches.append("my_radarr") backends.check_first_rx( self, config.backends["my_radarr"], release, ) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 2) misc.check_announced( self, config, release, )
def test_no_snatch(self): release = Release( messages=[ "Old: multi title", "Category: color tree fruit;", "PATH: https://example/f?id=12345", ], channel=channel, title="multi title", url="http://example/dl.php/12345/config_string/multi+title.jpg", indexer="Multi", backends=config.backends.keys(), ) irc.announce(release, wait=0.5) backends.max_announcements(self, "my_sonarr", 0) backends.max_announcements(self, "my_radarr", 0) backends.max_announcements(self, "my_lidarr", 0) self.assertEqual(db.nr_announcements(), 0) self.assertEqual(db.nr_snatches(), 0) irc.announce(release, wait=0.5) backends.max_announcements(self, "my_sonarr", 0) backends.max_announcements(self, "my_radarr", 0) backends.max_announcements(self, "my_lidarr", 0) self.assertEqual(db.nr_announcements(), 0) self.assertEqual(db.nr_snatches(), 0) misc.announce_await_push(self, release) backends.check_first_rx( self, config.backends["my_sonarr"], release, ) backends.check_first_rx( self, config.backends["my_radarr"], release, ) backends.check_first_rx( self, config.backends["my_lidarr"], release, ) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 0) misc.check_announced( self, config, release, )
def test_renotify_lidarr(self): release = Release( messages=[ "Old: third ", "Category: fruit;", "PATH: https://ex/a?id=99" ], channel=channel, title="third", url="http://ex/dl.php/99/config_string/third.jpg", indexer="Multi", backends=["my_radarr"], snatches=["my_radarr"], ) backends.send_approved("my_radarr", True) irc.announce(release) irc.announce(release) misc.announce_await_push(self, release) backends.check_first_rx( self, config.backends["my_radarr"], release, ) backends.max_announcements(self, "my_sonarr", 0) backends.max_announcements(self, "my_lidarr", 0) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 1) misc.check_announced( self, config, release, ) backends.send_approved("my_lidarr", True) browser.renotify(self, config, table_row=1, backend="my_sonarr", success=False) browser.renotify(self, config, table_row=1, backend="my_radarr", success=False) browser.renotify(self, config, table_row=1, backend="my_lidarr", success=True) release.snatches.append("my_lidarr") backends.check_first_rx( self, config.backends["my_lidarr"], release, ) backends.max_announcements(self, "my_sonarr", 1) backends.max_announcements(self, "my_radarr", 1) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 2) misc.check_announced( self, config, release, )