コード例 #1
0
 def test_setup_app(self):
     sandbox = Sandbox()
     sandbox.setup_app(self.app)
     self.assertIsInstance(sandbox, Sandbox)
コード例 #2
0
    def setUp(self):
        self.app = Flask(__name__)
        self.app.config['SECRET_KEY'] = 'deterministic'
        self.app.config['TESTING'] = True
        self.login = LoginManager(self.app)
        self.sandbox = Sandbox(self.app)

        @self.login.user_loader
        def load_user(id):
            return USERS[int(id)]

        @self.app.route("/")
        def index():
            return u'Welcome'

        self.login_blueprint = Blueprint("login", __name__)
        self.user_blueprint = Blueprint("user", __name__)
        self.dev_blueprint = Blueprint("dev", __name__)
        self.admin_blueprint = Blueprint("admin", __name__)

        @self.login_blueprint.route("/login-frank")
        def login_frank():
            return unicode(login_user(frank))

        @self.login_blueprint.route("/login-notch")
        def login_notch():
            return unicode(login_user(notch))

        @self.login_blueprint.route("/login-pig")
        def login_pig():
            return unicode(login_user(pig))

        @self.login_blueprint.route("/login-steve")
        def login_steve():
            return unicode(login_user(steve))

        @self.login_blueprint.route("/login-creeper")
        def login_creeper():
            return unicode(login_user(creeper))

        @self.login_blueprint.route("/logout")
        def logout():
            return logout_user()

        @self.app.route("/current_user")
        def currentuser():
            return current_user.name

        @self.admin_blueprint.route("/admin")
        @self.sandbox(lambda u: u.admin)
        def admin():
            return "admin"

        @self.user_blueprint.route("/user")
        @self.sandbox(lambda u: u.type == 'User')
        def user():
            return "user"

        @self.dev_blueprint.route("/dev")
        @self.sandbox(lambda u: u.type == "Dev")
        def dev():
            return "dev"

        self.sandbox.register_blueprint(self.login_blueprint)
        self.sandbox.register_blueprint(
            self.admin_blueprint, lambda u: u.admin)
        self.sandbox.register_blueprint(
            self.user_blueprint, lambda u: u.type == 'User')
        self.sandbox.register_blueprint(
            self.dev_blueprint, lambda u: u.type == 'Dev')
コード例 #3
0
 def test_init_app(self):
     sandbox = Sandbox()
     sandbox.init_app(self.app)
     self.assertIsInstance(sandbox, Sandbox)
コード例 #4
0
class testBlueprintFiltering(unittest.TestCase):

    def setUp(self):
        self.app = Flask(__name__)
        self.app.config['SECRET_KEY'] = 'deterministic'
        self.app.config['TESTING'] = True
        self.login = LoginManager(self.app)
        self.sandbox = Sandbox(self.app)

        @self.login.user_loader
        def load_user(id):
            return USERS[int(id)]

        @self.app.route("/")
        def index():
            return u'Welcome'

        self.login_blueprint = Blueprint("login", __name__)
        self.user_blueprint = Blueprint("user", __name__)
        self.dev_blueprint = Blueprint("dev", __name__)
        self.admin_blueprint = Blueprint("admin", __name__)

        @self.login_blueprint.route("/login-frank")
        def login_frank():
            return unicode(login_user(frank))

        @self.login_blueprint.route("/login-notch")
        def login_notch():
            return unicode(login_user(notch))

        @self.login_blueprint.route("/login-pig")
        def login_pig():
            return unicode(login_user(pig))

        @self.login_blueprint.route("/login-steve")
        def login_steve():
            return unicode(login_user(steve))

        @self.login_blueprint.route("/login-creeper")
        def login_creeper():
            return unicode(login_user(creeper))

        @self.login_blueprint.route("/logout")
        def logout():
            return logout_user()

        @self.app.route("/current_user")
        def currentuser():
            return current_user.name

        @self.admin_blueprint.route("/admin")
        @self.sandbox(lambda u: u.admin)
        def admin():
            return "admin"

        @self.user_blueprint.route("/user")
        @self.sandbox(lambda u: u.type == 'User')
        def user():
            return "user"

        @self.dev_blueprint.route("/dev")
        @self.sandbox(lambda u: u.type == "Dev")
        def dev():
            return "dev"

        self.sandbox.register_blueprint(self.login_blueprint)
        self.sandbox.register_blueprint(
            self.admin_blueprint, lambda u: u.admin)
        self.sandbox.register_blueprint(
            self.user_blueprint, lambda u: u.type == 'User')
        self.sandbox.register_blueprint(
            self.dev_blueprint, lambda u: u.type == 'Dev')

    def test_unauth_user(self):
        with self.app.test_client() as c:
            result = c.get("/user")
            self.assertEqual(result.status, '403 FORBIDDEN')

    def test_user(self):
        with self.app.test_client() as c:
            c.get("/login-steve")
            current = c.get("/current_user")
            self.assertEquals(current.data.decode("utf-8"), "Steve")
            dev = c.get('/dev')
            user = c.get('/user')
            admin = c.get('/admin')
            self.assertEquals(dev.status, '403 FORBIDDEN')
            self.assertEquals(user.data.decode("utf-8"), "user")
            self.assertEquals(admin.status, '403 FORBIDDEN')

    def test_dev(self):
        with self.app.test_client() as c:
            c.get("/login-pig")
            current = c.get("/current_user")
            self.assertEquals(current.data.decode("utf-8"), "Pig")
            dev = c.get('/dev')
            user = c.get('/user')
            admin = c.get('/admin')
            self.assertEquals(dev.data.decode("utf-8"), "dev")
            self.assertEquals(user.status, "403 FORBIDDEN")
            self.assertEquals(admin.status, "403 FORBIDDEN")

    def test_user_admin(self):
        with self.app.test_client() as c:
            c.get("/login-frank")
            current = c.get("/current_user")
            self.assertEquals(current.data.decode("utf-8"), "Frank")
            dev = c.get('/dev')
            user = c.get('/user')
            admin = c.get('/admin')
            self.assertEquals(dev.status, '403 FORBIDDEN')
            self.assertEquals(user.data.decode("utf-8"), "user")
            self.assertEquals(admin.data.decode("utf-8"), "admin")

    def test_dev_admin(self):
        with self.app.test_client() as c:
            c.get("/login-notch")
            current = c.get("/current_user")
            self.assertEquals(current.data.decode("utf-8"), "Notch")
            dev = c.get('/dev')
            user = c.get('/user')
            admin = c.get('/admin')
            self.assertEquals(dev.data.decode("utf-8"), "dev")
            self.assertEquals(user.status, "403 FORBIDDEN")
            self.assertEquals(admin.data.decode("utf-8"), "admin")