zrb 0.6.0__py3-none-any.whl → 0.6.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zrb/__init__.py +24 -20
- zrb/__main__.py +5 -5
- zrb/action/runner.py +22 -30
- zrb/advertisement.py +10 -9
- zrb/builtin/__init__.py +18 -16
- zrb/builtin/base64.py +13 -18
- zrb/builtin/devtool/__init__.py +14 -3
- zrb/builtin/devtool/devtool_install.py +207 -221
- zrb/builtin/env.py +9 -12
- zrb/builtin/eval.py +9 -9
- zrb/builtin/explain.py +73 -74
- zrb/builtin/generator/__init__.py +7 -11
- zrb/builtin/generator/app_generator/add.py +86 -87
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/add.py +78 -77
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_checker.py +6 -6
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_common.py +14 -15
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/container.py +32 -32
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/deployment.py +29 -30
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/image.py +1 -3
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +5 -4
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/__main__.py +24 -32
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/add.py +89 -87
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_common.py +14 -15
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/container.py +42 -54
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/deployment.py +34 -32
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/image.py +19 -22
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +18 -18
- zrb/builtin/generator/app_generator/template/http-port/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_checker.py +10 -10
- zrb/builtin/generator/app_generator/template/http-port-build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +19 -19
- zrb/builtin/generator/app_generator/template/use-helm/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/__main__.py +12 -14
- zrb/builtin/generator/cmd_task/add.py +23 -25
- zrb/builtin/generator/cmd_task/template/_automate/snake_zrb_task_name.py +3 -5
- zrb/builtin/generator/common/helper.py +15 -20
- zrb/builtin/generator/common/task_factory.py +29 -26
- zrb/builtin/generator/common/task_input.py +97 -91
- zrb/builtin/generator/docker_compose_task/add.py +38 -39
- zrb/builtin/generator/docker_compose_task/template/_automate/snake_zrb_task_name.py +13 -19
- zrb/builtin/generator/docker_compose_task/template/src/kebab-zrb-task-name/image/main.py +18 -14
- zrb/builtin/generator/fastapp/add.py +94 -90
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_checker.py +28 -27
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_config.py +68 -39
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_env.py +24 -22
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_env_file.py +12 -12
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_get_start_microservices.py +43 -41
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_helper.py +23 -24
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_input.py +21 -20
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-load-test.sh +1 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-start.sh +1 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-test.sh +2 -2
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/container.py +46 -39
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/deployment.py +28 -20
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/frontend.py +21 -27
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/image.py +23 -18
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/load_test.py +35 -36
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/local.py +68 -58
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/test.py +24 -38
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/__main__.py +23 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/_common.py +72 -75
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/app_helper.py +70 -75
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_postgresql_helper.py +18 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_rabbitmq_helper.py +11 -19
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_redpanda_helper.py +18 -15
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_signoz_helper.py +17 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/docker-compose.yml +12 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/loadtest/locustfile.py +10 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/Dockerfile +1 -0
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app.py +35 -30
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app_lifespan.py +21 -17
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app_state.py +3 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/db_connection.py +18 -20
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/frontend_index.py +5 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/log.py +7 -15
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/messagebus.py +38 -34
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/rpc.py +19 -18
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/config.py +68 -103
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/error.py +11 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/__init__.py +2 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/admin.py +38 -35
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/consumer.py +38 -45
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/publisher.py +26 -29
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/messagebus.py +8 -14
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/mock.py +12 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/admin.py +37 -44
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/consumer.py +42 -67
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/publisher.py +32 -55
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/model/repo_model.py +11 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/__init__.py +2 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/db_entity_mixin.py +3 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/db_repo.py +76 -83
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/repo.py +5 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/search_filter.py +1 -0
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/__init__.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/messagebus/caller.py +17 -19
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/messagebus/server.py +14 -18
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/rpc.py +15 -28
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/schema/__init__.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/schema/base_schema.py +6 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/serializer/__init__.py +1 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/serializer/serializer.py +3 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/async_task.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/conversion.py +10 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/migration.py +6 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/migrate.py +3 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/api.py +7 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/__init__.py +4 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/access_token_scheme.py +9 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/access_token_util.py +6 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/authorizer.py +4 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/bearer_token_scheme.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/model/user_model.py +8 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/password_hasher.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/refresh_token_util.py +7 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/group_repo.py +3 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/permission_repo.py +3 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/user_repo.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/user.py +12 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/__init__.py +7 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/access_token/scheme.py +7 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/access_token/util.py +20 -30
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/authorizer/authorizer.py +1 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/authorizer/rpc_authorizer.py +5 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/password_hasher/bcrypt_password_hasher.py +3 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/password_hasher/password_hasher.py +0 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/refresh_token/util.py +15 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/api.py +42 -49
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/model.py +3 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/repo.py +18 -16
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/rpc.py +26 -41
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/api.py +46 -51
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/model.py +5 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/repo.py +11 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/rpc.py +28 -45
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/table.py +10 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/api.py +60 -72
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/model.py +32 -61
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/repo.py +33 -36
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/rpc.py +42 -61
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/event.py +2 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/migrate.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/register_module.py +11 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/register_permission.py +19 -26
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/rpc.py +5 -13
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/group.py +6 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/permission.py +3 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/request.py +1 -0
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/token.py +2 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/user.py +4 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/api.py +4 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/component/model/activity_model.py +3 -9
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/component/repo/activity_repo.py +3 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/core/historical_repo_model.py +13 -13
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/api.py +22 -23
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/event.py +5 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/model.py +2 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/repo.py +8 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/rpc.py +28 -45
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/table.py +3 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/event.py +4 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/migrate.py +2 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/register_module.py +10 -11
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/rpc.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/schema/activity.py +3 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/requirements.txt +12 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_group_crud.py +76 -106
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_permission_crud.py +73 -103
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_user_crud.py +92 -122
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_user_login.py +107 -134
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/conftest.py +2 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/test_liveness_and_readiness.py +8 -15
- zrb/builtin/generator/fastapp_crud/add.py +74 -79
- zrb/builtin/generator/fastapp_crud/helper.py +51 -48
- zrb/builtin/generator/fastapp_crud/task_factory.py +17 -14
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/component/model/snake_zrb_entity_name_model.py +2 -2
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/component/repo/snake_zrb_entity_name_repo.py +3 -2
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/api.py +58 -40
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/model.py +7 -3
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/repo.py +9 -4
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/rpc.py +32 -39
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/schema/snake_zrb_entity_name.py +3 -1
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/test/snake_zrb_module_name/test_snake_zrb_entity_name.py +68 -98
- zrb/builtin/generator/fastapp_field/add.py +143 -85
- zrb/builtin/generator/fastapp_field/helper.py +184 -125
- zrb/builtin/generator/fastapp_module/add.py +90 -67
- zrb/builtin/generator/fastapp_module/helper.py +141 -155
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/api.py +3 -2
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/table.py +3 -3
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/event.py +3 -5
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/migrate.py +2 -4
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/register_module.py +10 -11
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/rpc.py +3 -5
- zrb/builtin/generator/pip_package/add.py +39 -40
- zrb/builtin/generator/pip_package/template/_automate/snake_zrb_package_name/local.py +30 -30
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__init__.py +1 -0
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__main__.py +1 -0
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/util.py +2 -2
- zrb/builtin/generator/plugin/create.py +39 -36
- zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/__init__.py +1 -1
- zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/__main__.py +1 -0
- zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/task/example_task.py +6 -4
- zrb/builtin/generator/plugin/template/zrb_init.py +27 -27
- zrb/builtin/generator/project/create.py +38 -46
- zrb/builtin/generator/project/template/.flake8 +3 -0
- zrb/builtin/generator/project/template/project.sh +19 -10
- zrb/builtin/generator/project_task/task_factory.py +60 -61
- zrb/builtin/generator/project_task/template/_automate/_project/__init__.py +2 -2
- zrb/builtin/generator/project_task/template/_automate/_project/build_project_images.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/deploy_project.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/destroy_project.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/push_project_images.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/remove_project_containers.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/start_project.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/start_project_containers.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/stop_project_containers.py +4 -4
- zrb/builtin/generator/python_task/add.py +25 -33
- zrb/builtin/generator/python_task/template/_automate/snake_zrb_task_name.py +8 -7
- zrb/builtin/generator/simple_python_app/add.py +81 -75
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/_common.py +14 -15
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/container.py +46 -61
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/deployment.py +34 -32
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/image.py +19 -22
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/local.py +23 -25
- zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/deployment/__main__.py +24 -32
- zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/src/main.py +18 -14
- zrb/builtin/git.py +46 -46
- zrb/builtin/group.py +13 -34
- zrb/builtin/helper/reccuring_action.py +26 -29
- zrb/builtin/md5.py +17 -30
- zrb/builtin/process.py +19 -19
- zrb/builtin/project.py +13 -15
- zrb/builtin/say.py +69 -88
- zrb/builtin/schedule.py +15 -19
- zrb/builtin/ubuntu.py +44 -35
- zrb/builtin/update.py +5 -5
- zrb/builtin/version.py +3 -7
- zrb/builtin/watch_changes.py +24 -25
- zrb/config/config.py +19 -18
- zrb/helper/accessories/color.py +18 -6
- zrb/helper/accessories/icon.py +24 -3
- zrb/helper/accessories/name.py +120 -28
- zrb/helper/advertisement.py +9 -13
- zrb/helper/callable.py +2 -4
- zrb/helper/cli.py +27 -31
- zrb/helper/codemod/add_argument_to_function.py +3 -4
- zrb/helper/codemod/add_argument_to_function_call.py +4 -7
- zrb/helper/codemod/add_assert_resource.py +7 -7
- zrb/helper/codemod/add_function_call.py +3 -5
- zrb/helper/codemod/add_import_module.py +15 -26
- zrb/helper/codemod/add_key_value_to_dict.py +7 -10
- zrb/helper/codemod/add_property_to_class.py +10 -8
- zrb/helper/codemod/add_upstream_to_task.py +21 -33
- zrb/helper/codemod/append_code_to_function.py +6 -13
- zrb/helper/codemod/format_code.py +2 -1
- zrb/helper/default_env.py +25 -25
- zrb/helper/docker_compose/fetch_external_env.py +18 -18
- zrb/helper/docker_compose/file.py +5 -4
- zrb/helper/docstring.py +44 -47
- zrb/helper/env_map/fetch.py +7 -12
- zrb/helper/file/copy_tree.py +12 -17
- zrb/helper/file/match.py +6 -7
- zrb/helper/file/text.py +8 -6
- zrb/helper/git/detect_changes.py +9 -8
- zrb/helper/loader/load_module.py +14 -13
- zrb/helper/log.py +4 -3
- zrb/helper/map/conversion.py +4 -5
- zrb/helper/python_task.py +2 -4
- zrb/helper/render_data.py +25 -18
- zrb/helper/string/constant.py +2 -2
- zrb/helper/string/conversion.py +17 -16
- zrb/helper/string/jinja.py +2 -2
- zrb/helper/typecheck.py +6 -4
- zrb/helper/typing.py +10 -2
- zrb/helper/util.py +44 -40
- zrb/task/any_task.py +251 -251
- zrb/task/base_remote_cmd_task.py +76 -59
- zrb/task/base_task/base_task.py +95 -108
- zrb/task/base_task/component/base_task_model.py +73 -71
- zrb/task/base_task/component/common_task_model.py +42 -29
- zrb/task/base_task/component/pid_model.py +3 -5
- zrb/task/base_task/component/renderer.py +26 -36
- zrb/task/base_task/component/trackers.py +6 -9
- zrb/task/checker.py +14 -9
- zrb/task/cmd_task.py +102 -100
- zrb/task/decorator.py +19 -13
- zrb/task/docker_compose_task.py +127 -98
- zrb/task/flow_task.py +16 -19
- zrb/task/http_checker.py +40 -36
- zrb/task/notifier.py +50 -38
- zrb/task/parallel.py +3 -3
- zrb/task/path_checker.py +34 -27
- zrb/task/path_watcher.py +49 -40
- zrb/task/port_checker.py +33 -26
- zrb/task/recurring_task.py +36 -42
- zrb/task/remote_cmd_task.py +31 -28
- zrb/task/resource_maker.py +66 -52
- zrb/task/rsync_task.py +24 -21
- zrb/task/task.py +4 -3
- zrb/task/time_watcher.py +36 -31
- zrb/task_env/constant.py +1 -1
- zrb/task_env/env.py +33 -31
- zrb/task_env/env_file.py +24 -23
- zrb/task_group/group.py +27 -30
- zrb/task_input/any_input.py +18 -16
- zrb/task_input/base_input.py +26 -26
- zrb/task_input/bool_input.py +6 -6
- zrb/task_input/choice_input.py +11 -9
- zrb/task_input/constant.py +1 -1
- zrb/task_input/float_input.py +6 -5
- zrb/task_input/int_input.py +8 -8
- zrb/task_input/password_input.py +9 -9
- zrb/task_input/str_input.py +8 -8
- zrb/task_input/task_input.py +4 -2
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/METADATA +3 -1
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/RECORD +316 -315
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/LICENSE +0 -0
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/WHEEL +0 -0
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/entry_points.txt +0 -0
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/repo.py
CHANGED
@@ -1,12 +1,14 @@
|
|
1
|
-
from
|
2
|
-
from core.repo import Repo, DBEntityMixin, DBRepo
|
3
|
-
from module.log.schema.activity import (
|
4
|
-
Activity, ActivityData
|
5
|
-
)
|
1
|
+
from core.repo import DBEntityMixin, DBRepo, Repo
|
6
2
|
from module.log.component import Base
|
3
|
+
from module.log.schema.activity import Activity, ActivityData
|
4
|
+
from sqlalchemy import Column, String, Text
|
7
5
|
|
8
6
|
|
9
7
|
class DBEntityActivity(Base, DBEntityMixin):
|
8
|
+
class Config:
|
9
|
+
orm_mode = True
|
10
|
+
from_attributes = True
|
11
|
+
|
10
12
|
__tablename__ = "activities"
|
11
13
|
action = Column(String)
|
12
14
|
entity: Column = Column(String)
|
@@ -17,8 +19,6 @@ class ActivityRepo(Repo[Activity, ActivityData]):
|
|
17
19
|
pass
|
18
20
|
|
19
21
|
|
20
|
-
class ActivityDBRepo(
|
21
|
-
DBRepo[Activity, ActivityData], ActivityRepo
|
22
|
-
):
|
22
|
+
class ActivityDBRepo(DBRepo[Activity, ActivityData], ActivityRepo):
|
23
23
|
schema_cls = Activity
|
24
24
|
db_entity_cls = DBEntityActivity
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/rpc.py
CHANGED
@@ -1,79 +1,62 @@
|
|
1
|
-
from typing import Any, Mapping
|
2
1
|
from logging import Logger
|
2
|
+
from typing import Any, Mapping
|
3
|
+
|
3
4
|
from core.messagebus import Publisher
|
4
|
-
from core.rpc import Caller, Server
|
5
5
|
from core.repo import SearchFilter
|
6
|
-
from
|
7
|
-
activity_model
|
8
|
-
)
|
9
|
-
from module.log.schema.activity import ActivityData
|
6
|
+
from core.rpc import Caller, Server
|
10
7
|
from module.auth.schema.token import AccessTokenData
|
8
|
+
from module.log.component.model.activity_model import activity_model
|
9
|
+
from module.log.schema.activity import ActivityData
|
11
10
|
|
12
11
|
|
13
12
|
def register_rpc(
|
14
|
-
logger: Logger,
|
15
|
-
rpc_server: Server,
|
16
|
-
rpc_caller: Caller,
|
17
|
-
publisher: Publisher
|
13
|
+
logger: Logger, rpc_server: Server, rpc_caller: Caller, publisher: Publisher
|
18
14
|
):
|
19
15
|
logger.info('🥪 Register RPC handlers for "log.activity"')
|
20
16
|
|
21
|
-
@rpc_server.register(
|
17
|
+
@rpc_server.register("log_get_activity")
|
22
18
|
async def get(
|
23
19
|
keyword: str,
|
24
20
|
criterion: Mapping[str, Any],
|
25
21
|
limit: int,
|
26
22
|
offset: int,
|
27
|
-
user_token_data: Mapping[str, Any]
|
23
|
+
user_token_data: Mapping[str, Any],
|
28
24
|
) -> Mapping[str, Any]:
|
29
25
|
result = await activity_model.get(
|
30
|
-
search_filter=SearchFilter(
|
31
|
-
keyword=keyword, criterion=criterion
|
32
|
-
),
|
26
|
+
search_filter=SearchFilter(keyword=keyword, criterion=criterion),
|
33
27
|
limit=limit,
|
34
|
-
offset=offset
|
28
|
+
offset=offset,
|
35
29
|
)
|
36
|
-
return result.
|
30
|
+
return result.model_dump()
|
37
31
|
|
38
|
-
@rpc_server.register(
|
32
|
+
@rpc_server.register("log_get_activity_by_id")
|
39
33
|
async def get_by_id(
|
40
|
-
id: str,
|
41
|
-
user_token_data: Mapping[str, Any] = {}
|
34
|
+
id: str, user_token_data: Mapping[str, Any] = {}
|
42
35
|
) -> Mapping[str, Any]:
|
43
36
|
row = await activity_model.get_by_id(id)
|
44
|
-
return row.
|
37
|
+
return row.model_dump()
|
45
38
|
|
46
|
-
@rpc_server.register(
|
39
|
+
@rpc_server.register("log_insert_activity")
|
47
40
|
async def insert(
|
48
|
-
data: Mapping[str, Any],
|
49
|
-
user_token_data: Mapping[str, Any]
|
41
|
+
data: Mapping[str, Any], user_token_data: Mapping[str, Any]
|
50
42
|
) -> Mapping[str, Any]:
|
51
43
|
user_token_data = AccessTokenData(**user_token_data)
|
52
|
-
data[
|
53
|
-
data[
|
54
|
-
row = await activity_model.insert(
|
55
|
-
|
56
|
-
)
|
57
|
-
return row.dict()
|
44
|
+
data["created_by"] = user_token_data.user_id
|
45
|
+
data["updated_by"] = user_token_data.user_id
|
46
|
+
row = await activity_model.insert(data=ActivityData(**data))
|
47
|
+
return row.model_dump()
|
58
48
|
|
59
|
-
@rpc_server.register(
|
49
|
+
@rpc_server.register("log_update_activity")
|
60
50
|
async def update(
|
61
|
-
id: str,
|
62
|
-
data: Mapping[str, Any],
|
63
|
-
user_token_data: Mapping[str, Any]
|
51
|
+
id: str, data: Mapping[str, Any], user_token_data: Mapping[str, Any]
|
64
52
|
) -> Mapping[str, Any]:
|
65
53
|
user_token_data = AccessTokenData(**user_token_data)
|
66
|
-
data[
|
67
|
-
row = await activity_model.update(
|
68
|
-
|
69
|
-
)
|
70
|
-
return row.dict()
|
54
|
+
data["updated_by"] = user_token_data.user_id
|
55
|
+
row = await activity_model.update(id=id, data=ActivityData(**data))
|
56
|
+
return row.model_dump()
|
71
57
|
|
72
|
-
@rpc_server.register(
|
73
|
-
async def delete(
|
74
|
-
id: str,
|
75
|
-
user_token_data: Mapping[str, Any]
|
76
|
-
) -> Mapping[str, Any]:
|
58
|
+
@rpc_server.register("log_delete_activity")
|
59
|
+
async def delete(id: str, user_token_data: Mapping[str, Any]) -> Mapping[str, Any]:
|
77
60
|
user_token_data = AccessTokenData(**user_token_data)
|
78
61
|
row = await activity_model.delete(id=id)
|
79
|
-
return row.
|
62
|
+
return row.model_dump()
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/table.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
from sqlalchemy import Column, Integer, Table, ForeignKey
|
2
1
|
from module.log.component.base import Base
|
2
|
+
from sqlalchemy import Column, ForeignKey, Integer, Table
|
3
3
|
|
4
|
-
|
4
|
+
"""
|
5
5
|
You should put any "many-to-many" table declarations in this file.
|
6
6
|
For example:
|
7
7
|
```
|
@@ -15,7 +15,7 @@ user_permission = Table(
|
|
15
15
|
```
|
16
16
|
|
17
17
|
Remove the following assertions:
|
18
|
-
|
18
|
+
"""
|
19
19
|
assert Column
|
20
20
|
assert Integer
|
21
21
|
assert Table
|
@@ -1,16 +1,12 @@
|
|
1
1
|
from logging import Logger
|
2
|
-
|
2
|
+
|
3
|
+
from core.messagebus import Consumer, Publisher
|
3
4
|
from core.rpc import Caller
|
4
|
-
from module.log.entity.activity.event import
|
5
|
-
register_event as register_activity_event
|
6
|
-
)
|
5
|
+
from module.log.entity.activity.event import register_event as register_activity_event
|
7
6
|
|
8
7
|
|
9
8
|
def register_event(
|
10
|
-
logger: Logger,
|
11
|
-
consumer: Consumer,
|
12
|
-
rpc_caller: Caller,
|
13
|
-
publisher: Publisher
|
9
|
+
logger: Logger, consumer: Consumer, rpc_caller: Caller, publisher: Publisher
|
14
10
|
):
|
15
11
|
logger.info('🥪 Register event handlers for "log"')
|
16
12
|
register_activity_event(logger, consumer, rpc_caller, publisher)
|
@@ -1,8 +1,6 @@
|
|
1
|
-
from config import (
|
2
|
-
app_enable_log_module
|
3
|
-
)
|
4
|
-
from component.log import logger
|
5
1
|
from component.db_connection import engine
|
2
|
+
from component.log import logger
|
3
|
+
from config import app_enable_log_module
|
6
4
|
from helper.migration import migrate
|
7
5
|
from module.log.component import Base
|
8
6
|
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/register_module.py
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
-
from config import (
|
2
|
-
app_enable_rpc_server, app_enable_event_handler, app_enable_api,
|
3
|
-
app_enable_log_module
|
4
|
-
)
|
5
|
-
from component.log import logger
|
6
1
|
from component.app import app
|
2
|
+
from component.log import logger
|
7
3
|
from component.messagebus import consumer, publisher
|
8
4
|
from component.rpc import rpc_caller, rpc_server
|
5
|
+
from config import (
|
6
|
+
app_enable_api,
|
7
|
+
app_enable_event_handler,
|
8
|
+
app_enable_log_module,
|
9
|
+
app_enable_rpc_server,
|
10
|
+
)
|
9
11
|
from module.auth.component import authorizer
|
10
12
|
from module.log.api import register_api
|
11
13
|
from module.log.event import register_event
|
@@ -22,19 +24,16 @@ def register_log():
|
|
22
24
|
app=app,
|
23
25
|
authorizer=authorizer,
|
24
26
|
rpc_caller=rpc_caller,
|
25
|
-
publisher=publisher
|
27
|
+
publisher=publisher,
|
26
28
|
)
|
27
29
|
if app_enable_event_handler:
|
28
30
|
register_event(
|
29
|
-
logger=logger,
|
30
|
-
consumer=consumer,
|
31
|
-
rpc_caller=rpc_caller,
|
32
|
-
publisher=publisher
|
31
|
+
logger=logger, consumer=consumer, rpc_caller=rpc_caller, publisher=publisher
|
33
32
|
)
|
34
33
|
if app_enable_rpc_server:
|
35
34
|
register_rpc(
|
36
35
|
logger=logger,
|
37
36
|
rpc_server=rpc_server,
|
38
37
|
rpc_caller=rpc_caller,
|
39
|
-
publisher=publisher
|
38
|
+
publisher=publisher,
|
40
39
|
)
|
@@ -1,15 +1,13 @@
|
|
1
|
-
from typing import Any
|
2
1
|
from logging import Logger
|
2
|
+
from typing import Any
|
3
|
+
|
3
4
|
from core.messagebus import Publisher
|
4
5
|
from core.rpc import Caller, Server
|
5
6
|
from module.log.entity.activity.rpc import register_rpc as register_activity_rpc
|
6
7
|
|
7
8
|
|
8
9
|
def register_rpc(
|
9
|
-
logger: Logger,
|
10
|
-
rpc_server: Server,
|
11
|
-
rpc_caller: Caller,
|
12
|
-
publisher: Publisher
|
10
|
+
logger: Logger, rpc_server: Server, rpc_caller: Caller, publisher: Publisher
|
13
11
|
):
|
14
12
|
logger.info('🥪 Register RPC handlers for "log"')
|
15
13
|
register_activity_rpc(logger, rpc_server, rpc_caller, publisher)
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/schema/activity.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
from typing import List
|
2
|
-
|
2
|
+
|
3
|
+
from core.schema import BaseCountSchema, BaseDateTimeSchema
|
3
4
|
|
4
5
|
|
5
6
|
class ActivityData(BaseDateTimeSchema):
|
@@ -13,6 +14,7 @@ class Activity(ActivityData):
|
|
13
14
|
|
14
15
|
class Config:
|
15
16
|
orm_mode = True
|
17
|
+
from_attributes = True
|
16
18
|
|
17
19
|
|
18
20
|
class ActivityResult(BaseCountSchema):
|
@@ -1,17 +1,17 @@
|
|
1
|
-
SQLAlchemy==2.0.
|
2
|
-
aiormq==6.
|
3
|
-
aiokafka==0.
|
4
|
-
alembic==1.
|
5
|
-
bcrypt==4.
|
6
|
-
fastapi==0.
|
1
|
+
SQLAlchemy==2.0.25
|
2
|
+
aiormq==6.8.0
|
3
|
+
aiokafka==0.10.0
|
4
|
+
alembic==1.13.1
|
5
|
+
bcrypt==4.1.2
|
6
|
+
fastapi==0.109.0
|
7
7
|
jsons==1.6.3
|
8
|
-
pydantic==
|
9
|
-
psycopg2-binary==2.9.
|
8
|
+
pydantic==2.5.3
|
9
|
+
psycopg2-binary==2.9.9
|
10
10
|
python-jose==3.3.0
|
11
|
-
uvicorn==0.
|
12
|
-
watchfiles==0.
|
11
|
+
uvicorn==0.27.0
|
12
|
+
watchfiles==0.21.0
|
13
13
|
python-multipart==0.0.6
|
14
|
-
python-ulid==
|
14
|
+
python-ulid==2.2.0
|
15
15
|
opentelemetry-distro==0.40b0
|
16
16
|
opentelemetry-exporter-otlp==1.19.0
|
17
17
|
opentelemetry-instrumentation-fastapi==0.40b0
|
@@ -21,4 +21,4 @@ pytest==7.4.0
|
|
21
21
|
pytest-cov==4.1.0
|
22
22
|
pytest-asyncio==0.21.0
|
23
23
|
httpx==0.24.1
|
24
|
-
asgi-lifespan==2.1.0
|
24
|
+
asgi-lifespan==2.1.0
|
@@ -1,236 +1,206 @@
|
|
1
1
|
from typing import AsyncIterator
|
2
|
-
|
3
|
-
from src.config import app_auth_admin_username, app_auth_admin_password
|
2
|
+
|
4
3
|
import pytest
|
4
|
+
from httpx import AsyncClient
|
5
|
+
from src.config import app_auth_admin_password, app_auth_admin_username
|
5
6
|
|
6
7
|
inserted_success_data = {
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
"name": "test-create-group-success",
|
9
|
+
"description": "",
|
10
|
+
"permissions": [],
|
10
11
|
}
|
11
12
|
to_be_updated_success_data = {
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
"name": "test-group-to-be-updated-success",
|
14
|
+
"description": "",
|
15
|
+
"permissions": [],
|
15
16
|
}
|
16
17
|
updated_success_data = {
|
17
|
-
|
18
|
-
|
19
|
-
|
18
|
+
"name": "test-group-updated-success",
|
19
|
+
"description": "new-description",
|
20
|
+
"permissions": [],
|
20
21
|
}
|
21
22
|
to_be_deleted_success_data = {
|
22
|
-
|
23
|
-
|
24
|
-
|
23
|
+
"name": "test-group-to-be-deleted-success",
|
24
|
+
"description": "",
|
25
|
+
"permissions": [],
|
25
26
|
}
|
26
27
|
|
27
28
|
|
28
29
|
@pytest.mark.asyncio
|
29
30
|
async def test_insert_group_and_get_success(
|
30
|
-
test_client_generator: AsyncIterator[AsyncClient]
|
31
|
+
test_client_generator: AsyncIterator[AsyncClient],
|
31
32
|
):
|
32
33
|
async for client in test_client_generator:
|
33
34
|
# login
|
34
35
|
login_admin_response = await client.post(
|
35
|
-
|
36
|
+
"/api/v1/auth/login",
|
36
37
|
json={
|
37
|
-
|
38
|
-
|
39
|
-
}
|
38
|
+
"identity": app_auth_admin_username,
|
39
|
+
"password": app_auth_admin_password,
|
40
|
+
},
|
40
41
|
)
|
41
42
|
assert login_admin_response.status_code == 200
|
42
|
-
admin_access_token = login_admin_response.json().get(
|
43
|
-
'access_token', ''
|
44
|
-
)
|
43
|
+
admin_access_token = login_admin_response.json().get("access_token", "")
|
45
44
|
|
46
45
|
# create group
|
47
46
|
create_response = await client.post(
|
48
|
-
|
47
|
+
"/api/v1/auth/groups",
|
49
48
|
json=inserted_success_data,
|
50
|
-
headers={
|
51
|
-
'Authorization': 'Bearer ' + admin_access_token
|
52
|
-
}
|
49
|
+
headers={"Authorization": "Bearer " + admin_access_token},
|
53
50
|
)
|
54
51
|
assert create_response.status_code == 200
|
55
52
|
json_create_response = create_response.json()
|
56
|
-
create_response_id = json_create_response.get(
|
57
|
-
assert create_response_id !=
|
53
|
+
create_response_id = json_create_response.get("id", "")
|
54
|
+
assert create_response_id != ""
|
58
55
|
|
59
56
|
# get_by_id
|
60
57
|
get_by_id_response = await client.get(
|
61
|
-
f
|
62
|
-
headers={
|
63
|
-
'Authorization': 'Bearer ' + admin_access_token
|
64
|
-
}
|
58
|
+
f"/api/v1/auth/groups/{create_response_id}",
|
59
|
+
headers={"Authorization": "Bearer " + admin_access_token},
|
65
60
|
)
|
66
61
|
assert get_by_id_response.status_code == 200
|
67
62
|
json_get_by_id_response = get_by_id_response.json()
|
68
|
-
get_by_id_response_id = json_get_by_id_response.get(
|
63
|
+
get_by_id_response_id = json_get_by_id_response.get("id", "")
|
69
64
|
assert get_by_id_response_id == create_response_id
|
70
65
|
|
71
66
|
# get
|
72
67
|
get_response = await client.get(
|
73
|
-
|
74
|
-
headers={
|
75
|
-
'Authorization': 'Bearer ' + admin_access_token
|
76
|
-
}
|
68
|
+
"/api/v1/auth/groups",
|
69
|
+
headers={"Authorization": "Bearer " + admin_access_token},
|
77
70
|
)
|
78
71
|
assert get_response.status_code == 200
|
79
72
|
json_get_response = get_response.json()
|
80
|
-
get_response_count = json_get_response.get(
|
73
|
+
get_response_count = json_get_response.get("count", "")
|
81
74
|
assert get_response_count > 0
|
82
|
-
get_response_data = json_get_response.get(
|
75
|
+
get_response_data = json_get_response.get("data", [])
|
83
76
|
get_created_response_data = [
|
84
|
-
row for row in get_response_data
|
85
|
-
if row['id'] == create_response_id
|
77
|
+
row for row in get_response_data if row["id"] == create_response_id
|
86
78
|
]
|
87
79
|
assert len(get_created_response_data) == 1
|
88
80
|
|
89
81
|
|
90
82
|
@pytest.mark.asyncio
|
91
83
|
async def test_update_group_and_get_success(
|
92
|
-
test_client_generator: AsyncIterator[AsyncClient]
|
84
|
+
test_client_generator: AsyncIterator[AsyncClient],
|
93
85
|
):
|
94
86
|
async for client in test_client_generator:
|
95
87
|
# login
|
96
88
|
login_admin_response = await client.post(
|
97
|
-
|
89
|
+
"/api/v1/auth/login",
|
98
90
|
json={
|
99
|
-
|
100
|
-
|
101
|
-
}
|
91
|
+
"identity": app_auth_admin_username,
|
92
|
+
"password": app_auth_admin_password,
|
93
|
+
},
|
102
94
|
)
|
103
95
|
assert login_admin_response.status_code == 200
|
104
|
-
admin_access_token = login_admin_response.json().get(
|
105
|
-
'access_token', ''
|
106
|
-
)
|
96
|
+
admin_access_token = login_admin_response.json().get("access_token", "")
|
107
97
|
|
108
98
|
# create group
|
109
99
|
create_response = await client.post(
|
110
|
-
|
100
|
+
"/api/v1/auth/groups",
|
111
101
|
json=to_be_updated_success_data,
|
112
|
-
headers={
|
113
|
-
'Authorization': 'Bearer ' + admin_access_token
|
114
|
-
}
|
102
|
+
headers={"Authorization": "Bearer " + admin_access_token},
|
115
103
|
)
|
116
104
|
assert create_response.status_code == 200
|
117
105
|
json_create_response = create_response.json()
|
118
|
-
create_response_id = json_create_response.get(
|
119
|
-
assert create_response_id !=
|
106
|
+
create_response_id = json_create_response.get("id", "")
|
107
|
+
assert create_response_id != ""
|
120
108
|
|
121
109
|
# update group
|
122
110
|
update_response = await client.put(
|
123
|
-
f
|
111
|
+
f"/api/v1/auth/groups/{create_response_id}",
|
124
112
|
json=updated_success_data,
|
125
|
-
headers={
|
126
|
-
'Authorization': 'Bearer ' + admin_access_token
|
127
|
-
}
|
113
|
+
headers={"Authorization": "Bearer " + admin_access_token},
|
128
114
|
)
|
129
115
|
assert update_response.status_code == 200
|
130
116
|
json_update_response = update_response.json()
|
131
|
-
update_response_id = json_update_response.get(
|
117
|
+
update_response_id = json_update_response.get("id", "")
|
132
118
|
assert update_response_id == create_response_id
|
133
119
|
|
134
120
|
# get_by_id
|
135
121
|
get_by_id_response = await client.get(
|
136
|
-
f
|
137
|
-
headers={
|
138
|
-
'Authorization': 'Bearer ' + admin_access_token
|
139
|
-
}
|
122
|
+
f"/api/v1/auth/groups/{create_response_id}",
|
123
|
+
headers={"Authorization": "Bearer " + admin_access_token},
|
140
124
|
)
|
141
125
|
assert get_by_id_response.status_code == 200
|
142
126
|
json_get_by_id_response = get_by_id_response.json()
|
143
|
-
get_by_id_response_id = json_get_by_id_response.get(
|
127
|
+
get_by_id_response_id = json_get_by_id_response.get("id", "")
|
144
128
|
assert get_by_id_response_id == create_response_id
|
145
129
|
for key, expected_value in updated_success_data.items():
|
146
|
-
actual_value = json_get_by_id_response.get(key,
|
147
|
-
assert f
|
130
|
+
actual_value = json_get_by_id_response.get(key, "")
|
131
|
+
assert f"{key}:{actual_value}" == f"{key}:{expected_value}"
|
148
132
|
|
149
133
|
# get
|
150
134
|
get_response = await client.get(
|
151
|
-
|
152
|
-
headers={
|
153
|
-
'Authorization': 'Bearer ' + admin_access_token
|
154
|
-
}
|
135
|
+
"/api/v1/auth/groups",
|
136
|
+
headers={"Authorization": "Bearer " + admin_access_token},
|
155
137
|
)
|
156
138
|
assert get_response.status_code == 200
|
157
139
|
json_get_response = get_response.json()
|
158
|
-
get_response_count = json_get_response.get(
|
140
|
+
get_response_count = json_get_response.get("count", "")
|
159
141
|
assert get_response_count > 0
|
160
|
-
get_response_data = json_get_response.get(
|
142
|
+
get_response_data = json_get_response.get("data", [])
|
161
143
|
get_created_response_data = [
|
162
|
-
row for row in get_response_data
|
163
|
-
if row['id'] == create_response_id
|
144
|
+
row for row in get_response_data if row["id"] == create_response_id
|
164
145
|
]
|
165
146
|
assert len(get_created_response_data) == 1
|
166
147
|
|
167
148
|
|
168
149
|
@pytest.mark.asyncio
|
169
150
|
async def test_delete_group_and_get_success(
|
170
|
-
test_client_generator: AsyncIterator[AsyncClient]
|
151
|
+
test_client_generator: AsyncIterator[AsyncClient],
|
171
152
|
):
|
172
153
|
async for client in test_client_generator:
|
173
154
|
# login
|
174
155
|
login_admin_response = await client.post(
|
175
|
-
|
156
|
+
"/api/v1/auth/login",
|
176
157
|
json={
|
177
|
-
|
178
|
-
|
179
|
-
}
|
158
|
+
"identity": app_auth_admin_username,
|
159
|
+
"password": app_auth_admin_password,
|
160
|
+
},
|
180
161
|
)
|
181
162
|
assert login_admin_response.status_code == 200
|
182
|
-
admin_access_token = login_admin_response.json().get(
|
183
|
-
'access_token', ''
|
184
|
-
)
|
163
|
+
admin_access_token = login_admin_response.json().get("access_token", "")
|
185
164
|
|
186
165
|
# create group
|
187
166
|
create_response = await client.post(
|
188
|
-
|
167
|
+
"/api/v1/auth/groups",
|
189
168
|
json=to_be_deleted_success_data,
|
190
|
-
headers={
|
191
|
-
'Authorization': 'Bearer ' + admin_access_token
|
192
|
-
}
|
169
|
+
headers={"Authorization": "Bearer " + admin_access_token},
|
193
170
|
)
|
194
171
|
assert create_response.status_code == 200
|
195
172
|
json_create_response = create_response.json()
|
196
|
-
create_response_id = json_create_response.get(
|
197
|
-
assert create_response_id !=
|
173
|
+
create_response_id = json_create_response.get("id", "")
|
174
|
+
assert create_response_id != ""
|
198
175
|
|
199
176
|
# create group
|
200
177
|
delete_response = await client.delete(
|
201
|
-
f
|
202
|
-
headers={
|
203
|
-
'Authorization': 'Bearer ' + admin_access_token
|
204
|
-
}
|
178
|
+
f"/api/v1/auth/groups/{create_response_id}",
|
179
|
+
headers={"Authorization": "Bearer " + admin_access_token},
|
205
180
|
)
|
206
181
|
assert delete_response.status_code == 200
|
207
182
|
json_delete_response = delete_response.json()
|
208
|
-
delete_response_id = json_delete_response.get(
|
183
|
+
delete_response_id = json_delete_response.get("id", "")
|
209
184
|
assert delete_response_id == create_response_id
|
210
185
|
|
211
186
|
# get_by_id
|
212
187
|
get_by_id_response = await client.get(
|
213
|
-
f
|
214
|
-
headers={
|
215
|
-
'Authorization': 'Bearer ' + admin_access_token
|
216
|
-
}
|
188
|
+
f"/api/v1/auth/groups/{create_response_id}",
|
189
|
+
headers={"Authorization": "Bearer " + admin_access_token},
|
217
190
|
)
|
218
191
|
assert get_by_id_response.status_code == 404
|
219
192
|
|
220
193
|
# get
|
221
194
|
get_response = await client.get(
|
222
|
-
|
223
|
-
headers={
|
224
|
-
'Authorization': 'Bearer ' + admin_access_token
|
225
|
-
}
|
195
|
+
"/api/v1/auth/groups",
|
196
|
+
headers={"Authorization": "Bearer " + admin_access_token},
|
226
197
|
)
|
227
198
|
assert get_response.status_code == 200
|
228
199
|
json_get_response = get_response.json()
|
229
|
-
get_response_count = json_get_response.get(
|
200
|
+
get_response_count = json_get_response.get("count", "")
|
230
201
|
assert get_response_count > 0
|
231
|
-
get_response_data = json_get_response.get(
|
202
|
+
get_response_data = json_get_response.get("data", [])
|
232
203
|
get_created_response_data = [
|
233
|
-
row for row in get_response_data
|
234
|
-
if row['id'] == create_response_id
|
204
|
+
row for row in get_response_data if row["id"] == create_response_id
|
235
205
|
]
|
236
206
|
assert len(get_created_response_data) == 0
|