Version prefix (#2137)
* Add version prefixing * Versioning tests * Testing BP group properties
This commit is contained in:
@@ -218,3 +218,32 @@ def test_blueprint_group_insert():
|
||||
assert group.blueprints[1].strict_slashes is False
|
||||
assert group.blueprints[2].strict_slashes is True
|
||||
assert group.blueprints[0].url_prefix == "/test"
|
||||
|
||||
|
||||
def test_bp_group_properties():
|
||||
blueprint_1 = Blueprint("blueprint_1", url_prefix="/bp1")
|
||||
blueprint_2 = Blueprint("blueprint_2", url_prefix="/bp2")
|
||||
group = Blueprint.group(
|
||||
blueprint_1,
|
||||
blueprint_2,
|
||||
version=1,
|
||||
version_prefix="/api/v",
|
||||
url_prefix="/grouped",
|
||||
strict_slashes=True,
|
||||
)
|
||||
|
||||
assert group.version_prefix == "/api/v"
|
||||
assert blueprint_1.version_prefix == "/api/v"
|
||||
assert blueprint_2.version_prefix == "/api/v"
|
||||
|
||||
assert group.version == 1
|
||||
assert blueprint_1.version == 1
|
||||
assert blueprint_2.version == 1
|
||||
|
||||
assert group.strict_slashes
|
||||
assert blueprint_1.strict_slashes
|
||||
assert blueprint_2.strict_slashes
|
||||
|
||||
assert group.url_prefix == "/grouped"
|
||||
assert blueprint_1.url_prefix == "/grouped/bp1"
|
||||
assert blueprint_2.url_prefix == "/grouped/bp2"
|
||||
|
||||
141
tests/test_versioning.py
Normal file
141
tests/test_versioning.py
Normal file
@@ -0,0 +1,141 @@
|
||||
import pytest
|
||||
|
||||
from sanic import Blueprint, text
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def handler():
|
||||
def handler(_):
|
||||
return text("Done.")
|
||||
|
||||
return handler
|
||||
|
||||
|
||||
def test_route(app, handler):
|
||||
app.route("/", version=1)(handler)
|
||||
|
||||
_, response = app.test_client.get("/v1")
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
def test_bp(app, handler):
|
||||
bp = Blueprint(__file__, version=1)
|
||||
bp.route("/")(handler)
|
||||
app.blueprint(bp)
|
||||
|
||||
_, response = app.test_client.get("/v1")
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
def test_bp_use_route(app, handler):
|
||||
bp = Blueprint(__file__, version=1)
|
||||
bp.route("/", version=1.1)(handler)
|
||||
app.blueprint(bp)
|
||||
|
||||
_, response = app.test_client.get("/v1.1")
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
def test_bp_group(app, handler):
|
||||
bp = Blueprint(__file__)
|
||||
bp.route("/")(handler)
|
||||
group = Blueprint.group(bp, version=1)
|
||||
app.blueprint(group)
|
||||
|
||||
_, response = app.test_client.get("/v1")
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
def test_bp_group_use_bp(app, handler):
|
||||
bp = Blueprint(__file__, version=1.1)
|
||||
bp.route("/")(handler)
|
||||
group = Blueprint.group(bp, version=1)
|
||||
app.blueprint(group)
|
||||
|
||||
_, response = app.test_client.get("/v1.1")
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
def test_bp_group_use_registration(app, handler):
|
||||
bp = Blueprint(__file__, version=1.1)
|
||||
bp.route("/")(handler)
|
||||
group = Blueprint.group(bp, version=1)
|
||||
app.blueprint(group, version=1.2)
|
||||
|
||||
_, response = app.test_client.get("/v1.2")
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
def test_bp_group_use_route(app, handler):
|
||||
bp = Blueprint(__file__, version=1.1)
|
||||
bp.route("/", version=1.3)(handler)
|
||||
group = Blueprint.group(bp, version=1)
|
||||
app.blueprint(group, version=1.2)
|
||||
|
||||
_, response = app.test_client.get("/v1.3")
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
def test_version_prefix_route(app, handler):
|
||||
app.route("/", version=1, version_prefix="/api/v")(handler)
|
||||
|
||||
_, response = app.test_client.get("/api/v1")
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
def test_version_prefix_bp(app, handler):
|
||||
bp = Blueprint(__file__, version=1, version_prefix="/api/v")
|
||||
bp.route("/")(handler)
|
||||
app.blueprint(bp)
|
||||
|
||||
_, response = app.test_client.get("/api/v1")
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
def test_version_prefix_bp_use_route(app, handler):
|
||||
bp = Blueprint(__file__, version=1, version_prefix="/ignore/v")
|
||||
bp.route("/", version=1.1, version_prefix="/api/v")(handler)
|
||||
app.blueprint(bp)
|
||||
|
||||
_, response = app.test_client.get("/api/v1.1")
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
def test_version_prefix_bp_group(app, handler):
|
||||
bp = Blueprint(__file__)
|
||||
bp.route("/")(handler)
|
||||
group = Blueprint.group(bp, version=1, version_prefix="/api/v")
|
||||
app.blueprint(group)
|
||||
|
||||
_, response = app.test_client.get("/api/v1")
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
def test_version_prefix_bp_group_use_bp(app, handler):
|
||||
bp = Blueprint(__file__, version=1.1, version_prefix="/api/v")
|
||||
bp.route("/")(handler)
|
||||
group = Blueprint.group(bp, version=1, version_prefix="/ignore/v")
|
||||
app.blueprint(group)
|
||||
|
||||
_, response = app.test_client.get("/api/v1.1")
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
def test_version_prefix_bp_group_use_registration(app, handler):
|
||||
bp = Blueprint(__file__, version=1.1, version_prefix="/alsoignore/v")
|
||||
bp.route("/")(handler)
|
||||
group = Blueprint.group(bp, version=1, version_prefix="/ignore/v")
|
||||
app.blueprint(group, version=1.2, version_prefix="/api/v")
|
||||
|
||||
_, response = app.test_client.get("/api/v1.2")
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
def test_version_prefix_bp_group_use_route(app, handler):
|
||||
bp = Blueprint(__file__, version=1.1, version_prefix="/alsoignore/v")
|
||||
bp.route("/", version=1.3, version_prefix="/api/v")(handler)
|
||||
group = Blueprint.group(bp, version=1, version_prefix="/ignore/v")
|
||||
app.blueprint(group, version=1.2, version_prefix="/stillignoring/v")
|
||||
|
||||
_, response = app.test_client.get("/api/v1.3")
|
||||
assert response.status == 200
|
||||
Reference in New Issue
Block a user