コード例 #1
0
    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)
コード例 #2
0
    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,
        )
コード例 #3
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,
        )
コード例 #4
0
    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,
        )
コード例 #5
0
    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,
        )
コード例 #6
0
    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,
        )
コード例 #7
0
    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,
        )
コード例 #8
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)
コード例 #9
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)
コード例 #10
0
    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)
コード例 #11
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)
コード例 #12
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,
        )
コード例 #13
0
    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,
        )
コード例 #14
0
    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)
コード例 #15
0
    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,
        )
コード例 #16
0
    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,
        )
コード例 #17
0
    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,
        )
コード例 #18
0
    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,
        )
コード例 #19
0
    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,
        )
コード例 #20
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,
        )
コード例 #21
0
    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,
        )
コード例 #22
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,
        )