def test_httpLogin_should_call_fillUserPin_if_2factor_login_needs_smsUserPin( self): sys.modules["__main__"].core._findErrors.return_value = False page_values = [{ "content": " captcha", "status": 200, "location": "here" }, { "new_url": "http://www.mock.com/", "content": "something,smsUserPin,somethingElse", "status": 200, "location": "here" }] sys.modules[ "__main__"].core._fetchPage.side_effect = lambda x: page_values.pop( ) sys.modules["__main__"].settings.getSetting.return_value = "smokey" dom_values = [["Login"], [], [], [], []] sys.modules[ "__main__"].common.parseDOM.side_effect = lambda x="", y="", attrs={ }, ret="": dom_values.pop() login = YouTubeLogin() login._fillUserPin = Mock() login._fillUserPin.return_value = "123456" result = login._httpLogin({"new": "true"}) assert (sys.modules["__main__"].core._fetchPage.call_count == 2) login._fillUserPin.assert_called_with( "something,smsUserPin,somethingElse")
def test_httpLogin_should_call_fetchPage_with_proper_redirect_url(self): sys.modules["__main__"].core._findErrors.return_value = False dom_values = [ "", "", "", "", "", "", "", ["'someURL'"], "", "", "" ] sys.modules["__main__"].core._fetchPage.return_value = { "content": "somePage", "status": 200, "location": "here" } sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules[ "__main__"].common.parseDOM.side_effect = lambda x="", y="", attrs={ }, ret="": dom_values.pop() login = YouTubeLogin() login._fillLoginInfo = Mock() login._fillLoginInfo.return_value = ("some_galx_value", { "some_key": "some_value" }) result = login._httpLogin({"new": "true"}) assert (sys.modules["__main__"].core._fetchPage.call_count == 2) sys.modules["__main__"].core._fetchPage.assert_called_with({ 'referer': 'here', 'link': 'someURL', 'no-language-cookie': 'true' })
def test_httpLogin_should_search_fetchPage_result_to_check_for_2factor_login( self): sys.modules["__main__"].core._findErrors.return_value = False dummy_content = Mock() dummy_content.find.return_value = -1 page_values = [{ "content": "", "status": 200 }, { "content": dummy_content, "status": 200 }] sys.modules[ "__main__"].core._fetchPage.side_effect = lambda x: page_values.pop( ) sys.modules["__main__"].core._fetchPage.return_value = { "content": dummy_content, "status": 200 } sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.return_value = "" login = YouTubeLogin() result = login._httpLogin({"new": "true"}) args = dummy_content.find.call_args_list assert (sys.modules["__main__"].core._fetchPage.call_count == 1) print repr(args) assert (args[1][0] == ("smsUserPin", ))
def test_httpLogin_should_call_fetchPage_with_proper_redirect_url_if_login_link_is_found( self): sys.modules["__main__"].core._findErrors.return_value = False dom_values = [ "", "", "", "", "", "", "", "", "", "", "", "", "", ["someURL"], "" ] sys.modules["__main__"].core._fetchPage.return_value = { "content": "", "status": 200, "location": "here" } sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules[ "__main__"].common.parseDOM.side_effect = lambda x="", y="", attrs={ }, ret="": dom_values.pop() login = YouTubeLogin() result = login._httpLogin({"new": "true"}) print repr(result) sys.modules["__main__"].core._fetchPage.assert_called_with({ 'referer': 'here', 'link': 'someURL' }) assert (sys.modules["__main__"].core._fetchPage.call_count == 2)
def test_httpLogin_should_use_parseDOM_to_check_for_login_button_link( self): sys.modules["__main__"].core._findErrors.return_value = False sys.modules["__main__"].core._fetchPage.return_value = { "content": "", "status": 200 } sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.return_value = "" login = YouTubeLogin() result = login._httpLogin({"new": "true"}) args = sys.modules["__main__"].common.parseDOM.call_args_list print repr(args) assert (sys.modules["__main__"].core._fetchPage.call_count == 1) print repr(args[1][1]) assert (args[1][0] == ("", "button")) assert (args[1][1] == { 'attrs': { 'href': '.*?ServiceLogin.*?' }, 'ret': 'href' })
def test_httpLogin_should_fail_with_captcha(self): sys.modules["__main__"].core._fetchPage.return_value = {"content":" captcha","status":200} sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.return_value = "" login = YouTubeLogin() result = login._httpLogin({"new":"true"}) print repr(result) assert(result == ({'content': ' captcha', 'status': 200},500))
def test_authorize_should_call_apiLogin_if_httplogin_succeded(self): login = YouTubeLogin() login._apiLogin = Mock(return_value=("",200)) login._httpLogin = Mock(return_value=("",200)) login.authorize() login._httpLogin.assert_any_call({ "new": "true"}) login._apiLogin.assert_any_call()
def test_httpLogin_should_call_findErrors_on_login_failure(self): sys.modules["__main__"].core._findErrors.return_value = False sys.modules["__main__"].core._fetchPage.return_value = {"content":"","status":200} sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.return_value = "" login = YouTubeLogin() result = login._httpLogin({"new":"true"}) sys.modules["__main__"].core._findErrors.assert_called_with({'content': '', 'status': 200})
def test_authorize_should_reset_oauth2_data_when_refreshing(self): sys.modules["__main__"].settings.getSetting.return_value = "" login = YouTubeLogin() login._httpLogin = Mock(return_value=("",303)) login.authorize() sys.modules["__main__"].settings.setSetting.assert_any_call("oauth2_access_token","") sys.modules["__main__"].settings.setSetting.assert_any_call("oauth2_refresh_token","") sys.modules["__main__"].settings.setSetting.assert_any_call("oauth2_expires_at","")
def test_httpLogin_should_check_if_new_is_in_params_collection_before_resetting_login_info(self): sys.modules["__main__"].core._fetchPage.return_value = {"content":"","status":200} sys.modules["__main__"].settings.getSetting.return_value = "true" sys.modules["__main__"].common.parseDOM.return_value = "" login = YouTubeLogin() result = login._httpLogin({"new":"false"}) assert(sys.modules["__main__"].settings.setSetting.call_count == 0) assert(sys.modules["__main__"].core._fetchPage.call_count == 0)
def test_authorize_should_show_refreshing_folder_message_on_success(self): sys.modules["__main__"].language.side_effect = ["string1", "string2"] login = YouTubeLogin() login._apiLogin = Mock(return_value=("",200)) login._httpLogin = Mock(return_value=("",200)) login.authorize() sys.modules["__main__"].utils.showErrorMessage.assert_called_with("string1","",303) sys.modules["__main__"].language.assert_called_with(30031)
def test_authorize_should_show_error_message_on_api_login_failure(self): sys.modules["__main__"].language.side_effect = ["string1", "string2"] login = YouTubeLogin() login._apiLogin = Mock(return_value=("",500)) login._httpLogin = Mock(return_value=("",200)) login.authorize() sys.modules["__main__"].utils.showErrorMessage.assert_called_with("string1","",500) sys.modules["__main__"].language.assert_called_with(30609)
def test_httpLogin_should_look_save_cookiejar_on_login_success(self): sys.modules["__main__"].core._findErrors.return_value = False sys.modules["__main__"].core._fetchPage.return_value = {"content": "logged_in","status":200} sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.side_effect = [ ["USERNAME"], ["USERNAME"]] login = YouTubeLogin() result = login._httpLogin({"new":"true"}) assert(sys.modules["__main__"].core._fetchPage.call_count == 1) assert(sys.modules["__main__"].cookiejar.save.call_count == 1)
def test_httpLogin_should_return_existing_http_login_info_if_new_is_not_in_params(self): sys.modules["__main__"].core._fetchPage.return_value = {"content":"","status":200} sys.modules["__main__"].settings.getSetting.return_value = "true" sys.modules["__main__"].common.parseDOM.return_value = "" login = YouTubeLogin() result = login._httpLogin() sys.modules["__main__"].settings.getSetting.assert_called_with("cookies_saved") assert(sys.modules["__main__"].core._fetchPage.call_count == 0) assert(result[1] == 200) assert(result[0] == "true")
def test_httpLogin_should_call_fetchPage_with_proper_fetch_options_on_first_run(self): sys.modules["__main__"].core._fetchPage.return_value = {"content":"","status":200} sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.return_value = "" login = YouTubeLogin() result = login._httpLogin({"new":"true"}) args = sys.modules["__main__"].core._fetchPage.call_args assert(sys.modules["__main__"].core._fetchPage.call_count == 1) print repr(args) assert(args[0][0] == {"link":"http://www.youtube.com/"})
def test_httpLogin_should_look_for_user_name_to_indicate_login_success(self): sys.modules["__main__"].core._findErrors.return_value = False sys.modules["__main__"].core._fetchPage.return_value = {"content": "logged_in","status":200} sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.side_effect = [ ["USERNAME"], ["USERNAME"]] login = YouTubeLogin() login._getLoginInfo = Mock() result = login._httpLogin({"new":"true"}) assert(sys.modules["__main__"].core._fetchPage.call_count == 1) login._getLoginInfo.assert_called_with(["USERNAME"])
def test_httpLogin_should_call_getLoginInfo_on_login_success(self): sys.modules["__main__"].core._findErrors.return_value = False sys.modules["__main__"].core._fetchPage.return_value = {"content":"<span class='masthead-user-username'>USERNAME</class>","status":200} sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.side_effect = [ ["USERNAME"], ["USERNAME"]] login = YouTubeLogin() login._getLoginInfo = Mock() login._getLoginInfo.return_value = 200 result = login._httpLogin({"new":"true"}) login._getLoginInfo.assert_called_with(["USERNAME"])
def test_httpLogin_should_call_fetchPage_with_proper_redirect_url_if_login_link_is_found(self): sys.modules["__main__"].core._findErrors.return_value = False dom_values = ["", "", "", "", "","","","","","","","","",["someURL"], ""] sys.modules["__main__"].core._fetchPage.return_value = {"content":"","status":200, "location": "here"} sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.side_effect = lambda x = "",y = "",attrs = {},ret = "": dom_values.pop() login = YouTubeLogin() result = login._httpLogin({"new":"true"}) print repr(result) sys.modules["__main__"].core._fetchPage.assert_called_with({'referer': 'here', 'link': 'someURL'}) assert(sys.modules["__main__"].core._fetchPage.call_count == 2)
def test_httpLogin_should_call_fillLoginInfo_if_login_form_present(self): sys.modules["__main__"].core._findErrors.return_value = False dom_values = ["","","","","","","","",["someURL"],"", ""] sys.modules["__main__"].core._fetchPage.return_value = {"content":"somePage","status":200} sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.side_effect = lambda x = "",y = "",attrs = {},ret = "": dom_values.pop() login = YouTubeLogin() login._fillLoginInfo = Mock() login._fillLoginInfo.return_value = ("",{}) result = login._httpLogin({"new":"true"}) login._fillLoginInfo.assert_called_with({'content': 'somePage', 'status': 200})
def test_httpLogin_should_use_parseDOM_to_check_for_new_url_redirects(self): sys.modules["__main__"].core._findErrors.return_value = False sys.modules["__main__"].core._fetchPage.return_value = {"content":"","status":200} sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.return_value = "" login = YouTubeLogin() result = login._httpLogin({"new":"true"}) args = sys.modules["__main__"].common.parseDOM.call_args_list print repr(args[2]) assert(sys.modules["__main__"].core._fetchPage.call_count == 1) assert(args[3][0] == ('', 'meta')) assert(args[3][1] == {'attrs': {'http-equiv': 'refresh'}, 'ret': 'content'})
def test_httpLogin_should_call_fetchPage_with_proper_redirect_url(self): sys.modules["__main__"].core._findErrors.return_value = False dom_values = ["","","","","","","",["'someURL'"],"","", ""] sys.modules["__main__"].core._fetchPage.return_value = {"content":"somePage","status":200, "location": "here"} sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.side_effect = lambda x = "",y = "",attrs = {},ret = "": dom_values.pop() login = YouTubeLogin() login._fillLoginInfo = Mock() login._fillLoginInfo.return_value = ("some_galx_value",{"some_key":"some_value"}) result = login._httpLogin({"new":"true"}) assert(sys.modules["__main__"].core._fetchPage.call_count == 2) sys.modules["__main__"].core._fetchPage.assert_called_with({'referer': 'here', 'link': 'someURL', 'no-language-cookie': 'true'})
def test_httpLogin_should_call_fetchPage_with_proper_fetch_options_if_fillLoginInfo_succeded(self): sys.modules["__main__"].core._findErrors.return_value = False dom_values = ["","","","","","","","",["someURL"],"", ""] sys.modules["__main__"].core._fetchPage.return_value = {"content":"somePage","status":200, "location": "here"} sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.side_effect = lambda x = "",y = "",attrs = {},ret = "": dom_values.pop() login = YouTubeLogin() login._fillLoginInfo = Mock() login._fillLoginInfo.return_value = ("some_galx_value",{"some_key":"some_value"}) result = login._httpLogin({"new":"true"}) login._fillLoginInfo.assert_called_with({'content': 'somePage', 'status': 200, 'location': 'here'}) assert(sys.modules["__main__"].core._fetchPage.call_count == 2) sys.modules["__main__"].core._fetchPage.assert_called_with({'url_data': {'some_key': 'some_value'}, 'referer': 'here', 'link': 'someURL', 'hidden': 'true'})
def test_httpLogin_should_call_fetchPage_with_correct_fetch_options_if_fillUserPin_succeded(self): sys.modules["__main__"].core._findErrors.return_value = False page_values = [ {"content":" captcha","status":200, "location": "here"}, { "new_url": "http://www.mock.com", "content":"something,smsUserPin,somethingElse","status":200, "location": "here"}] sys.modules["__main__"].core._fetchPage.side_effect = lambda x: page_values.pop() sys.modules["__main__"].settings.getSetting.return_value = "smokey" dom_values = [["Login"], [], [], [], []] sys.modules["__main__"].common.parseDOM.side_effect = lambda x = "",y = "",attrs = {},ret = "": dom_values.pop() login = YouTubeLogin() login._fillUserPin = Mock() login._fillUserPin.return_value = "some_url_data" result = login._httpLogin({"new":"true"}) assert(sys.modules["__main__"].core._fetchPage.call_count == 2) sys.modules["__main__"].core._fetchPage.assert_called_with({'referer': 'http://www.mock.com', 'link': 'Login', 'url_data': 'some_url_data'})
def test_httpLogin_should_use_parseDOM_to_find_smsToken(self): sys.modules["__main__"].core._findErrors.return_value = False sys.modules["__main__"].core._fetchPage.return_value = {"content":"","status":200} sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.return_value = "" login = YouTubeLogin() result = login._httpLogin({"new":"true"}) args = sys.modules["__main__"].common.parseDOM.call_args_list print repr(args) assert(sys.modules["__main__"].core._fetchPage.call_count == 1) assert(args[4][0] == ('', 'input')) assert(args[4][1] == {'attrs': {'name': 'smsToken'}, 'ret': 'value'})
def test_httpLogin_should_call_fetchPage_with_correct_fetch_options_if_fillUserPin_succeded(self): sys.modules["__main__"].core._findErrors.return_value = False page_values = [ {"content":" captcha","status":200, "location": "here"}, { "new_url": "http://www.mock.com", "content":"something,smsUserPin,somethingElse","status":200, "location": "here"}] sys.modules["__main__"].core._fetchPage.side_effect = lambda x: page_values.pop() sys.modules["__main__"].settings.getSetting.return_value = "smokey" dom_values = [["Login"], [], [], [], []] sys.modules["__main__"].common.parseDOM.side_effect = lambda x = "",y = "",attrs = {},ret = "": dom_values.pop() login = YouTubeLogin() login._fillUserPin = Mock() login._fillUserPin.return_value = "some_url_data" result = login._httpLogin({"new":"true"}) assert(sys.modules["__main__"].core._fetchPage.call_count == 2) sys.modules["__main__"].core._fetchPage.assert_called_with({'referer': 'here', 'link': 'Login', 'url_data': 'some_url_data'})
def test_httpLogin_should_use_parseDOM_to_check_for_login_form(self): sys.modules["__main__"].core._findErrors.return_value = False sys.modules["__main__"].core._fetchPage.return_value = {"content":"","status":200} sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.return_value = "" login = YouTubeLogin() result = login._httpLogin({"new":"true"}) args = sys.modules["__main__"].common.parseDOM.call_args_list print repr(args) assert(sys.modules["__main__"].core._fetchPage.call_count == 1) assert(args[2][0] == ("","form")) assert(args[2][1] == {'attrs': {'id': 'gaia_loginform'}, 'ret': 'action'})
def test_httpLogin_should_call_fillUserPin_if_2factor_login_needs_smsUserPin(self): sys.modules["__main__"].core._findErrors.return_value = False page_values = [ {"content":" captcha","status":200, "location": "here"}, { "new_url": "http://www.mock.com/", "content":"something,smsUserPin,somethingElse","status":200, "location": "here"}] sys.modules["__main__"].core._fetchPage.side_effect = lambda x: page_values.pop() sys.modules["__main__"].settings.getSetting.return_value = "smokey" dom_values = [["Login"], [], [], [], []] sys.modules["__main__"].common.parseDOM.side_effect = lambda x = "",y = "",attrs = {},ret = "": dom_values.pop() login = YouTubeLogin() login._fillUserPin = Mock() login._fillUserPin.return_value = "123456" result = login._httpLogin({"new":"true"}) assert(sys.modules["__main__"].core._fetchPage.call_count == 2) login._fillUserPin.assert_called_with("something,smsUserPin,somethingElse")
def test_httpLogin_should_call_getLoginInfo_on_login_success(self): sys.modules["__main__"].core._findErrors.return_value = False sys.modules["__main__"].core._fetchPage.return_value = { "content": "<span class='masthead-user-username'>USERNAME</class>", "status": 200 } sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.side_effect = [["USERNAME"], ["USERNAME"]] login = YouTubeLogin() login._getLoginInfo = Mock() login._getLoginInfo.return_value = 200 result = login._httpLogin({"new": "true"}) login._getLoginInfo.assert_called_with(["USERNAME"])
def test_httpLogin_should_look_for_user_name_to_indicate_login_success( self): sys.modules["__main__"].core._findErrors.return_value = False sys.modules["__main__"].core._fetchPage.return_value = { "content": "logged_in", "status": 200 } sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.side_effect = [["USERNAME"], ["USERNAME"]] login = YouTubeLogin() login._getLoginInfo = Mock() result = login._httpLogin({"new": "true"}) assert (sys.modules["__main__"].core._fetchPage.call_count == 1) login._getLoginInfo.assert_called_with(["USERNAME"])
def test_httpLogin_should_call_fetchPage_with_correct_fetch_options_if_smsToken_is_found(self): sys.modules["__main__"].core._findErrors.return_value = False dom_values = ["USERNAME", ["some cont"], ["some smsToken"], "", "", "", "", ["galx"], "", ""] login_values = [("",""), ("some_galx", "some_url_data")] sys.modules["__main__"].core._fetchPage.return_value = {"content":"","status":200, "location": "here"} sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.side_effect = lambda x = "",y = "",attrs = {},ret = "": dom_values.pop() login = YouTubeLogin() login._fillLoginInfo = Mock() login._fillLoginInfo.side_effect = lambda x: login_values.pop() result = login._httpLogin({"new":"true"}) print sys.modules["__main__"].core._fetchPage.call_count assert(sys.modules["__main__"].core._fetchPage.call_count == 3) print repr(sys.modules["__main__"].core._fetchPage.call_args_list) sys.modules["__main__"].core._fetchPage.assert_called_with({'referer': 'here', 'link': 'some cont', 'url_data': {'service': 'youtube', 'GALX': 'some_galx', 'PersistentCookie': 'yes', 'smsToken': 'some smsToken'}})
def test_httpLogin_should_search_fetchPage_result_to_check_for_2factor_login(self): sys.modules["__main__"].core._findErrors.return_value = False dummy_content = Mock() dummy_content.find.return_value = -1 page_values = [ {"content":"","status":200}, {"content":dummy_content,"status":200}] sys.modules["__main__"].core._fetchPage.side_effect = lambda x: page_values.pop() sys.modules["__main__"].core._fetchPage.return_value = {"content":dummy_content,"status":200} sys.modules["__main__"].settings.getSetting.return_value = "smokey" sys.modules["__main__"].common.parseDOM.return_value = "" login = YouTubeLogin() result = login._httpLogin({"new":"true"}) args = dummy_content.find.call_args_list assert(sys.modules["__main__"].core._fetchPage.call_count == 1) print repr(args) assert(args[1][0] == ("smsUserPin",))