Beispiel #1
0
def test_build_external() -> None:
    map_ = Map()
    map_.add(Rule("/ws/", {"GET"}, "websocket", is_websocket=True))
    map_.add(Rule("/", {"GET"}, "index"))
    adapter = map_.bind(True, "localhost")
    adapter.build("websocket") == "wss://localhost/ws/"
    adapter.build("index") == "https://localhost/"
Beispiel #2
0
def test_build_external() -> None:
    map_ = Map()
    map_.add(Rule('/ws/', {'GET'}, 'websocket', is_websocket=True))
    map_.add(Rule('/', {'GET'}, 'index'))
    adapter = map_.bind(True, 'localhost')
    adapter.build("websocket") == "wss://localhost/ws/"
    adapter.build("index") == "https://localhost/"
Beispiel #3
0
def test_value_building() -> None:
    map_ = Map()
    map_.add(Rule('/book/<page>', {'GET'}, 'book'))
    adapter = map_.bind('http', '')
    assert adapter.build('book', values={'page': 1}) == '/book/1'
    assert adapter.build('book', values={
        'page': 1,
        'line': 12
    }) == '/book/1?line=12'
Beispiel #4
0
def test_defaults() -> None:
    map_ = Map()
    map_.add(Rule('/book/', ['GET'], 'book', defaults={'page': 1}))
    map_.add(Rule('/book/<int:page>/', ['GET'], 'book'))
    _test_match(map_, '/book/', 'GET', (map_.endpoints['book'][0], {'page': 1}))
    _test_match_redirect(map_, '/book/1/', 'GET', '/book/')
    _test_match(map_, '/book/2/', 'GET', (map_.endpoints['book'][1], {'page': 2}))
    adapter = map_.bind('http', '')
    assert adapter.build('book', method='GET') == '/book/'
    assert adapter.build('book', method='GET', values={'page': 1}) == '/book/'
    assert adapter.build('book', method='GET', values={'page': 2}) == '/book/2/'
Beispiel #5
0
def test_build_error(basic_map: Map) -> None:
    basic_map.add(Rule('/values/<int:x>/', {'GET'}, 'values'))
    adapter = basic_map.bind('http', '')
    with pytest.raises(BuildError) as error:
        adapter.build('bob')
    assert 'No endpoint found' in str(error)
    with pytest.raises(BuildError) as error:
        adapter.build('values', values={'y': 2})
    assert 'do not match' in str(error)
    with pytest.raises(BuildError) as error:
        adapter.build('values', method='POST')
    assert 'not one of' in str(error)
Beispiel #6
0
def test_build_error(basic_map: Map) -> None:
    basic_map.add(Rule("/values/<int:x>/", {"GET"}, "values"))
    adapter = basic_map.bind(False, "")
    with pytest.raises(BuildError) as error:
        adapter.build("bob")
    assert "No endpoint found" in str(error.value)
    with pytest.raises(BuildError) as error:
        adapter.build("values", values={"y": 2})
    assert "do not match" in str(error.value)
    with pytest.raises(BuildError) as error:
        adapter.build("values", method="POST")
    assert "not one of" in str(error.value)
Beispiel #7
0
def test_value_building() -> None:
    map_ = Map()
    map_.add(Rule("/book/<page>", {"GET"}, "book"))
    adapter = map_.bind(False, "")
    assert adapter.build("book", values={"page": 1}) == "/book/1"
    assert adapter.build("book", values={
        "page": 1,
        "line": 12
    }) == "/book/1?line=12"
    assert adapter.build("book", values={
        "page": 1,
        "line": [1, 2]
    }) == "/book/1?line=1&line=2"
Beispiel #8
0
def test_defaults() -> None:
    map_ = Map()
    map_.add(Rule("/book/", {"GET"}, "book", defaults={"page": 1}))
    map_.add(Rule("/book/<int:page>/", {"GET"}, "book"))
    _test_match(map_, "/book/", "GET", (map_.endpoints["book"][0], {
        "page": 1
    }))
    _test_match_redirect(map_, "/book/1/", "GET", "/book/")
    _test_match(map_, "/book/2/", "GET", (map_.endpoints["book"][1], {
        "page": 2
    }))
    adapter = map_.bind(False, "")
    assert adapter.build("book", method="GET") == "/book/"
    assert adapter.build("book", method="GET", values={"page": 1}) == "/book/"
    assert adapter.build("book", method="GET", values={"page":
                                                       2}) == "/book/2/"
Beispiel #9
0
def test_basic_building(basic_map: Map) -> None:
    adapter = basic_map.bind('http', '')
    assert adapter.build('index', method='POST') == '/'
    assert adapter.build('delete_index', method='DELETE') == '/'
    assert adapter.build('leaf') == '/leaf'
    assert adapter.build('branch') == '/branch/'
Beispiel #10
0
def test_basic_building(basic_map: Map) -> None:
    adapter = basic_map.bind(False, "")
    assert adapter.build("index", method="POST") == "/"
    assert adapter.build("delete_index", method="DELETE") == "/"
    assert adapter.build("leaf") == "/leaf"
    assert adapter.build("branch") == "/branch/"