Esempio n. 1
0
    def test_save_subscription_with_label(self):
        subscription_title = "Test subscription"
        config = self.get_test_config()
        testcase = self

        class TestGTKUI(unittest.TestCase, TestGTKUIBase):
            def __init__(self):
                TestGTKUIBase.__init__(self)
                self.labels = ["Test_label"]

            def save_subscription(self, subscription_data):
                testcase.assertEquals(subscription_data["label"],
                                      self.labels[0])

        subscription_config = yarss_config.get_fresh_subscription_config()
        subscription_dialog = DialogSubscription(
            TestGTKUI(),  # GTKUI
            self.log,  # logger
            subscription_config,
            config["rssfeeds"],
            [],  # self.get_move_completed_list(),
            [],  # self.get_download_location_list(),
            {},  # self.email_messages,
            {})  # self.cookies)
        subscription_dialog.setup()
        subscription_dialog.glade.get_widget("txt_name").set_text(
            subscription_title)

        # Sets the index 0 of rssfeed combox activated.
        rssfeeds_combobox = subscription_dialog.glade.get_widget(
            "combobox_rssfeeds")
        rssfeeds_combobox.set_active(0)
        subscription_dialog.save_subscription_data()
        def run_search_test(empty, dialog_subscription):
            subscription_config = yarss_config.get_fresh_subscription_config()
            include_regex = ".*"
            exclude_regex = "64|MEMstick"
            expected_match_count = 7
            subscription_config["regex_include"] = include_regex
            subscription_config["regex_exclude"] = exclude_regex

            # Loading new config, and perform search
            dialog_subscription.subscription_data = subscription_config
            dialog_subscription.load_basic_fields_data()
            dialog_subscription.perform_search()

            result = self.get_rssfeed_store_content(dialog_subscription)

            p_include = re.compile(include_regex, re.IGNORECASE if subscription_config["regex_include_ignorecase"] else 0)
            p_exclude = re.compile(exclude_regex, re.IGNORECASE if subscription_config["regex_exclude_ignorecase"] else 0)
            match_count = 0
            for k in result:
                if result[k]["matches"]:
                    match_count += 1
                    self.assertTrue(p_include.search(result[k]["title"]), "Expected '%s' to in '%s'" % (include_regex, result[k]["title"]))
                else:
                    self.assertTrue(p_exclude.search(result[k]["title"]), "Expected '%s' to in '%s'" % (exclude_regex, result[k]["title"]))
            self.assertEquals(match_count, expected_match_count)
    def run_select_rssfeed(self, subscription_config=None, callback_func=None):
        config = self.get_test_config()

        if not subscription_config:
            subscription_config = yarss_config.get_fresh_subscription_config()
        subscription_dialog = DialogSubscription(
            None,  # GTKUI
            self.log,  # logger
            subscription_config,
            config["rssfeeds"],
            [],  #self.get_move_completed_list(),
            [],  #self.get_download_location_list(),
            {},  #self.email_messages,
            {})  #self.cookies)
        subscription_dialog.setup()

        def pass_func(*arg):
            pass

        # Override the default selection callback
        subscription_dialog.method_perform_rssfeed_selection = pass_func

        # Sets the index 0 of rssfeed combox activated.
        rssfeeds_combobox = subscription_dialog.glade.get_widget(
            "combobox_rssfeeds")
        rssfeeds_combobox.set_active(1)

        defered = subscription_dialog.perform_rssfeed_selection()
        defered.addCallback(callback_func, subscription_dialog)
        return defered
        def run_search_test(empty, dialog_subscription):
            subscription_config = yarss_config.get_fresh_subscription_config()
            include_regex = ".*"
            exclude_regex = "64|MEMstick"
            expected_match_count = 7
            subscription_config["regex_include"] = include_regex
            subscription_config["regex_exclude"] = exclude_regex

            # Loading new config, and perform search
            dialog_subscription.subscription_data = subscription_config
            dialog_subscription.load_basic_fields_data()
            dialog_subscription.perform_search()

            result = self.get_rssfeed_store_content(dialog_subscription)

            p_include = re.compile(
                include_regex, re.IGNORECASE
                if subscription_config["regex_include_ignorecase"] else 0)
            p_exclude = re.compile(
                exclude_regex, re.IGNORECASE
                if subscription_config["regex_exclude_ignorecase"] else 0)
            match_count = 0
            for k in result:
                if result[k]["matches"]:
                    match_count += 1
                    self.assertTrue(
                        p_include.search(result[k]["title"]),
                        "Expected '%s' to in '%s'" %
                        (include_regex, result[k]["title"]))
                else:
                    self.assertTrue(
                        p_exclude.search(result[k]["title"]),
                        "Expected '%s' to in '%s'" %
                        (exclude_regex, result[k]["title"]))
            self.assertEquals(match_count, expected_match_count)
    def test_save_subscription_with_label(self):
        subscription_title = "Test subscription"
        config = self.get_test_config()
        testcase = self

        class TestGTKUI(unittest.TestCase, TestGTKUIBase):
            def __init__(self):
                TestGTKUIBase.__init__(self)
                self.labels = ["Test_label"]

            def save_subscription(self, subscription_data):
                testcase.assertEquals(subscription_data["label"],
                                      self.labels[0])

        subscription_config = yarss_config.get_fresh_subscription_config()
        subscription_dialog = DialogSubscription(
            TestGTKUI(),  # GTKUI
            self.log,  # logger
            subscription_config,
            config["rssfeeds"],
            {},  # self.email_messages,
            {})  # self.cookies)
        with mock.patch.object(subscription_dialog,
                               'get_rssfeed_parsed') as mocked_func:
            mocked_func.return_value = defer.succeed(None)
            subscription_dialog.setup()
            subscription_dialog.glade.get_object("txt_name").set_text(
                subscription_title)

            # Sets the index 0 of rssfeed combox activated.
            rssfeeds_combobox = subscription_dialog.glade.get_object(
                "combobox_rssfeeds")
            rssfeeds_combobox.set_active(0)
            return threads.deferToThread(
                subscription_dialog.save_subscription_data)
Esempio n. 6
0
def get_default_subscriptions(count):
    subscriptions = {}
    for i in range(count):
        subscriptions[str(i)] = yarss_config.get_fresh_subscription_config(
            name="Non-matching subscription",
            last_match=yarss2.util.common.get_default_date().isoformat(),
            rssfeed_key="0", key=str(i), regex_include=None, regex_exclude=None)
    return subscriptions
Esempio n. 7
0
def get_default_subscriptions(count):
    subscriptions = {}
    for i in range(count):
        subscriptions[str(i)] = yarss_config.get_fresh_subscription_config(
            name="Non-matching subscription",
            last_match=yarss2.common.get_default_date().isoformat(),
            rssfeed_key="0", key=str(i), regex_include=None, regex_exclude=None)
    return subscriptions
    def run_select_rssfeed(self, subscription_config=None, callback_func=None):
        config = self.get_test_config()

        if not subscription_config:
            subscription_config = yarss_config.get_fresh_subscription_config()

        subscription_dialog = DialogSubscription(
            TestGTKUIBase(),  # GTKUI
            self.log,  # logger
            subscription_config,
            config["rssfeeds"],
            {},  # self.email_messages,
            {})  # self.cookies)

        def get_rssfeed_parsed(rssfeed_data,
                               site_cookies_dict=None,
                               user_agent=None):
            res = subscription_dialog.rssfeedhandler.get_rssfeed_parsed(
                rssfeed_data,
                site_cookies_dict=site_cookies_dict,
                user_agent=user_agent)
            return defer.succeed(res)

        with mock.patch.object(subscription_dialog,
                               'get_rssfeed_parsed',
                               new=get_rssfeed_parsed):
            subscription_dialog.setup()

            def pass_func(*arg):
                return defer.succeed(None)

            class DialogWrapper(object):
                def __init__(self, dialog):
                    self.dialog = dialog

                def get_visible(self):
                    return True

            subscription_dialog.dialog = DialogWrapper(
                subscription_dialog.dialog)

            # Override the default selection callback
            subscription_dialog.method_perform_rssfeed_selection = pass_func

            # Sets the index 0 of rssfeed combox activated.
            rssfeeds_combobox = subscription_dialog.glade.get_object(
                "combobox_rssfeeds")
            rssfeeds_combobox.set_active(0)

            deferred = subscription_dialog.perform_rssfeed_selection()
            deferred.addCallback(callback_func, subscription_dialog)
            return deferred
    def test_add_torrent_error(self):
        config = self.get_test_config()
        testcase = self

        class TestGTKUI(unittest.TestCase, TestGTKUIBase):
            def __init__(self):
                TestGTKUIBase.__init__(self)
                self.labels = ["Test_label"]

            def save_subscription(self, subscription_data):
                testcase.assertEquals(subscription_data["label"],
                                      self.labels[0])

            def add_torrent(self, torrent_link, subscription_data):
                torrent_download = {
                    'filedump':
                    '<head>\n<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n<meta name="theme-color" content="#3860BB" />\n</head>\n<body>\n<script type="text/javascript" src="https://dyncdn.me/static/20/js/jquery-1.11.3.min.js"></script>\n<style type="text/css">a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,p,pre,q,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;outline:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\'\';content:none}ins{text-decoration:none}del{text-decoration:line-through}table{border-collapse:collapse;border-spacing:0}\nbody {\n    background: #000 url("https://dyncdn.me/static/20/img/bknd_body.jpg") repeat-x scroll 0 0 !important;\n    font: 400 8pt normal Tahoma,Verdana,Arial,Arial  !important;\n}\n.button {\n    background-color: #3860bb;\n    border: none;\n    color: white;\n    padding: 15px 32px;\n    text-align: center;\n    text-decoration: none;\n    display: inline-block;\n    font-size: 16px;\n    cursor: pointer;\n    text-transform: none;\n    overflow: visible;\n}\n.content-rounded {\n    background: #fff none repeat scroll 0 0 !important;\n    border-radius: 3px;\n    color: #000 !important;\n    padding: 20px;\n    width:961px;\n}\n</style><div align="center" style="margin-top:20px;padding-top:20px;color: #000 !important;">\n<div  class="content-rounded" style="color: #000 !important;">\n<img src="https://dyncdn.me/static/20/img/logo_dark_nodomain2_optimized.png"><br/>\nPlease wait while we try to verify your browser...<br/>\n<div style="font-weight: bold"><b>Please don\'t change tabs / minimize your browser or the process will fail</b></div><br/>\nIf you are stuck on this page disable your browser addons<br/><img src="https://dyncdn.me/static/20/img/loading_flat.gif">\n</div>\n</div>\n<script>\nvar w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\nvar h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\nvar days = 7;\nvar date = new Date();\nvar name = \'sk\';\nvar value_sk = \'pgjy3amc4u\';\nvar value_c = \'23842531\';\nvar value_i = \'1367198171\';\ndate.setTime(date.getTime()+(days*24*60*60*1000));\nvar expires = ";expires="+date.toGMTString();\ndocument.cookie = name+"="+value_sk+expires+"; path=/";\n\nif(w < 100 || h < 100) {\n\twindow.location.href = "/threat_defence.php?defence=nojc&r=38283315";\n} else {\n\tif(!document.domain) { var ref_cookie = \'\'; } else { var ref_cookie = document.domain; }\n\t$.ajax({type: \'GET\',url: \'/threat_defence_ajax.php?sk=\'+value_sk+\'&cid=\'+value_c+\'&i=\'+value_i+\'&r=25867870\',contentType: \'text/plain\', async: true, timeout: 3000, cache: false });\n\tsetTimeout(function(){\n\t\twindow.location.href = "/threat_defence.php?defence=2&sk="+value_sk+"&cid="+value_c+"&i="+value_i+"&ref_cookie="+ref_cookie+"&r=72304732";\n\t}, 5500);\n}\n</script>\n\t\t\n\n\t\t\n\t\t',  # noqa: E501
                    'error_msg':
                    "Unable to decode torrent file! (unexpected end of file in bencoded string) URL: 'http://rarbg.to/rss_rt.php?id=k2jae9rlwn&m=t'",  # noqa: E501
                    'torrent_id': None,
                    'success': False,
                    'url': 'http://rarbg.to/rss_rt.php?id=k2jae9rlwn&m=t',
                    'is_magnet': False,
                    'cookies_dict': None,
                    'cookies': {},
                    'headers': {}
                }
                return defer.succeed(torrent_download)

        yield component.start(
        )  # Necessary to avoid 'Reactor was unclean' error

        subscription_config = yarss_config.get_fresh_subscription_config()
        subscription_dialog = DialogSubscription(
            TestGTKUI(),  # GTKUI
            self.log,  # logger
            subscription_config,
            config["rssfeeds"],
            {},  # self.email_messages,
            {})  # self.cookies)
        subscription_dialog.setup()

        torrent_link = "http://rarbg.to/rss_rt.php?id=k2jae9rlwn&m=t"
        success = yield subscription_dialog.add_torrent(torrent_link, None)
        self.assertFalse(success)
    def test_select_rssfeed_with_search(self):
        subscription_config = yarss_config.get_fresh_subscription_config()
        search_regex = "bootonly"
        expected_match_count = 6
        subscription_config["regex_include"] = search_regex

        def verify_result(empty, subscription_dialog):
            result = self.get_rssfeed_store_content(subscription_dialog)
            p = re.compile(search_regex)
            match_count = 0
            for k in result:
                if result[k]["matches"]:
                    match_count += 1
                    self.assertTrue(p.search(result[k]["title"]))
            self.assertEquals(match_count, expected_match_count)

        defered = self.run_select_rssfeed(subscription_config=subscription_config, callback_func=verify_result)
        return defered
Esempio n. 11
0
    def on_button_add_subscription_clicked(self, event=None, a=None, col=None):
        # Check if any RSS Feeds exists, if not, show popup
        if len(self.rssfeeds.keys()) == 0:
            md = Gtk.MessageDialog(component.get("Preferences").pref_dialog,
                                   Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.INFO,
                                   Gtk.ButtonsType.CLOSE,
                                   "You need to add a RSS Feed before creating subscriptions!")
            md.run()
            md.destroy()
            return

        fresh_subscription_config = yarss_config.get_fresh_subscription_config()
        subscription_dialog = DialogSubscription(self,
                                                 self.log,
                                                 fresh_subscription_config,
                                                 self.rssfeeds,
                                                 self.email_messages,
                                                 self.cookies)
        subscription_dialog.show()
Esempio n. 12
0
    def on_button_add_subscription_clicked(self, Event=None, a=None, col=None):
        # Check if any RSS Feeds exists, if not, show popup
        if len(self.rssfeeds.keys()) == 0:
            md = gtk.MessageDialog(
                component.get("Preferences").pref_dialog,
                gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO,
                gtk.BUTTONS_CLOSE,
                "You need to add a RSS Feed before creating subscriptions!")
            md.run()
            md.destroy()
            return

        fresh_subscription_config = yarss_config.get_fresh_subscription_config(
        )
        subscription_dialog = DialogSubscription(
            self, self.log, fresh_subscription_config, self.rssfeeds,
            self.get_move_completed_list(), self.get_download_location_list(),
            self.email_messages, self.cookies)
        subscription_dialog.show()
    def test_select_rssfeed_with_search(self):
        subscription_config = yarss_config.get_fresh_subscription_config()
        search_regex = "bootonly"
        expected_match_count = 6
        subscription_config["regex_include"] = search_regex

        def verify_result(empty, subscription_dialog):
            result = self.get_rssfeed_store_content(subscription_dialog)
            p = re.compile(search_regex)
            match_count = 0
            for k in result:
                if result[k]["matches"]:
                    match_count += 1
                    self.assertTrue(p.search(result[k]["title"]))
            self.assertEquals(match_count, expected_match_count)

        defered = self.run_select_rssfeed(
            subscription_config=subscription_config,
            callback_func=verify_result)
        return defered
Esempio n. 14
0
    def on_button_add_subscription_clicked(self, Event=None, a=None, col=None):
        # Check if any RSS Feeds exists, if not, show popup
        if len(self.rssfeeds.keys()) == 0:
            md = gtk.MessageDialog(component.get("Preferences").pref_dialog,
                                   gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO,
                                   gtk.BUTTONS_CLOSE,
                                   "You need to add a RSS Feed before creating subscriptions!")
            md.run()
            md.destroy()
            return

        fresh_subscription_config = yarss_config.get_fresh_subscription_config()
        subscription_dialog = DialogSubscription(self,
                                                 self.log,
                                                 fresh_subscription_config,
                                                 self.rssfeeds,
                                                 self.get_move_completed_list(),
                                                 self.get_download_location_list(),
                                                 self.email_messages,
                                                 self.cookies)
        subscription_dialog.show()
    def run_select_rssfeed(self, subscription_config=None, callback_func=None):
        config = self.get_test_config()

        if not subscription_config:
            subscription_config = yarss_config.get_fresh_subscription_config()
        subscription_dialog = DialogSubscription(None, # GTKUI
                                                 self.log, # logger
                                                 subscription_config,
                                                 config["rssfeeds"],
                                                 [], #self.get_move_completed_list(),
                                                 [], #self.get_download_location_list(),
                                                 {}, #self.email_messages,
                                                 {}) #self.cookies)
        subscription_dialog.setup()

        def pass_func(*arg):
            #pass
            print "PASS FUNC"
            return defer.Deferred()

        class DialogWrapper(object):
            def __init__(self, dialog):
                self.dialog = dialog
            def get_visible(self):
                return True

        subscription_dialog.dialog = DialogWrapper(subscription_dialog.dialog)

        # Override the default selection callback
        #subscription_dialog.method_perform_rssfeed_selection = pass_func
        subscription_dialog.perform_rssfeed_selection = pass_func

        # Sets the index 0 of rssfeed combox activated.
        rssfeeds_combobox = subscription_dialog.glade.get_widget("combobox_rssfeeds")
        rssfeeds_combobox.set_active(1)

        #defered = subscription_dialog.perform_rssfeed_selection()
        defered = subscription_dialog.method_perform_rssfeed_selection()
        defered.addCallback(callback_func, subscription_dialog)
        return defered
Esempio n. 16
0
    def run_select_rssfeed(self, subscription_config=None, callback_func=None):
        config = self.get_test_config()

        if not subscription_config:
            subscription_config = yarss_config.get_fresh_subscription_config()
        subscription_dialog = DialogSubscription(
            TestGTKUIBase(),  # GTKUI
            self.log,  # logger
            subscription_config,
            config["rssfeeds"],
            [],  # self.get_move_completed_list(),
            [],  # self.get_download_location_list(),
            {},  # self.email_messages,
            {})  # self.cookies)
        subscription_dialog.setup()

        def pass_func(*arg):
            return defer.succeed(None)

        class DialogWrapper(object):
            def __init__(self, dialog):
                self.dialog = dialog

            def get_visible(self):
                return True

        subscription_dialog.dialog = DialogWrapper(subscription_dialog.dialog)

        # Override the default selection callback
        subscription_dialog.method_perform_rssfeed_selection = pass_func

        # Sets the index 0 of rssfeed combox activated.
        rssfeeds_combobox = subscription_dialog.glade.get_widget(
            "combobox_rssfeeds")
        rssfeeds_combobox.set_active(0)

        deferred = subscription_dialog.perform_rssfeed_selection()
        deferred.addCallback(callback_func, subscription_dialog)
        return deferred
    def test_save_subscription(self):
        subscription_title = "Test subscription"
        regex_include = "Regex"
        config = self.get_test_config()

        class TestGTKUI(unittest.TestCase):
            def save_subscription(self, subscription_data):
                self.assertEquals(subscription_data["name"], subscription_title)
                self.assertEquals(subscription_data["regex_include"], regex_include)
                self.assertEquals(subscription_data["add_torrents_in_paused_state"], "True")
                self.assertEquals(subscription_data["auto_managed"], "False")
                self.assertEquals(subscription_data["sequential_download"], "Default")
                self.assertEquals(subscription_data["prioritize_first_last_pieces"], "Default")

        subscription_config = yarss_config.get_fresh_subscription_config()
        subscription_dialog = DialogSubscription(TestGTKUI(), # GTKUI
                                                 self.log, # logger
                                                 subscription_config,
                                                 config["rssfeeds"],
                                                 [], #self.get_move_completed_list(),
                                                 [], #self.get_download_location_list(),
                                                 {}, #self.email_messages,
                                                 {}) #self.cookies)
        subscription_dialog.setup()
        subscription_dialog.glade.get_widget("txt_name").set_text(subscription_title)
        subscription_dialog.glade.get_widget("txt_regex_include").set_text(regex_include)
        subscription_dialog.glade.get_widget("checkbox_add_torrents_in_paused_state_default").set_active(False)
        subscription_dialog.glade.get_widget("checkbox_add_torrents_in_paused_state").set_active(True)
        subscription_dialog.glade.get_widget("checkbutton_auto_managed_default").set_active(False)
        subscription_dialog.glade.get_widget("checkbutton_auto_managed").set_active(False)
        subscription_dialog.glade.get_widget("checkbutton_sequential_download_default").set_active(True)
        subscription_dialog.glade.get_widget("checkbutton_sequential_download").set_active(False)
        subscription_dialog.glade.get_widget("checkbutton_prioritize_first_last_default").set_active(True)
        subscription_dialog.glade.get_widget("checkbutton_prioritize_first_last").set_active(True)

        # Sets the index 0 of rssfeed combox activated.
        rssfeeds_combobox = subscription_dialog.glade.get_widget("combobox_rssfeeds")
        rssfeeds_combobox.set_active(1)
        subscription_dialog.save_subscription_data()
Esempio n. 18
0
	def _verify_subscr(subscr):
		has_key = 'key' in subscr
		_verify_types(subscr['key'] if has_key else "", subscr, get_fresh_subscription_config())
		if not has_key and 'key' in subscr:
			del subscr['key']
		return subscr
Esempio n. 19
0
	def _verify_subscr(subscr):
		new_subscr = get_fresh_subscription_config()
		new_subscr.update(subscr)
		return new_subscr
Esempio n. 20
0
    def test_save_subscription(self):
        subscription_title = "Test subscription"
        regex_include = "Regex"
        config = self.get_test_config()
        testcase = self

        class TestGTKUI(TestGTKUIBase):
            def __init__(self):
                TestGTKUIBase.__init__(self)
                self.labels = ["Test_label"]

            def save_subscription(self, subscription_data):
                testcase.assertEquals(subscription_data["name"],
                                      subscription_title)
                testcase.assertEquals(subscription_data["regex_include"],
                                      regex_include)
                testcase.assertEquals(
                    subscription_data["add_torrents_in_paused_state"], "True")
                testcase.assertEquals(subscription_data["auto_managed"],
                                      "False")
                testcase.assertEquals(subscription_data["sequential_download"],
                                      "Default")
                testcase.assertEquals(
                    subscription_data["prioritize_first_last_pieces"],
                    "Default")

        subscription_config = yarss_config.get_fresh_subscription_config()
        subscription_dialog = DialogSubscription(
            TestGTKUI(),  # GTKUI
            self.log,  # logger
            subscription_config,
            config["rssfeeds"],
            [],  # self.get_move_completed_list(),
            [],  # self.get_download_location_list(),
            {},  # self.email_messages,
            {})  # self.cookies)
        subscription_dialog.setup()
        subscription_dialog.glade.get_widget("txt_name").set_text(
            subscription_title)
        subscription_dialog.glade.get_widget("txt_regex_include").set_text(
            regex_include)
        subscription_dialog.glade.get_widget(
            "checkbox_add_torrents_in_paused_state_default").set_active(False)
        subscription_dialog.glade.get_widget(
            "checkbox_add_torrents_in_paused_state").set_active(True)
        subscription_dialog.glade.get_widget(
            "checkbutton_auto_managed_default").set_active(False)
        subscription_dialog.glade.get_widget(
            "checkbutton_auto_managed").set_active(False)
        subscription_dialog.glade.get_widget(
            "checkbutton_sequential_download_default").set_active(True)
        subscription_dialog.glade.get_widget(
            "checkbutton_sequential_download").set_active(False)
        subscription_dialog.glade.get_widget(
            "checkbutton_prioritize_first_last_default").set_active(True)
        subscription_dialog.glade.get_widget(
            "checkbutton_prioritize_first_last").set_active(True)

        # Sets the index 0 of rssfeed combox activated.
        rssfeeds_combobox = subscription_dialog.glade.get_widget(
            "combobox_rssfeeds")
        rssfeeds_combobox.set_active(0)
        subscription_dialog.save_subscription_data()
    def test_save_subscription(self):
        subscription_title = "Test subscription"
        regex_include = "Regex"
        config = self.get_test_config()
        testcase = self

        class TestGTKUI(TestGTKUIBase):
            def __init__(self):
                TestGTKUIBase.__init__(self)
                self.labels = ["Test_label"]

            def save_subscription(self, subscription_data):
                testcase.assertEquals(subscription_data["name"],
                                      subscription_title)
                testcase.assertEquals(subscription_data["regex_include"],
                                      regex_include)
                testcase.assertEquals(
                    subscription_data["add_torrents_in_paused_state"], "True")
                testcase.assertEquals(subscription_data["auto_managed"],
                                      "False")
                testcase.assertEquals(subscription_data["sequential_download"],
                                      "Default")
                testcase.assertEquals(
                    subscription_data["prioritize_first_last_pieces"],
                    "Default")

        subscription_config = yarss_config.get_fresh_subscription_config()
        subscription_dialog = DialogSubscription(
            TestGTKUI(),  # GTKUI
            self.log,  # logger
            subscription_config,
            config["rssfeeds"],
            {},  # self.email_messages,
            {})  # self.cookies)

        with mock.patch.object(subscription_dialog,
                               'get_rssfeed_parsed') as mocked_func:
            mocked_func.return_value = defer.succeed(None)
            subscription_dialog.setup()
            subscription_dialog.get_object("txt_name").set_text(
                subscription_title)
            subscription_dialog.get_object("txt_regex_include").set_text(
                regex_include)
            subscription_dialog.get_object(
                "checkbox_add_torrents_in_paused_state_default").set_active(
                    False)
            subscription_dialog.get_object(
                "checkbox_add_torrents_in_paused_state").set_active(True)
            subscription_dialog.get_object(
                "checkbutton_auto_managed_default").set_active(False)
            subscription_dialog.get_object(
                "checkbutton_auto_managed").set_active(False)
            subscription_dialog.get_object(
                "checkbutton_sequential_download_default").set_active(True)
            subscription_dialog.get_object(
                "checkbutton_sequential_download").set_active(False)
            subscription_dialog.get_object(
                "checkbutton_prioritize_first_last_default").set_active(True)
            subscription_dialog.get_object(
                "checkbutton_prioritize_first_last").set_active(True)

            # Sets the index 0 of rssfeed combox activated.
            rssfeeds_combobox = subscription_dialog.get_object(
                "combobox_rssfeeds")
            rssfeeds_combobox.set_active(0)
            return threads.deferToThread(
                subscription_dialog.save_subscription_data)