def test_multi_instances_init(): app = Flask(__name__) _ = base.Admin(app) class ManageIndex(base.AdminIndexView): pass _ = base.Admin(app, index_view=ManageIndex(url='/manage', endpoint='manage'))
def test_multi_instances_init(): app = Flask(__name__) _ = base.Admin(app) class ManageIndex(base.AdminIndexView): pass _ = base.Admin(app, index_view=ManageIndex(url="/manage", endpoint="manage")) # noqa: F841
def test_submenu(): app = Flask(__name__) admin = base.Admin(app) admin.add_view(MockView(name='Test 1', category='Test', endpoint='test1')) # Second view is not normally accessible view = MockView(name='Test 2', category='Test', endpoint='test2') view.allow_access = False admin.add_view(view) assert 'Test' in admin._menu_categories assert len(admin._menu) == 2 assert admin._menu[1].name == 'Test' assert len(admin._menu[1]._children) == 2 # Categories don't have URLs assert admin._menu[1].get_url() is None # Categories are only accessible if there is at least one accessible child assert admin._menu[1].is_accessible() children = admin._menu[1].get_children() assert len(children) == 1 assert children[0].is_accessible()
def test_add_category(): app = Flask(__name__) admin = base.Admin(app) admin.add_category('Category1', 'class-name', 'icon-type', 'icon-value') admin.add_view(MockView(name='Test 1', endpoint='test1', category='Category1')) admin.add_view(MockView(name='Test 2', endpoint='test2', category='Category2')) assert len(admin.menu()) == 3 # Test 1 should be underneath Category1 assert admin.menu()[1].name == 'Category1' assert admin.menu()[1].get_class_name() == 'class-name' assert admin.menu()[1].get_icon_type() == 'icon-type' assert admin.menu()[1].get_icon_value() == 'icon-value' assert len(admin.menu()[1].get_children()) == 1 assert admin.menu()[1].get_children()[0].name == 'Test 1' # Test 2 should be underneath Category2 assert admin.menu()[2].name == 'Category2' assert admin.menu()[2].get_class_name() is None assert admin.menu()[2].get_icon_type() is None assert admin.menu()[2].get_icon_value() is None assert len(admin.menu()[2].get_children()) == 1 assert admin.menu()[2].get_children()[0].name == 'Test 2'
def test_nested_flask_views(): app = Flask(__name__) admin = base.Admin(app) view = MockMethodView() admin.add_view(view) client = app.test_client() rv = client.get('/admin/mockmethodview/_api/1') print('"', rv.data, '"') assert rv.data == b'GET - API1' rv = client.put('/admin/mockmethodview/_api/1') assert rv.data == b'PUT - API1' rv = client.post('/admin/mockmethodview/_api/1') assert rv.data == b'POST - API1' rv = client.delete('/admin/mockmethodview/_api/1') assert rv.data == b'DELETE - API1' rv = client.get('/admin/mockmethodview/_api/2') assert rv.data == b'GET - API2' rv = client.post('/admin/mockmethodview/_api/2') assert rv.data == b'POST - API2' rv = client.delete('/admin/mockmethodview/_api/2') assert rv.status_code == 405 rv = client.put('/admin/mockmethodview/_api/2') assert rv.status_code == 405 rv = client.get('/admin/mockmethodview/_api/3') assert rv.data == b'GET - API3' rv = client.get('/admin/mockmethodview/_api/4') assert rv.data == b'GET - API3'
def test_add_category(): app = Flask(__name__) admin = base.Admin(app) admin.add_category('Category1', 'class-name', 'icon-type', 'icon-value') admin.add_view( MockView(name='Test 1', endpoint='test1', category='Category1')) admin.add_view( MockView(name='Test 2', endpoint='test2', category='Category2')) eq_(len(admin.menu()), 3) # Test 1 should be underneath Category1 eq_(admin.menu()[1].name, 'Category1') eq_(admin.menu()[1].get_class_name(), 'class-name') eq_(admin.menu()[1].get_icon_type(), 'icon-type') eq_(admin.menu()[1].get_icon_value(), 'icon-value') eq_(len(admin.menu()[1].get_children()), 1) eq_(admin.menu()[1].get_children()[0].name, 'Test 1') # Test 2 should be underneath Category2 eq_(admin.menu()[2].name, 'Category2') eq_(admin.menu()[2].get_class_name(), None) eq_(admin.menu()[2].get_icon_type(), None) eq_(admin.menu()[2].get_icon_value(), None) eq_(len(admin.menu()[2].get_children()), 1) eq_(admin.menu()[2].get_children()[0].name, 'Test 2')
def test_nested_flask_views(): app = Flask(__name__) admin = base.Admin(app) view = MockMethodView() admin.add_view(view) client = app.test_client() rv = client.get("/admin/mockmethodview/_api/1") print('"', rv.data, '"') eq_(rv.data, b"GET - API1") rv = client.put("/admin/mockmethodview/_api/1") eq_(rv.data, b"PUT - API1") rv = client.post("/admin/mockmethodview/_api/1") eq_(rv.data, b"POST - API1") rv = client.delete("/admin/mockmethodview/_api/1") eq_(rv.data, b"DELETE - API1") rv = client.get("/admin/mockmethodview/_api/2") eq_(rv.data, b"GET - API2") rv = client.post("/admin/mockmethodview/_api/2") eq_(rv.data, b"POST - API2") rv = client.delete("/admin/mockmethodview/_api/2") eq_(rv.status_code, 405) rv = client.put("/admin/mockmethodview/_api/2") eq_(rv.status_code, 405) rv = client.get("/admin/mockmethodview/_api/3") eq_(rv.data, b"GET - API3") rv = client.get("/admin/mockmethodview/_api/4") eq_(rv.data, b"GET - API3")
def test_submenu(): app = Flask(__name__) admin = base.Admin(app) admin.add_view(MockView(name="Test 1", category="Test", endpoint="test1")) # Second view is not normally accessible view = MockView(name="Test 2", category="Test", endpoint="test2") view.allow_access = False admin.add_view(view) ok_("Test" in admin._menu_categories) eq_(len(admin._menu), 2) eq_(admin._menu[1].name, "Test") eq_(len(admin._menu[1]._children), 2) # Categories don't have URLs eq_(admin._menu[1].get_url(), None) # Categories are only accessible if there is at least one accessible child eq_(admin._menu[1].is_accessible(), True) children = admin._menu[1].get_children() eq_(len(children), 1) ok_(children[0].is_accessible())
def test_add_views(): app = Flask(__name__) admin = base.Admin(app) admin.add_views(MockView(endpoint="test1"), MockView(endpoint="test2")) eq_(len(admin.menu()), 3)
def test_add_views(): app = Flask(__name__) admin = base.Admin(app) admin.add_views(MockView(endpoint='test1'), MockView(endpoint='test2')) assert len(admin.menu()) == 3
def test_baseview_urls(): app = Flask(__name__) admin = base.Admin(app) view = MockView() admin.add_view(view) eq_(len(view._urls), 2)
def test_delayed_init(): app = Flask(__name__) admin = base.Admin() admin.add_view(MockView()) admin.init_app(app) client = app.test_client() rv = client.get("/admin/mockview/") eq_(rv.data, b"Success!")
def test_delayed_init(): app = Flask(__name__) admin = base.Admin() admin.add_view(MockView()) admin.init_app(app) client = app.test_client() rv = client.get('/admin/mockview/') assert rv.data == b'Success!'
def test_permissions(): app = Flask(__name__) admin = base.Admin(app) view = MockView() admin.add_view(view) client = app.test_client() view.allow_access = False rv = client.get("/admin/mockview/") eq_(rv.status_code, 403)
def test_menu_links(): app = Flask(__name__) admin = base.Admin(app) admin.add_link(base.MenuLink('TestMenuLink1', endpoint='.index')) admin.add_link(base.MenuLink('TestMenuLink2', url='http://python.org/')) client = app.test_client() rv = client.get('/admin/') data = rv.data.decode('utf-8') ok_('TestMenuLink1' in data) ok_('TestMenuLink2' in data)
def test_menu_links(): app = Flask(__name__) admin = base.Admin(app) admin.add_link(base.MenuLink("TestMenuLink1", endpoint=".index")) admin.add_link(base.MenuLink("TestMenuLink2", url="http://python.org/")) client = app.test_client() rv = client.get("/admin/") data = rv.data.decode("utf-8") ok_("TestMenuLink1" in data) ok_("TestMenuLink2" in data)
def test_base_defaults(): admin = base.Admin() assert admin.name == 'Admin' assert admin.url == '/admin' assert admin.endpoint == 'admin' assert admin.app is None assert admin.index_view is not None assert admin.index_view._template == 'admin/index.html' # Check if default view was added assert len(admin._views) == 1 assert admin._views[0] == admin.index_view
def test_base_defaults(): admin = base.Admin() eq_(admin.name, "Admin") eq_(admin.url, "/admin") eq_(admin.endpoint, "admin") eq_(admin.app, None) ok_(admin.index_view is not None) eq_(admin.index_view._template, "admin/index.html") # Check if default view was added eq_(len(admin._views), 1) eq_(admin._views[0], admin.index_view)
def test_inaccessible_callback(): app = Flask(__name__) admin = base.Admin(app) view = MockView() admin.add_view(view) client = app.test_client() view.allow_access = False view.inaccessible_callback = lambda *args, **kwargs: abort(418) rv = client.get("/admin/mockview/") eq_(rv.status_code, 418)
def test_root_mount(): app = Flask(__name__) admin = base.Admin(app, url='/') admin.add_view(MockView()) client = app.test_client() rv = client.get('/mockview/') eq_(rv.data, b'Success!') # test static files when url='/' with app.test_request_context('/'): rv = client.get(url_for('admin.static', filename='bootstrap/bootstrap2/css/bootstrap.css')) eq_(rv.status_code, 200)
def get_visibility(): app = Flask(__name__) admin = base.Admin(app) view = MockView(name="TestMenuItem") view.visible = False admin.add_view(view) client = app.test_client() rv = client.get("/admin/mockview/") ok_("TestMenuItem" not in rv.data.decode("utf-8"))
def get_visibility(): app = Flask(__name__) admin = base.Admin(app) view = MockView(name='TestMenuItem') view.visible = False admin.add_view(view) client = app.test_client() rv = client.get('/admin/mockview/') ok_('TestMenuItem' not in rv.data.decode('utf-8'))
def test_admin_customizations(): app = Flask(__name__) admin = base.Admin(app, name='Test', url='/foobar', static_url_path='/static/my/admin') eq_(admin.name, 'Test') eq_(admin.url, '/foobar') eq_(admin.index_view.blueprint.static_url_path, '/static/my/admin') client = app.test_client() rv = client.get('/foobar/') eq_(rv.status_code, 200) # test custom static_url_path with app.test_request_context('/'): rv = client.get(url_for('admin.static', filename='bootstrap/bootstrap2/css/bootstrap.css')) eq_(rv.status_code, 200)
def test_custom_index_view(): view = base.AdminIndexView(name='a', category='b', endpoint='c', url='/d', template='e') admin = base.Admin(index_view=view) eq_(admin.endpoint, 'c') eq_(admin.url, '/d') ok_(admin.index_view is view) eq_(view.name, 'a') eq_(view.category, 'b') eq_(view._template, 'e') # Check if view was added eq_(len(admin._views), 1) eq_(admin._views[0], view)
def test_custom_index_view(): view = base.AdminIndexView(name='a', category='b', endpoint='c', url='/d', template='e') admin = base.Admin(index_view=view) assert admin.endpoint == 'c' assert admin.url == '/d' assert admin.index_view is view assert view.name == 'a' assert view.category == 'b' assert view._template == 'e' # Check if view was added assert len(admin._views) == 1 assert admin._views[0] == view
def test_root_mount(): app = Flask(__name__) admin = base.Admin(app, url="/") admin.add_view(MockView()) client = app.test_client() rv = client.get("/mockview/") eq_(rv.data, b"Success!") # test static files when url='/' with app.test_request_context("/"): rv = client.get( url_for("admin.static", filename="bootstrap/bootstrap2/css/bootstrap.css")) eq_(rv.status_code, 200)
def test_custom_index_view(): view = base.AdminIndexView(name="a", category="b", endpoint="c", url="/d", template="e") admin = base.Admin(index_view=view) eq_(admin.endpoint, "c") eq_(admin.url, "/d") ok_(admin.index_view is view) eq_(view.name, "a") eq_(view.category, "b") eq_(view._template, "e") # Check if view was added eq_(len(admin._views), 1) eq_(admin._views[0], view)
def test_call(): app = Flask(__name__) admin = base.Admin(app) view = MockView() admin.add_view(view) client = app.test_client() rv = client.get('/admin/') assert rv.status_code == 200 rv = client.get('/admin/mockview/') assert rv.data == b'Success!' rv = client.get('/admin/mockview/test/') assert rv.data == b'Success!' # Check authentication failure view.allow_call = False rv = client.get('/admin/mockview/') assert rv.data == b'Failure!'
def test_admin_customizations(): app = Flask(__name__) admin = base.Admin(app, name="Test", url="/foobar", static_url_path="/static/my/admin") eq_(admin.name, "Test") eq_(admin.url, "/foobar") eq_(admin.index_view.blueprint.static_url_path, "/static/my/admin") client = app.test_client() rv = client.get("/foobar/") eq_(rv.status_code, 200) # test custom static_url_path with app.test_request_context("/"): rv = client.get( url_for("admin.static", filename="bootstrap/bootstrap2/css/bootstrap.css")) eq_(rv.status_code, 200)
def test_call(): app = Flask(__name__) admin = base.Admin(app) view = MockView() admin.add_view(view) client = app.test_client() rv = client.get("/admin/") eq_(rv.status_code, 200) rv = client.get("/admin/mockview/") eq_(rv.data, b"Success!") rv = client.get("/admin/mockview/test/") eq_(rv.data, b"Success!") # Check authentication failure view.allow_call = False rv = client.get("/admin/mockview/") eq_(rv.data, b"Failure!")