summaryrefslogtreecommitdiff
path: root/pylibchorus/tests/chorus_client_tests.py
blob: 6eb4b383dd83c2d17817fcd5ab6f890967adc9f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/env python
'''Chorus Client Test Cases'''

import logging
from pylibchorus.chorus_api import _get_
from pylibchorus.chorus_api import _post_
from pylibchorus.chorus_api import _put_
from pylibchorus.chorus_api import _delete_
import sys
if sys.version_info[0] == 2 and sys.version_info[1] == 6:
    import unittest2 as unittest
else:
    import unittest

LOG = logging.getLogger(__name__)

def check_request_structure(testcase, request_obj):
    '''Test the request structure is correct'''
    testcase.assertIsNotNone(request_obj)
    testcase.assertIn('data', request_obj)
    testcase.assertIn('headers', request_obj)
    testcase.assertIn('params', request_obj)
    testcase.assertIn('cookies', request_obj)
    testcase.assertIn('url', request_obj)
    testcase.assertIn('method', request_obj)
    check_header(testcase, request_obj['headers'])

def check_header(testcase, header):
    '''Test the header object conforms to the what the API requires'''
    testcase.assertIsNotNone(header)
    testcase.assertIn('content-type', header)
    testcase.assertEquals(header['content-type'],
                          'application/x-www-form-urlencoded')

def check_params(testcase, params, expected_sid):
    '''Check the params object contains the correct session_id'''
    testcase.assertIsNotNone(params)
    testcase.assertIn('session_id', params)
    testcase.assertEqual(params['session_id'], expected_sid)

class ChorusSessionTests(unittest.TestCase):
    '''ChorusSession Test Case'''

    def test_get_returns_request_data(self):
        '''Test _get_ returns correct request data'''
        url = '/'
        sid = 'foobar'
        cookies = {'session_id': sid}
        actual = _get_(url, sid, cookies)
        check_request_structure(self, actual)
        check_params(self, actual['params'], sid)
        self.assertIsNone(actual['data'])
        self.assertEquals(url, actual['url'])
        self.assertEquals('GET', actual['method'])

    def test_post_returns_request_data(self):
        '''Test _post_ returns correct request data'''
        url = '/workfiles/42'
        sid = 'foobar'
        cookies = {'session_id': sid}
        post_data = {'foo': 'bar'}
        actual = _post_(url, sid, cookies, data=post_data)
        check_request_structure(self, actual)
        check_params(self, actual['params'], sid)
        self.assertIsNotNone(actual['data'])
        self.assertIn('foo', actual['data'])
        self.assertEquals('bar', actual['data']['foo'])
        self.assertEquals(url, actual['url'])
        self.assertEquals('POST', actual['method'])

    def test_put_returns_request_data(self):
        '''Test _put_ returns correct request data'''
        url = '/workfiles/42/version/0'
        sid = 'foobar'
        cookies = {'session_id': sid}
        put_data = {'foo': 'bar'}
        actual = _put_(url, sid, cookies, data=put_data)
        check_request_structure(self, actual)
        check_params(self, actual['params'], sid)
        self.assertIsNotNone(actual['data'])
        self.assertIn('foo', actual['data'])
        self.assertEquals('bar', actual['data']['foo'])
        self.assertEquals(url, actual['url'])
        self.assertEquals('PUT', actual['method'])

    #pylint: disable=C0103
    def test_delete_returns_request_data(self):
        '''Test _delete_ returns correct request data'''
        url = '/workfiles/42/versions/0'
        sid = 'foobar'
        cookies = {'session_id': sid}
        actual = _delete_(url, sid, cookies)
        check_request_structure(self, actual)
        self.assertIsNone(actual['data'])
        check_params(self, actual['params'], sid)