Esempio n. 1
0
    def test_logout(self):
        """
        :desc: Test to check `logout` method successfully logs out a user.
        """

        login(TEST_USERNAME, TEST_PASSWORD, True)

        resps = logout()
        self.assertEqual(resps[0]['data'], LOGOUT_SUCCESS_MSG)
        self.assertEqual(resps[0].get('code'), None)
Esempio n. 2
0
    def test_logout_from_existing_session(self):
        """
        :desc: Test to check if user is logged out successfully
               from an existing session.
        """

        login(TEST_USERNAME, TEST_PASSWORD, True)
        session = get_session()

        resps = logout(session=session)
        self.assertEqual(resps[0]['data'], LOGOUT_SUCCESS_MSG)
        self.assertEqual(resps[0].get('code'), None)
Esempio n. 3
0
    def test_session_limit_exceeded(self):
        """
        :desc: Test to check `disconnect_session` argument in `login` method.
        """

        # Log a user in forcefully to further check if `disconnect_session`
        # flag works or not.
        login(TEST_USERNAME, TEST_PASSWORD, True)

        resps = login(TEST_USERNAME, TEST_PASSWORD, False)
        self.assertEqual(resps[0]['data'], SESSION_LIMIT_MSG)
        self.assertEqual(resps[0]['code'], 400)

        resps = login(TEST_USERNAME, TEST_PASSWORD, True)
        self.assertEqual(resps[0]['data'], LOGIN_SUCCESS_MSG)
        self.assertEqual(resps[0].get('code'), None)
    def test_session_limit_exceeded_disconnect(self):
        """Should disconnect active sessions and login in the current returning login success msg"""

        def mock_request(*args, **kwargs):
            if kwargs.get('method'):
                return MockHTMLResponse(data=f'<input id="{SESSION_LIMIT_FORM_ID[1:]}" />')
            else:
                return MockHTMLResponse(data=f"<input id='{CSRF_TOKEN_INPUT_ID}' value='ab' />")

        def mock_logout(*args, **kwargs):
            pass

        def mock_disconnect(*args, **kwargs):
            return [{'data': LOGIN_SUCCESS_MSG}]

        def mock_save_cookies(*args, **kwargs):
            pass

        self.monkeypatch.setattr(auth, 'request', mock_request)
        self.monkeypatch.setattr(auth, 'logout', mock_logout)
        self.monkeypatch.setattr(auth, 'disconnect_active_sessions', mock_disconnect)
        self.monkeypatch.setattr(auth, 'save_session_cookies', mock_save_cookies)

        resps = login(username='******', password='******', disconnect_sessions=True)
        self.assertEqual(resps[0]['data'], LOGIN_SUCCESS_MSG)
    def test_no_csrf_token(self):
        """Should return csrf token missing message when there isn't one in the response html"""
        def mock_request(*args, **kwargs):
            return MockHTMLResponse(data="<input id='invalid-token-id' value='aaa' />")
        self.monkeypatch.setattr(auth, 'request', mock_request)

        resps = login(username='******', password='******', disconnect_sessions=False)
        self.assertEqual(resps[0]['data'], CSRF_TOKEN_MISSING)
        self.assertEqual(resps[0]['code'], 500)
Esempio n. 6
0
    def test_correct_auth_data(self):
        """
        :desc: Test to check if correct data and code is returned
               when user provides correct authorization data.
        """

        resps = login(TEST_USERNAME, TEST_PASSWORD, False)
        self.assertEqual(resps[0]['data'], LOGIN_SUCCESS_MSG)

        # absence of code in response indicates code=200
        self.assertEqual(resps[0].get('code'), None)
Esempio n. 7
0
    def test_incorrect_auth_data(self):
        """
        :desc: Test to check if correct data and code is returned
               when user provides incorrect authorization data.
        """

        username = '******'
        password = '******'

        resps = login(username, password, False)
        self.assertEqual(resps[0]['data'], INCORRECT_CREDS_MSG)
        self.assertEqual(resps[0]['code'], 400)
Esempio n. 8
0
    def test_empty_auth_data(self):
        """
        :desc: Test to check if correct data and code is returned
               when user provides empty authorization data.
        """

        username = ''
        password = ''

        resps = login(username, password, False)
        self.assertEqual(resps[0]['data'], EMPTY_AUTH_DATA_MSG)
        self.assertEqual(resps[0]['code'], 400)
    def test_status_code_not_200(self):
        """Should return code 503 when status code is not 200"""
        def mock_request(*args, **kwargs):
            if kwargs.get('method'):
                return MockHTMLResponse(status_code=500)
            else:
                return MockHTMLResponse(data=f"<input id='{CSRF_TOKEN_INPUT_ID}' value='ab' />")

        self.monkeypatch.setattr(auth, 'request', mock_request)

        resps = login(username='******', password='******', disconnect_sessions=False)
        self.assertEqual(resps[0]['code'], 503)
    def test_incorrect_auth_data(self):
        """Should return incorrect creds message"""
        def mock_request(*args, **kwargs):
            if kwargs.get('method'):
                return MockHTMLResponse(data='<button>Login</button>')
            else:
                return MockHTMLResponse(data=f"<input id='{CSRF_TOKEN_INPUT_ID}' value='ab' />")

        self.monkeypatch.setattr(auth, 'request', mock_request)

        resps = login(username='******', password='******', disconnect_sessions=False)
        self.assertEqual(resps[0]['data'], INCORRECT_CREDS_MSG)
        self.assertEqual(resps[0]['code'], 400)
    def test_correct_auth_data(self):
        """Should login on correct auth data"""
        def mock_request(*args, **kwargs):
            if kwargs.get('method'):
                return MockHTMLResponse(
                    data=f'<button class="{LOGOUT_BUTTON_CLASS[1:]}">Logout</button>')
            else:
                return MockHTMLResponse(data=f"<input id='{CSRF_TOKEN_INPUT_ID}' value='ab' />")

        def mock_save_cookies(*args, **kwargs):
            pass

        self.monkeypatch.setattr(auth, 'request', mock_request)
        self.monkeypatch.setattr(auth, 'save_session_cookies', mock_save_cookies)

        resps = login(username='******', password='******', disconnect_sessions=False)
        self.assertEqual(resps[0]['data'], LOGIN_SUCCESS_MSG)
    def test_session_limit_exceeded_no_disconnect(self):
        """Should return session limit msg on no disconnect"""

        def mock_request(*args, **kwargs):
            if kwargs.get('method'):
                return MockHTMLResponse(data=f'<input id="{SESSION_LIMIT_FORM_ID[1:]}" />')
            else:
                return MockHTMLResponse(data=f"<input id='{CSRF_TOKEN_INPUT_ID}' value='ab' />")

        def mock_logout(*args, **kwargs):
            pass

        self.monkeypatch.setattr(auth, 'request', mock_request)
        self.monkeypatch.setattr(auth, 'logout', mock_logout)

        resps = login(username='******', password='******', disconnect_sessions=False)
        self.assertEqual(resps[0]['data'], SESSION_LIMIT_MSG)
        self.assertEqual(resps[0]['code'], 400)
 def test_empty_auth_data(self):
     """Should return empty auth data message"""
     resps = login(username='', password='', disconnect_sessions=False)
     self.assertEqual(resps[0]['data'], EMPTY_AUTH_DATA_MSG)
     self.assertEqual(resps[0]['code'], 400)
Esempio n. 14
0
def main(argv=None):
    if argv is None:
        argv = sys.argv

    try:
        parser = create_parser()
        args = parser.parse_args(argv[1:])

        username = args.login
        is_logout = args.logout
        disconnect_sessions = args.disconnect_sessions

        user = args.user
        team = args.team

        ratings = args.ratings
        country = args.country
        institution = args.institution
        institution_type = args.institution_type

        problem_code = args.problem
        submit = args.submit
        search = args.search

        contest = args.contest
        contests = args.contests
        show_past = args.show_past

        tags = args.tags

        solutions = args.solutions
        solution_code = args.solution
        language = args.language
        result = args.result

        lines = args.lines
        sort = args.sort
        order = args.order
        page = args.page

        resps = []

        if username != INVALID_USERNAME:
            resps = login(username=username,
                          disconnect_sessions=disconnect_sessions)

        elif is_logout:
            resps = logout()

        elif problem_code:
            resps = get_description(problem_code, contest or CC_PRACTICE)

        elif submit:
            resps = submit_problem(*submit)

        elif search:
            resps = search_problems(sort, order, search)

        elif contest:
            resps = get_contest_problems(sort, order, contest)

        elif contests:
            resps = get_contests(show_past)

        elif isinstance(tags, list):
            resps = get_tags(sort, order, tags)

        elif solutions:
            resps = get_solutions(sort, order, solutions, page, language,
                                  result, user)

        elif solution_code:
            resps = get_solution(solution_code)

        elif user:
            resps = get_user(user)

        elif team:
            resps = get_team(team)

        elif ratings:
            resps = get_ratings(sort, order, country, institution,
                                institution_type, page, lines)

        else:
            parser.print_help()

        if not resps:
            resps = [GENERIC_RESP]

        for resp in resps:
            print_response(**resp)
        return resps
    except KeyboardInterrupt:
        print('\nBye.')
        return [{"data": "\nBye."}]
    return [{"data": "0"}]