diff --git a/tests/test_progit_flask_api_auth.py b/tests/test_progit_flask_api_auth.py new file mode 100644 index 0000000..28508c9 --- /dev/null +++ b/tests/test_progit_flask_api_auth.py @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- + +""" + (c) 2015 - Copyright Red Hat Inc + + Authors: + Pierre-Yves Chibon + +""" + +__requires__ = ['SQLAlchemy >= 0.8'] +import pkg_resources + +import unittest +import shutil +import sys +import os + +import json +from mock import patch + +sys.path.insert(0, os.path.join(os.path.dirname( + os.path.abspath(__file__)), '..')) + +import pagure.lib +import tests + + +class PagureFlaskApiAuthtests(tests.Modeltests): + """ Tests for the authentication in the flask API of pagure """ + + def setUp(self): + """ Set up the environnment, ran before every tests. """ + super(PagureFlaskApiAuthtests, self).setUp() + + pagure.APP.config['TESTING'] = True + pagure.SESSION = self.session + pagure.api.SESSION = self.session + self.app = pagure.APP.test_client() + + def test_auth_no_data(self): + """ Test the authentication when there is nothing in the database. + """ + + output = self.app.post('/api/0/foo/new_issue') + self.assertEqual(output.status_code, 401) + data = json.loads(output.data) + self.assertDictEqual( + data, + { + "error": "Login invalid/expired. Please visit " \ + "https://pagure.org/ get or renew your API token.", + "output": "notok" + } + ) + + headers = {'Authorization': 'token aabbbccc'} + + output = self.app.post('/api/0/foo/new_issue', headers=headers) + self.assertEqual(output.status_code, 401) + data = json.loads(output.data) + self.assertDictEqual( + data, + { + "error": "Login invalid/expired. Please visit " \ + "https://pagure.org/ get or renew your API token.", + "output": "notok" + } + ) + + +if __name__ == '__main__': + SUITE = unittest.TestLoader().loadTestsFromTestCase( + PagureFlaskApiAuthtests) + unittest.TextTestRunner(verbosity=2).run(SUITE)