TestRangeParser.setUp()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
# -*- coding: utf-8 -*-
2
import unittest
3
from pyramid import testing
4
from oe_utils.range_parser import Range, RangeParseException
5
6
try:
7
    from unittest.mock import Mock, MagicMock
8
except ImportError:
9
    from mock import Mock, MagicMock  # pragma: no cover
10
11
12
class TestRangeParser(unittest.TestCase):
13
14
    def setUp(self):
15
        self.config = testing.setUp()
16
        self.request = testing.DummyRequest()
17
18
    def tearDown(self):
19
        testing.tearDown()
20
21
    def test_range(self):
22
        range = Range.parse(self.request)
23
        self.assertEqual(0, range.start)
24
        self.assertEqual(11, range.end)
25
26
    def test_range_header(self):
27
        self.request.headers['Range'] = 'items=0-19'
28
        range = Range.parse(self.request)
29
        self.assertEqual(0, range.start)
30
        self.assertEqual(19, range.end)
31
32
    def test_range_header_incorrect_end(self):
33
        self.request.headers['Range'] = 'items=5-2'
34
        range = Range.parse(self.request)
35
        self.assertEqual(5, range.start)
36
        self.assertEqual(5, range.end)
37
38
    def test_range_header_max_end(self):
39
        self.request.headers['Range'] = 'items=0-75'
40
        range = Range.parse(self.request)
41
        self.assertEqual(0, range.start)
42
        self.assertEqual(50, range.end)
43
44
    def test_range_header_max_end_2(self):
45
        self.request.headers['Range'] = 'items=0-75'
46
        range = Range.parse(self.request, max_end=None)
47
        self.assertEqual(0, range.start)
48
        self.assertEqual(75, range.end)
49
50
    def test_range_header_invallid_header(self):
51
        self.request.headers['Range'] = 'items=0->19'
52
        error = None
53
        error_thrown = False
54
        try:
55
            Range.parse(self.request)
56
        except Exception as e:
57
            error = e
58
            error_thrown = True
59
        self.assertTrue(error_thrown)
60
        self.assertEqual('range header does not match expected format', str(error))
61
62
    def test_range_page(self):
63
        self.request.params['pagina'] = 2
64
        range = Range.parse(self.request)
65
        self.assertEqual(12, range.start)
66
        self.assertEqual(23, range.end)
67
68
    def test_range_page_5(self):
69
        self.request.params['pagina'] = 5
70
        range = Range.parse(self.request)
71
        self.assertEqual(48, range.start)
72
        self.assertEqual(59, range.end)
73
74
    def test_content_range(self):
75
        self.request.params['pagina'] = 2
76
        range = Range.parse(self.request)
77
        self.assertEqual('items 12-23/35', range.content_range(35))
78
79
    def test_get_page_size(self):
80
        self.request.params['page'] = 2
81
        range = Range.parse(self.request)
82
        self.assertEqual(12, range.get_page_size())
83
84
    def test_set_response_headers(self):
85
        self.request.headers['Range'] = 'items=0-19'
86
        range = Range.parse(self.request)
87
        response = Mock()
88
        range.set_response_headers(response, 50)
89
        self.assertEqual('items 0-19/50', response.content_range)
90
91
    def test_set_response_headers_no_length(self):
92
        self.request.headers['Range'] = 'items=0-19'
93
        range = Range.parse(self.request)
94
        response = Mock()
95
        self.assertRaises(RangeParseException,range.set_response_headers, response, None)
96