-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
FEATURE MYJSL-369: Use compatabile secrets to install (#367)
* FEATURE MYJSL-369: Use compatabile secrets to install * FEATURE MYJSL-369: Refactor code * FEATURE MYJSL-369: Add tests to cover functionality
- Loading branch information
1 parent
d9a700c
commit 29eb65d
Showing
4 changed files
with
187 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
import os | ||
import unittest | ||
from unittest.mock import patch | ||
|
||
from johnsnowlabs import nlp, settings | ||
from johnsnowlabs.py_models.jsl_secrets import JslSecrets | ||
|
||
|
||
class EnforceVersions(unittest.TestCase): | ||
def setUp(self) -> None: | ||
nlp.settings.enforce_versions=True | ||
|
||
@patch("johnsnowlabs.py_models.jsl_secrets.JslSecrets.enforce_versions") | ||
def test_should_try_to_enforce_versions(self, mock_enforce_versions): | ||
nlp.install(med_license=os.environ.get("TEST_VALID_LICENSE"), only_refresh_credentials=True, refresh_install=True) | ||
self.assertTrue(mock_enforce_versions.called) | ||
|
||
def test_should_install_compatible_secrets_with_valid_license(self): | ||
nlp.install(med_license=os.environ.get("TEST_VALID_LICENSE"), only_refresh_credentials=True, refresh_install=True) | ||
secrets = JslSecrets.from_jsl_home() | ||
self.assertEqual(secrets.HC_LICENSE, os.environ.get("TEST_VALID_LICENSE")) | ||
self.assertEqual(secrets.HC_VERSION, settings.raw_version_secret_medical) | ||
self.assertEqual(secrets.OCR_VERSION, settings.raw_version_secret_ocr) | ||
|
||
def test_should_fallback_to_existing_secrets_with_invalid_license(self): | ||
nlp.install(med_license=os.environ.get("TEST_INVALID_LICENSE"), | ||
ocr_secret="random-ocr-secret", | ||
enterprise_nlp_secret="random-medical-secret", | ||
only_refresh_credentials=True, refresh_install=True) | ||
secrets = JslSecrets.from_jsl_home() | ||
self.assertTrue(secrets.HC_LICENSE, os.environ.get("TEST_INVALID_LICENSE")) | ||
self.assertEqual(secrets.HC_SECRET, "random-medical-secret") | ||
self.assertEqual(secrets.OCR_SECRET, "random-ocr-secret") | ||
|
||
|
||
class DonotEnforceVersions(unittest.TestCase): | ||
def setUp(self) -> None: | ||
nlp.settings.enforce_versions=False | ||
self.enterprise_nlp_secret = "nlp_random" | ||
self.ocr_secret = "ocr_random" | ||
|
||
def test_should_install_incompatible_secrets_from_input(self): | ||
nlp.install(med_license=os.environ.get("TEST_VALID_LICENSE"),ocr_secret=self.ocr_secret, enterprise_nlp_secret=self.enterprise_nlp_secret, visual=True , only_refresh_credentials=True, refresh_install=True) | ||
secrets = JslSecrets.from_jsl_home() | ||
self.assertEqual(secrets.HC_LICENSE, os.environ.get("TEST_VALID_LICENSE")) | ||
self.assertEqual(secrets.HC_SECRET, self.enterprise_nlp_secret) | ||
self.assertEqual(secrets.OCR_SECRET, self.ocr_secret) | ||
|
||
@patch("johnsnowlabs.py_models.jsl_secrets.JslSecrets.enforce_versions") | ||
@patch("johnsnowlabs.py_models.jsl_secrets.JslSecrets.is_ocr_secret_correct_version") | ||
@patch("johnsnowlabs.py_models.jsl_secrets.JslSecrets.is_hc_secret_correct_version") | ||
def test_should_not_try_to_enforce_versions_if_input_secrets_are_compatible(self, mock_hc_secret_correct, mock_ocr_secret_correct, mock_enforce_versions): | ||
nlp.install(med_license=os.environ.get("TEST_VALID_LICENSE"), only_refresh_credentials=True, refresh_install=True) | ||
mock_hc_secret_correct.return_value = True | ||
mock_ocr_secret_correct.return_value = True | ||
self.assertFalse(mock_enforce_versions.called) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
import unittest | ||
from unittest.mock import patch | ||
|
||
from johnsnowlabs import settings | ||
from johnsnowlabs.py_models.jsl_secrets import JslSecrets | ||
from johnsnowlabs.utils.my_jsl_api import LibSecretResponse | ||
|
||
|
||
class JslSecretsTestCase(unittest.TestCase): | ||
def setUp(self): | ||
self.license = "license" | ||
self.valid_healthcare_secret = settings.raw_version_secret_medical+ "-healthcare-secret" | ||
self.valid_ocr_secret = settings.raw_version_secret_ocr + "-ocr-secret" | ||
|
||
@patch("johnsnowlabs.py_models.jsl_secrets.get_secrets") | ||
def test_enforce_versions_should_retrieve_matching_secrets(self, mock_get_secrets): | ||
mock_get_secrets.return_value = [ | ||
LibSecretResponse( | ||
product="Healthcare NLP", | ||
version=settings.raw_version_secret_medical, | ||
secret=self.valid_healthcare_secret, | ||
isLatest=True, | ||
), | ||
LibSecretResponse( | ||
product="Visual NLP", | ||
version=settings.raw_version_secret_ocr, | ||
secret=self.valid_ocr_secret, | ||
isLatest=True, | ||
), | ||
LibSecretResponse( | ||
product="Healthcare NLP", | ||
version="x.x", | ||
secret="healthcare-invalid-secret", | ||
isLatest=False, | ||
), | ||
LibSecretResponse( | ||
product="Visual NLP", | ||
version="x.x", | ||
secret="ocr-invalid-secret", | ||
isLatest=False, | ||
), | ||
] | ||
secrets = JslSecrets.enforce_versions(JslSecrets(OCR_LICENSE=self.license)) | ||
self.assertEqual(secrets.OCR_LICENSE, self.license) | ||
self.assertEqual(secrets.HC_VERSION, settings.raw_version_secret_medical) | ||
self.assertEqual(secrets.OCR_VERSION, settings.raw_version_secret_ocr) | ||
self.assertEqual(secrets.HC_SECRET, self.valid_healthcare_secret) | ||
self.assertEqual(secrets.OCR_SECRET, self.valid_ocr_secret) | ||
|
||
|
||
@patch("johnsnowlabs.py_models.jsl_secrets.get_secrets") | ||
def test_should_return_existing_secret_if_no_matching_secret_found(self, mock_get_secrets): | ||
existing_secrets = JslSecrets(HC_LICENSE=self.license, OCR_SECRET="ocr-invalid-secret", HC_SECRET="healthcare-invalid-secret") | ||
mock_get_secrets.return_value = [ | ||
LibSecretResponse( | ||
product="Healthcare NLP", | ||
version="x.x", | ||
secret="healthcare-invalid-secret", | ||
isLatest=False, | ||
), | ||
LibSecretResponse( | ||
product="Visual NLP", | ||
version="x.x", | ||
secret="ocr-invalid-secret", | ||
isLatest=False, | ||
), | ||
] | ||
secrets = JslSecrets.enforce_versions(existing_secrets) | ||
self.assertEqual(secrets.HC_LICENSE, self.license) | ||
self.assertEqual(secrets.HC_SECRET, existing_secrets.HC_SECRET) | ||
self.assertEqual(secrets.OCR_SECRET,existing_secrets.OCR_SECRET) | ||
|