Added test for utils.Requester
authorAleksey Maksimov <ctpeko3a@gmail.com>
Tue, 18 Jun 2013 06:31:28 +0000 (14:31 +0800)
committerAleksey Maksimov <ctpeko3a@gmail.com>
Tue, 18 Jun 2013 06:31:28 +0000 (14:31 +0800)
jenkinsapi_tests/unittests/test_requester.py [new file with mode: 0644]

diff --git a/jenkinsapi_tests/unittests/test_requester.py b/jenkinsapi_tests/unittests/test_requester.py
new file mode 100644 (file)
index 0000000..2b63efb
--- /dev/null
@@ -0,0 +1,187 @@
+import mock
+import unittest
+
+import requests
+from collections import defaultdict
+from jenkinsapi.jenkins import Requester
+from jenkinsapi.exceptions import JenkinsAPIException
+
+class TestQueue(unittest.TestCase):
+
+    def test_get_request_dict_auth(self):
+        req = Requester('foo', 'bar')
+
+        req_return = req.get_request_dict(url='http://', params={}, data=None,
+                headers=None)
+        self.assertTrue(isinstance(req_return, dict))
+        self.assertTrue(req_return.get('auth'))
+        self.assertTrue(req_return['auth']==('foo', 'bar'))
+
+    def test_get_request_dict_wrong_params(self):
+        req = Requester('foo', 'bar')
+
+        with self.assertRaises(AssertionError) as na:
+            req_return = req.get_request_dict(url='http://', params='wrong', 
+                data=None, headers=None)
+        self.assertTrue(
+                na.exception.message=="Params must be a dict, got 'wrong'")
+
+    def test_get_request_dict_correct_params(self):
+        req = Requester('foo', 'bar')
+
+        req_return = req.get_request_dict(url='http://', 
+            params={'param': 'value'},
+            data=None, headers=None)
+
+        self.assertTrue(isinstance(req_return, dict))
+        self.assertTrue(req_return.get('params'))
+        self.assertTrue(req_return['params']=={'param': 'value'})
+
+    def test_get_request_dict_wrong_headers(self):
+        req = Requester('foo', 'bar')
+
+        with self.assertRaises(AssertionError) as na:
+            req_return = req.get_request_dict(url='http://', params={}, 
+                data=None, headers='wrong')
+        self.assertTrue(
+                na.exception.message=="headers must be a dict, got 'wrong'")
+
+    def test_get_request_dict_correct_headers(self):
+        req = Requester('foo', 'bar')
+
+        req_return = req.get_request_dict(url='http://', 
+            params={'param': 'value'},
+            data=None, headers={'header': 'value'})
+
+        self.assertTrue(isinstance(req_return, dict))
+        self.assertTrue(req_return.get('headers'))
+        self.assertTrue(req_return['headers']=={'header': 'value'})
+
+    def test_get_request_dict_data_passed(self):
+        req = Requester('foo', 'bar')
+
+        req_return = req.get_request_dict(url='http://', 
+            params={'param': 'value'},
+            data='some data', headers={'header': 'value'})
+
+        self.assertTrue(isinstance(req_return, dict))
+        print req_return.get('data')
+        self.assertTrue(req_return.get('data'))
+        self.assertTrue(req_return['data']=='some data')
+
+    def test_get_request_dict_data_not_passed(self):
+        req = Requester('foo', 'bar')
+
+        req_return = req.get_request_dict(url='http://', 
+            params={'param': 'value'},
+            data=None, headers={'header': 'value'})
+
+        self.assertTrue(isinstance(req_return, dict))
+        self.assertFalse(req_return.get('data'))
+
+    @mock.patch.object(requests, 'get')
+    def test_get_url(self, _get):
+        _get.return_value = 'SUCCESS'
+        req = Requester('foo', 'bar')
+        self.assertTrue(req.get_url('http://dummy', 
+                        params={'param': 'value'},
+                        headers=None)=='SUCCESS')
+        
+    @mock.patch.object(requests, 'post')
+    def test_get_url(self, _post):
+        _post.return_value = 'SUCCESS'
+        req = Requester('foo', 'bar')
+        self.assertTrue(req.post_url('http://dummy', 
+                        params={'param': 'value'},
+                        headers=None)=='SUCCESS')
+        
+    @mock.patch.object(requests, 'post')
+    def test_post_xml_and_confirm_status_empty_xml(self, _post):
+        _post.return_value = 'SUCCESS'
+        req = Requester('foo', 'bar')
+        with self.assertRaises(AssertionError) as ae:
+            req.post_xml_and_confirm_status(
+                            url='http://dummy',
+                            params={'param': 'value'},
+                            data=None)
+
+        self.assertTrue(ae.exception.message=='Unexpected data type: None')
+
+    @mock.patch.object(requests, 'post')
+    def test_post_xml_and_confirm_status_some_xml(self, _post):
+        response = requests.Response()
+        response.status_code = 200
+        _post.return_value = response
+        req = Requester('foo', 'bar')
+        ret = req.post_xml_and_confirm_status(
+                        url='http://dummy',
+                        params={'param': 'value'},
+                        data='<xml/>')
+        self.assertTrue(isinstance(ret, requests.Response))
+
+    @mock.patch.object(requests, 'post')
+    def test_post_and_confirm_status_empty_data(self, _post):
+        _post.return_value = 'SUCCESS'
+        req = Requester('foo', 'bar')
+        with self.assertRaises(AssertionError) as ae:
+            req.post_and_confirm_status(
+                            url='http://dummy',
+                            params={'param': 'value'},
+                            data=None)
+
+        self.assertTrue(ae.exception.message=='Unexpected data type: None')
+
+    @mock.patch.object(requests, 'post')
+    def test_post_and_confirm_status_some_data(self, _post):
+        response = requests.Response()
+        response.status_code = 200
+        _post.return_value = response
+        req = Requester('foo', 'bar')
+        ret = req.post_and_confirm_status(
+                        url='http://dummy',
+                        params={'param': 'value'},
+                        data='some data')
+        self.assertTrue(isinstance(ret, requests.Response))
+
+    @mock.patch.object(requests, 'post')
+    def test_post_and_confirm_status_bad_result(self, _post):
+        response = requests.Response()
+        response.status_code = 500
+        _post.return_value = response
+
+        req = Requester('foo', 'bar')
+        with self.assertRaises(JenkinsAPIException) as ae:
+            req.post_and_confirm_status(
+                            url='http://dummy',
+                            params={'param': 'value'},
+                            data='some data')
+
+        print ae.exception.message
+        self.assertTrue(ae.exception.message=="Operation failed. url=None, data=some data, headers={'Content-Type': 'application/x-www-form-urlencoded'}, status=500, text=")
+
+    @mock.patch.object(requests, 'get')
+    def test_get_and_confirm_status(self, _get):
+        response = requests.Response()
+        response.status_code = 200
+        _get.return_value = response
+        req = Requester('foo', 'bar')
+        ret = req.get_and_confirm_status(
+                        url='http://dummy',
+                        params={'param': 'value'})
+        self.assertTrue(isinstance(ret, requests.Response))
+
+    @mock.patch.object(requests, 'get')
+    def test_get_and_confirm_status_bad_result(self, _get):
+        response = requests.Response()
+        response.status_code = 500
+        _get.return_value = response
+
+        req = Requester('foo', 'bar')
+        with self.assertRaises(JenkinsAPIException) as ae:
+            req.get_and_confirm_status(
+                            url='http://dummy',
+                            params={'param': 'value'})
+
+        print ae.exception.message
+        self.assertTrue(ae.exception.message=="Operation failed. url=None, headers=None, status=500, text=")
+