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_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_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_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_no_snatch(self): release = Release( messages=["a title : some stuff"], channel=channel, title="a title", url="smth: some stuff", indexer="Simple1", backends=config.backends.keys(), ) misc.announce_await_push(self, release) for backend in config.backends.values(): backends.check_first_rx( self, backend, release, ) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 0) misc.check_announced( self, config, release, )
def test_broken_json_backend_reply(self): release = Release( messages=[ "name this is - /tiger/ ¤/(- #lazy# - pasta and sauce" ], channel=channel, title="name this is", url="animal: tiger &mood=lazy f1: first_fixed f2: fixed_second", indexer="Single", backends=config.backends.keys(), ) backends.send("my_sonarr", "{'apr': some") backends.send("my_radarr", "broken") backends.send("my_lidarr", "{'approved': 'asdf'}") misc.announce_await_push(self, release) self.assertEqual(db.nr_announcements(), 1) self.assertEqual(db.nr_snatches(), 0) 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_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_non_capture_with_match(self): release = Release( messages=[ "Old: some title", "Category: color tree fruit; misc stuff", "PATH: https://example/f?id=1357", ], channel=channel, title="some title", url="http://example/dl.php/1357/config_string/some+title.jpg", indexer="Multi", backends=config.backends.keys(), ) irc.announce(release) irc.announce(release) 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_database_age(self): old_release = Release( messages=[], channel=channel, title="too old", url="smth: some stuff", indexer="Simple1", backends=config.backends.keys(), snatches=["MySonarr"], announce_time=datetime.now() - timedelta(days=50), ) db.insert_announcement(old_release, snatched=True) young_release = Release( messages=[], channel=channel, title="young", url="smth: some stuff", indexer="Simple1", backends=config.backends.keys(), snatches=["MyRadarr"], announce_time=datetime.now() - timedelta(days=49, hours=23, minutes=59, seconds=30), ) db.insert_announcement(young_release, snatched=True) misc.check_announcements(self, config, [old_release, young_release], [old_release, young_release]) # Restart arrnounced to trigger purge event, instead of waiting until # next purge loop irc.ready_event.clear() irc.expected_users = config.irc_users arrnounced.stop(config) arrnounced.run(config) self.assertTrue(irc.ready_event.wait(timeout=30), "IRC not ready in time") misc.check_announced(self, config, young_release)
def test_no_snatch_second_pattern(self): release = Release( messages=[ "this is some name - -donkey- ; =grumpy= - food: pizza" ], channel=channel, title="this is some name", url="animal: donkey &mood=grumpy f1: first_fixed f2: fixed_second", indexer="Single", backends=config.backends.keys(), ) 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_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_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_non_capture_group_without_match(self): release = Release( messages=["yet a name - monkey - frustrated -"], channel=channel, title="yet a name", url= "animal: monkey &mood=frustrated f1: first_fixed f2: fixed_second", indexer="Single", backends=config.backends.keys(), ) 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_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_non_capture_group_with_match(self): release = Release( messages=["naaame - bat - splendid - [apple]"], channel=channel, title="naaame", url="animal: bat &mood=splendid f1: first_fixed f2: fixed_second", indexer="Single", backends=config.backends.keys(), ) 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, )
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, )