예제 #1
0
 def run(self):
     crypt = Crypt()
     if self.create_key:
         path = crypt._loader.get_path_from_env()  # pylint: disable=protected-access
         pwd = self.get_input('Type a password to generate the key file: ')
         generate_file = self.get_input('Do you want to generate a file in {}? [Y/n]'.format(path))
         generate_file = generate_file.lower() != "n"
         key = crypt.generate_key(pwd, generate_file)
         if generate_file:
             self.print_ok("File {} generated OK".format(path))
         else:
             self.print_ok("Key generated: {}".format(key))
     if self.encrypt:
         encrypted = crypt.encrypt(self.encrypt)
         self.print_ok("Encrypted OK: {}".format(encrypted))
     if self.startproject:
         check_package_exists("cookiecutter")
         cookiecutter = import_from("cookiecutter.main", "cookiecutter")
         cookiecutter('gh:python-microservices/cookiecutter-pyms', checkout=self.branch)
         self.print_ok("Created project OK")
     if self.merge_swagger:
         try:
             merge_swagger_file(main_file=self.file)
             self.print_ok("Swagger file generated [swagger-complete.yaml]")
         except FileNotFoundError as ex:
             self.print_error(ex.__str__())
             return False
     return True
예제 #2
0
class FlaskWithEncryptedFernetTests(unittest.TestCase):
    BASE_DIR = os.path.dirname(os.path.abspath(__file__))

    def setUp(self):
        os.environ[CONFIGMAP_FILE_ENVIRONMENT] = os.path.join(
            os.path.dirname(os.path.abspath(__file__)),
            "config-tests-flask-encrypted-fernet.yml")
        os.environ[CRYPT_FILE_KEY_ENVIRONMENT] = os.path.join(
            self.BASE_DIR, "key.key")
        self.crypt = CryptFernet(path=self.BASE_DIR)
        self.crypt._loader.put_file(
            b"9IXx2F5d5Ob-h5xdCnFSUXhuFKLGRibvLfSbixpcfCw=", "wb")
        ms = MyMicroserviceNoSingleton(path=__file__)
        ms.reload_conf()
        self.app = ms.create_app()
        self.client = self.app.test_client()
        self.assertEqual("Python Microservice With Flask encrypted",
                         self.app.config["APP_NAME"])

    def tearDown(self):
        self.crypt.delete_key()
        del os.environ[CONFIGMAP_FILE_ENVIRONMENT]
        del os.environ[CRYPT_FILE_KEY_ENVIRONMENT]

    def test_fask_fernet(self):
        assert self.app.ms.config.database_url == "http://database-url"
        assert self.app.config["DATABASE_URL"] == "http://database-url"

    def test_fask_fernet_sqlalchemy(self):
        assert self.app.ms.config.SQLALCHEMY_DATABASE_URI == "http://database-url"
        assert self.app.config[
            "SQLALCHEMY_DATABASE_URI"] == "http://database-url"
예제 #3
0
 def test_crypt_file_error(self):
     crypt = CryptFernet()
     with pytest.raises(FileDoesNotExistException) as excinfo:
         crypt.read_key()
     assert ("Decrypt key None not exists. You must set a correct env var PYMS_KEY_FILE or run "
             "`pyms crypt create-key` command") \
            in str(excinfo.value)
예제 #4
0
 def test_generate_file_ok(self, input):
     crypt = Crypt()
     arguments = [
         "create-key",
     ]
     cmd = Command(arguments=arguments, autorun=False)
     cmd.run()
     crypt.delete_key()
예제 #5
0
파일: test_cmd.py 프로젝트: guxal/pyms
 def test_output_key(self, input):
     crypt = Crypt()
     arguments = ["create-key", ]
     cmd = Command(arguments=arguments, autorun=False)
     cmd.run()
     with pytest.raises(FileNotFoundError) as excinfo:
         crypt.delete_key()
     assert "[Errno 2] No such file or directory: 'key.key'" in str(excinfo.value)
예제 #6
0
파일: test_crypt.py 프로젝트: pkjmesra/pyms
 def test_encrypt_conf_deprecated_env(self):
     os.environ[CRYPT_FILE_KEY_ENVIRONMENT_LEGACY] = os.getenv(CRYPT_FILE_KEY_ENVIRONMENT)
     del os.environ[CRYPT_FILE_KEY_ENVIRONMENT]
     crypt = CryptFernet(path=self.BASE_DIR)
     crypt._loader.put_file(b"9IXx2F5d5Ob-h5xdCnFSUXhuFKLGRibvLfSbixpcfCw=", "wb")
     config = get_conf(service=CONFIG_BASE, uppercase=True, crypt=CryptFernet)
     crypt.delete_key()
     assert config.database_url == "http://database-url"
예제 #7
0
 def test_encrypt_conf(self):
     crypt = CryptFernet(path=self.BASE_DIR)
     crypt._loader.put_file(b"9IXx2F5d5Ob-h5xdCnFSUXhuFKLGRibvLfSbixpcfCw=",
                            "wb")
     config = get_conf(service=CONFIG_BASE,
                       uppercase=True,
                       crypt=CryptFernet)
     crypt.delete_key()
     assert config.database_url == "http://database-url"
예제 #8
0
 def test_crypt_file_ok(self):
     crypt = CryptFernet()
     crypt.generate_key("mypassword", True)
     message = "My crypt message"
     encrypt_message = crypt.encrypt(message)
     assert message == crypt.decrypt(str(encrypt_message, encoding="utf-8"))
     crypt.delete_key()
예제 #9
0
 def run(self):
     crypt = Crypt()
     if self.create_key:
         path = crypt._loader.get_path_from_env()  # pylint: disable=protected-access
         pwd = self.get_input("Type a password to generate the key file: ")
         # Should use yes_no_input insted of get input below
         # the result should be validated for Yes (Y|y) rather allowing anything other than 'n'
         generate_file = self.get_input(
             "Do you want to generate a file in {}? [Y/n]".format(path))
         generate_file = generate_file.lower() != "n"
         key = crypt.generate_key(pwd, generate_file)
         if generate_file:
             self.print_ok("File {} generated OK".format(path))
         else:
             self.print_ok("Key generated: {}".format(key))
     if self.encrypt:
         # Spoted Unhandle exceptions - The encrypt function throws FileDoesNotExistException, ValueError
         # which are not currently handled
         encrypted = crypt.encrypt(self.encrypt)
         self.print_ok("Encrypted OK: {}".format(encrypted))
     if self.startproject:
         check_package_exists("cookiecutter")
         cookiecutter = import_from("cookiecutter.main", "cookiecutter")
         cookiecutter("gh:python-microservices/cookiecutter-pyms",
                      checkout=self.branch)
         self.print_ok("Created project OK")
     if self.merge_swagger:
         try:
             merge_swagger_file(main_file=self.file)
             self.print_ok("Swagger file generated [swagger-complete.yaml]")
         except FileNotFoundError as ex:
             self.print_error(ex.__str__())
             return False
     if self.create_config:
         use_requests = self.yes_no_input("Do you want to use request")
         use_swagger = self.yes_no_input("Do you want to use swagger")
         try:
             conf_file_path = create_conf_file(use_requests, use_swagger)
             self.print_ok(f'Config file "{conf_file_path}" created')
             return True
         except Exception as ex:
             self.print_error(ex.__str__())
             return False
     return True
예제 #10
0
파일: main.py 프로젝트: f-arruza/pyms
 def run(self):
     crypt = Crypt()
     if self.create_key:
         path = crypt._loader.get_path_from_env()  # pylint: disable=protected-access
         pwd = self.get_input('Type a password to generate the key file: ')
         generate_file = self.get_input('Do you want to generate a file in {}? [Y/n]'.format(path))
         generate_file = generate_file.lower() != "n"
         key = crypt.generate_key(pwd, generate_file)
         if generate_file:
             self.print_ok("File {} generated OK".format(path))
         else:
             self.print_ok("Key generated: {}".format(key))
     if self.encrypt:
         encrypted = crypt.encrypt(self.encrypt)
         self.print_ok("Encrypted OK: {}".format(encrypted))
     if self.startproject:
         check_package_exists("cookiecutter")
         cookiecutter = import_from("cookiecutter.main", "cookiecutter")
         cookiecutter('gh:python-microservices/cookiecutter-pyms', checkout=self.branch)
         self.print_ok("Created project OK")
     return True
예제 #11
0
파일: test_crypt.py 프로젝트: pkjmesra/pyms
 def setUp(self):
     os.environ[CONFIGMAP_FILE_ENVIRONMENT] = os.path.join(
         os.path.dirname(os.path.abspath(__file__)), "config-tests-flask-encrypted-fernet.yml"
     )
     os.environ[CRYPT_FILE_KEY_ENVIRONMENT] = os.path.join(self.BASE_DIR, "key.key")
     self.crypt = CryptFernet(path=self.BASE_DIR)
     self.crypt._loader.put_file(b"9IXx2F5d5Ob-h5xdCnFSUXhuFKLGRibvLfSbixpcfCw=", "wb")
     ms = MyMicroserviceNoSingleton(path=__file__)
     ms.reload_conf()
     self.app = ms.create_app()
     self.client = self.app.test_client()
     self.assertEqual("Python Microservice With Flask encrypted", self.app.config["APP_NAME"])
예제 #12
0
 def test_crypt_file_ok(self):
     crypt = Crypt()
     crypt.generate_key("mypassword", True)
     arguments = ["encrypt", "prueba"]
     cmd = Command(arguments=arguments, autorun=False)
     cmd.run()
     crypt.delete_key()