Skip to content

Commit 86ee607

Browse files
committed
added Deploy__Serverless_S3_Browser and respective aws and localstack tests
1 parent dbe63d4 commit 86ee607

File tree

8 files changed

+147
-5
lines changed

8 files changed

+147
-5
lines changed

.github/workflows/ci-pipeline__dev.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
- name: "run-tests"
2727
uses: owasp-sbot/OSBot-GitHub-Actions/.github/actions/pytest__run-tests@dev # run tests (which use Local Stack)
2828
with:
29-
test_target: "tests"
29+
test_target: "tests/unit"
3030
env:
3131
FAST_API__AUTH__API_KEY__NAME : 'api-key__in_github_test'
3232
FAST_API__AUTH__API_KEY__VALUE : 'this-is-the-value-of-the-api-key'

.github/workflows/ci-pipeline__main.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,12 @@ jobs:
2424
LOCAL_STACK_SERVICES: 's3,lambda,iam,logs'
2525

2626
- name: "run-tests"
27-
uses: owasp-sbot/OSBot-GitHub-Actions/.github/actions/pytest__run-tests@dev
27+
uses: owasp-sbot/OSBot-GitHub-Actions/.github/actions/pytest__run-tests@dev # run tests (which use Local Stack)
28+
with:
29+
test_target: "tests/unit"
30+
env:
31+
FAST_API__AUTH__API_KEY__NAME : 'api-key__in_github_test'
32+
FAST_API__AUTH__API_KEY__VALUE : 'this-is-the-value-of-the-api-key'
2833

2934
increment-tag:
3035
name: Increment Tag - Main

osbot_serverless_s3_browser/fast_api/lambda_handler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from osbot_aws.aws.lambda_.boto3__lambda import load_dependencies
2-
3-
LAMBDA_DEPENDENCIES = ['osbot-fast-api==0.7.32', 'mangum'] #'fastapi',
2+
#
3+
LAMBDA_DEPENDENCIES = ['osbot-fast-api-serverless']
44

55
load_dependencies(LAMBDA_DEPENDENCIES)
66

osbot_serverless_s3_browser/utils/deploy/Deploy__Serverless_S3_Browser.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
1+
from osbot_fast_api_serverless.deploy.Deploy__Serverless__Fast_API import Deploy__Serverless__Fast_API
2+
from osbot_serverless_s3_browser.fast_api.lambda_handler import run
3+
4+
LAMBDA_NAME__SERVERLESS_S3_BROWSER = 'serverless-s3-browser'
5+
LAMBDA_DEPENDENCIES__SERVERLESS_S3_BROWSER = ['osbot-fast-api-serverless']
6+
7+
class Deploy__Serverless_S3_Browser(Deploy__Serverless__Fast_API):
8+
9+
def handler(self):
10+
return run
11+
12+
def lambda_dependencies(self):
13+
return LAMBDA_DEPENDENCIES__SERVERLESS_S3_BROWSER
14+
15+
def lambda_name(self):
16+
return LAMBDA_NAME__SERVERLESS_S3_BROWSER
17+
118
# from osbot_utils.helpers.Random_Guid import Random_Guid
219
# from osbot_utils.utils.Env import get_env
320
# from osbot_fast_api.api.Fast_API import ENV_VAR__FAST_API__AUTH__API_KEY__NAME, ENV_VAR__FAST_API__AUTH__API_KEY__VALUE
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import pytest
2+
from unittest import TestCase
3+
4+
from osbot_serverless_s3_browser.utils.Version import version__osbot_serverless_s3_browser
5+
from osbot_utils.utils.Misc import list_set
6+
7+
from osbot_fast_api_serverless.utils.Version import version__osbot_fast_api_serverless
8+
from osbot_fast_api_serverless.deploy.Deploy__Serverless__Fast_API import DEFAULT__ERROR_MESSAGE__WHEN_FAST_API_IS_OK
9+
from osbot_serverless_s3_browser.utils.deploy.Deploy__Serverless_S3_Browser import Deploy__Serverless_S3_Browser, \
10+
LAMBDA_DEPENDENCIES__SERVERLESS_S3_BROWSER
11+
12+
13+
class test_Deploy__Serverless_S3_Browser__to__dev__qa__prod(TestCase):
14+
@classmethod
15+
def setUpClass(cls):
16+
cls.deploy_fast_api__dev = Deploy__Serverless_S3_Browser(stage = 'dev')
17+
18+
with cls.deploy_fast_api__dev as _:
19+
if _.aws_config.aws_configured() is False:
20+
pytest.skip("this test needs valid AWS credentials")
21+
22+
def test_1__check_stages(self):
23+
assert self.deploy_fast_api__dev .stage == 'dev'
24+
25+
def test_2__upload_dependencies(self):
26+
upload_results = self.deploy_fast_api__dev.upload_lambda_dependencies_to_s3()
27+
assert list_set(upload_results) == LAMBDA_DEPENDENCIES__SERVERLESS_S3_BROWSER
28+
29+
def test_3__create(self):
30+
assert self.deploy_fast_api__dev .create() is True
31+
32+
def test_4__invoke(self):
33+
assert self.deploy_fast_api__dev .invoke().get('errorMessage') == DEFAULT__ERROR_MESSAGE__WHEN_FAST_API_IS_OK
34+
35+
def test_4__invoke__function_url(self):
36+
version = {'version': version__osbot_serverless_s3_browser}
37+
assert self.deploy_fast_api__dev .invoke__function_url('/info/version') == version
38+
39+
# def test_4__delete(self):
40+
# assert self.deploy_fast_api__dev .delete() is True
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import pytest
2+
from unittest import TestCase
3+
from osbot_fast_api_serverless.deploy.Deploy__Serverless__Fast_API import DEFAULT__ERROR_MESSAGE__WHEN_FAST_API_IS_OK
4+
from osbot_serverless_s3_browser.utils.Version import version__osbot_serverless_s3_browser
5+
from osbot_serverless_s3_browser.utils.deploy.Deploy__Serverless_S3_Browser import Deploy__Serverless_S3_Browser
6+
7+
8+
class test_Deploy__Serverless_S3_Browser__to__dev__qa__prod(TestCase):
9+
@classmethod
10+
def setUpClass(cls):
11+
cls.deploy_fast_api__dev = Deploy__Serverless_S3_Browser(stage = 'dev')
12+
cls.deploy_fast_api__qa = Deploy__Serverless_S3_Browser(stage = 'qa')
13+
cls.deploy_fast_api__prod = Deploy__Serverless_S3_Browser(stage = 'prod')
14+
15+
with cls.deploy_fast_api__dev as _:
16+
if _.aws_config.aws_configured() is False:
17+
pytest.skip("this test needs valid AWS credentials")
18+
19+
def test_1__check_stages(self):
20+
assert self.deploy_fast_api__dev .stage == 'dev'
21+
assert self.deploy_fast_api__qa .stage == 'qa'
22+
assert self.deploy_fast_api__prod.stage == 'prod'
23+
24+
def test_2__create(self):
25+
assert self.deploy_fast_api__dev .create() is True
26+
assert self.deploy_fast_api__qa .create() is True
27+
assert self.deploy_fast_api__prod.create() is True
28+
29+
def test_3__invoke(self):
30+
assert self.deploy_fast_api__dev .invoke().get('errorMessage') == DEFAULT__ERROR_MESSAGE__WHEN_FAST_API_IS_OK
31+
assert self.deploy_fast_api__qa .invoke().get('errorMessage') == DEFAULT__ERROR_MESSAGE__WHEN_FAST_API_IS_OK
32+
assert self.deploy_fast_api__prod.invoke().get('errorMessage') == DEFAULT__ERROR_MESSAGE__WHEN_FAST_API_IS_OK
33+
34+
def test_3__invoke__function_url(self):
35+
version = {'version': version__osbot_serverless_s3_browser}
36+
assert self.deploy_fast_api__dev .invoke__function_url('/info/version') == version
37+
assert self.deploy_fast_api__qa .invoke__function_url('/info/version') == version
38+
assert self.deploy_fast_api__prod.invoke__function_url('/info/version') == version
39+
40+
# def test_4__delete(self):
41+
# assert self.deploy_fast_api__dev .delete() is True
42+
# assert self.deploy_fast_api__qa .delete() is True
43+
# assert self.deploy_fast_api__prod.delete() is True
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from unittest import TestCase
2+
3+
from osbot_aws.testing.skip_tests import skip__if_not__in_github_actions
4+
from osbot_fast_api_serverless.deploy.Deploy__Serverless__Fast_API import DEFAULT__ERROR_MESSAGE__WHEN_FAST_API_IS_OK
5+
from osbot_utils.utils.Misc import list_set
6+
from osbot_fast_api_serverless.utils.Version import version__osbot_fast_api_serverless
7+
from osbot_serverless_s3_browser.utils.deploy.Deploy__Serverless_S3_Browser import Deploy__Serverless_S3_Browser, LAMBDA_DEPENDENCIES__SERVERLESS_S3_BROWSER
8+
from tests.s3_browser__objs_for_tests import setup_local_stack
9+
10+
11+
class test_Deploy__Serverless_S3_Browser__to__dev(TestCase):
12+
13+
@classmethod
14+
def setUpClass(cls):
15+
skip__if_not__in_github_actions()
16+
setup_local_stack()
17+
cls.deploy_fast_api__dev = Deploy__Serverless_S3_Browser(stage = 'dev')
18+
19+
def test_1__check_stages(self):
20+
assert self.deploy_fast_api__dev .stage == 'dev'
21+
22+
def test_2__upload_dependencies(self): # add support for Lambda_Layer_Create.remove_preinstalled_packages_in_lambda_environment
23+
upload_results = self.deploy_fast_api__dev.upload_lambda_dependencies_to_s3()
24+
assert list_set(upload_results) == LAMBDA_DEPENDENCIES__SERVERLESS_S3_BROWSER
25+
26+
def test_3__create(self):
27+
assert self.deploy_fast_api__dev .create() is True
28+
29+
def test_4__invoke(self):
30+
assert self.deploy_fast_api__dev .invoke().get('errorMessage') == DEFAULT__ERROR_MESSAGE__WHEN_FAST_API_IS_OK
31+
32+
def test_5__invoke__function_url(self):
33+
version = {'version': version__osbot_fast_api_serverless}
34+
assert self.deploy_fast_api__dev .invoke__function_url('/info/version') == version
35+
36+
def test_6__delete(self):
37+
assert self.deploy_fast_api__dev .delete() is True

0 commit comments

Comments
 (0)