def setup(): if len(sys.argv) > 1: config = dict(parse_args()) else: logger.info('env') config = parse_env() logger.error(config) cloudinary.config( cloud_name=config['cloud_name'], api_key=config['api_key'], api_secret=config['api_secret'], ) flaskapp.config['CUSTOM'] = { 'default_folder': config['default_folder'], } JWT.setup(config['jwt_secret']) if config['cors']: CORS(flaskapp, resources={'/upload': {'origins': '*'}}) return flaskapp, config
def TestWrongAlgo(self): self.assertEqual(JWT.jwt_check(self.jwt['wrong-algo'], ['admin']), False)
def TestMultipleAudJWTToken(self): self.assertEqual( JWT.jwt_check(self.jwt['admin'], ['something-else', 'admin']), True)
def TestInvalidSecretJWTToken(self): self.assertEqual(JWT.jwt_check(self.jwt['wrong-secret'], ['admin']), False)
def TestValidJWTToken(self): self.assertEqual(JWT.jwt_check(self.jwt['admin'], ['admin']), True)
def TestWrongAudienceJWTToken(self): self.assertEqual(JWT.jwt_check(self.jwt['not-admin'], ['admin']), False)
def TestExpiredJWTToken(self): self.assertEqual(JWT.jwt_check(self.jwt['expired'], ['admin']), False)
import sys import base64 import cloudinary import cloudinary.uploader import cloudinary.api import unittest from unittest.mock import patch import app.routes from app.jwt_check import JWT import app.setup import tests.config as config JWT.setup('testsecret') class TestRoutes(unittest.TestCase): jwt = json.load(open('tests/jwt.json')) urls = json.load(open('tests/urls.json')) sys.argv = [ '', '--name', config.CLOUD_NAME, '--api_key', config.API_KEY, '--api_secret', config.API_SECRET, '--jwt_secret', config.JWT_SECRET, '--folder', config.FOLDER, '--cors' ] flaskapp, _ = app.setup.setup() client = flaskapp.test_client() @patch.object(JWT, 'jwt_check', return_value=True)
def check_jwt(request): auth = request.headers.get('Authorization', '').split(' ') token = auth[1] if len(auth) > 1 and auth[0].lower() == 'bearer' else '' return JWT.jwt_check(token, ['admin'])