summaryrefslogtreecommitdiff
path: root/tests/test_uri_validate.py
blob: 1ef8b1f2658a4532e4095e9c053c4138abdb315f (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
import oauthlib
from oauthlib.uri_validate import is_absolute_uri

from tests.unittest import TestCase


class UriValidateTest(TestCase):

    def test_is_absolute_uri(self):

        self.assertIsNotNone(is_absolute_uri('schema://example.com/path'))
        self.assertIsNotNone(is_absolute_uri('https://example.com/path'))
        self.assertIsNotNone(is_absolute_uri('https://example.com'))
        self.assertIsNotNone(is_absolute_uri('https://example.com:443/path'))
        self.assertIsNotNone(is_absolute_uri('https://example.com:443/'))
        self.assertIsNotNone(is_absolute_uri('https://example.com:443'))
        self.assertIsNotNone(is_absolute_uri('http://example.com'))
        self.assertIsNotNone(is_absolute_uri('http://example.com/path'))
        self.assertIsNotNone(is_absolute_uri('http://example.com:80/path'))
        self.assertIsNotNone(is_absolute_uri('com.example.bundle.id:/'))
        self.assertIsNotNone(is_absolute_uri('http://[::1]:38432/path'))
        self.assertIsNotNone(is_absolute_uri('http://[::1]/path'))
        self.assertIsNotNone(is_absolute_uri('http://[fd01:0001::1]/path'))
        self.assertIsNotNone(is_absolute_uri('http://[fd01:1::1]/path'))
        self.assertIsNotNone(is_absolute_uri('http://[0123:4567:89ab:cdef:0123:4567:89ab:cdef]/path'))
        self.assertIsNotNone(is_absolute_uri('http://127.0.0.1:38432/'))
        self.assertIsNotNone(is_absolute_uri('http://127.0.0.1:38432/'))
        self.assertIsNotNone(is_absolute_uri('http://127.1:38432/'))

        self.assertIsNone(is_absolute_uri('http://example.com:notaport/path'))
        self.assertIsNone(is_absolute_uri('wrong'))
        self.assertIsNone(is_absolute_uri('http://[:1]:38432/path'))
        self.assertIsNone(is_absolute_uri('http://[abcd:efgh::1]/'))

    def test_recursive_regex(self):
        from datetime import datetime
        t0 = datetime.now()
        self.assertIsNone(is_absolute_uri('http://[::::::::::::::::::::::::::]/path'))
        t1 = datetime.now()
        spent = t1 - t0
        self.assertGreater(0.1, spent.total_seconds(), "possible recursive loop detected")