ApiLogicServer 15.0.61__py3-none-any.whl → 15.1.0__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.
- api_logic_server_cli/api_logic_server.py +4 -3
- api_logic_server_cli/api_logic_server_info.yaml +2 -2
- api_logic_server_cli/cli.py +2 -2
- api_logic_server_cli/database/basic_demo.sqlite +0 -0
- api_logic_server_cli/genai/{genai_admin_app.py → genai_react_app.py} +10 -2
- api_logic_server_cli/prototypes/base/.github/.copilot-instructions.md +321 -2
- api_logic_server_cli/prototypes/base/docs/training/logic_bank_api.prompt +27 -0
- api_logic_server_cli/prototypes/base/logic/logic_discovery/use_case.py +5 -1
- api_logic_server_cli/prototypes/base/test/readme_test.md +395 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/database/db.sqlite +0 -0
- api_logic_server_cli/prototypes/basic_demo/docs/models-not-code.png +0 -0
- api_logic_server_cli/prototypes/basic_demo/docs/runtime engines.png +0 -0
- api_logic_server_cli/prototypes/basic_demo/iteration/database/db.sqlite +0 -0
- api_logic_server_cli/prototypes/basic_demo/logic/procedural/credit_service.py +204 -0
- api_logic_server_cli/prototypes/manager/.github/.copilot-instructions.md +1 -12
- api_logic_server_cli/prototypes/manager/.vscode/launch.json +2 -1
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.devcontainer-option/For_VSCode.dockerfile +10 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.devcontainer-option/devcontainer.json +64 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.devcontainer-option/readme.md +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.devcontainer-option/setup.sh +10 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.env +4 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.github/.copilot-instructions.md +581 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.gitignore +9 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/ApiLogicServer.xml +24 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/Report_Behave_Logic.xml +24 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/Run_Behave.xml +24 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/Windows_Run_Behave.xml +24 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/run___No_Security.xml +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/run_docker.xml +59 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.vscode/launch.json +314 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.vscode/settings.json +40 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/.vscode/venv_init.sh +64 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/_config.yml +8 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/_layouts/redirect.html +15 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/__init__.py +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/auto_discovery.py +27 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/mcp_discovery.py +97 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/mcp_expose_api_models.py +53 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/new_service.py +21 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/newer_service.py +21 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/ontimize_api.py +495 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/order_b2b_service.py +60 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/system.py +77 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/customize_api.py +63 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/expose_api_models.py +52 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/json_encoder.py +17 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/readme_customize_api.md +103 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/api_utils.py +171 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/custom_endpoint.py +1085 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/expression_parser.py +685 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/gen_csv_report.py +41 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/gen_pdf_report.py +215 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/opt_locking/opt_locking.py +158 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/opt_locking/readme.md +225 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/api_logic_server_run.py +162 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/config/__init__.py +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/config/activate_logicbank.py +46 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/config/config.py +772 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/config/default.env +16 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/config/logging-reduced.yml +112 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/config/logging.yml +123 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/config/mypy.ini +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/config/server_setup.py +459 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/api/api_discovery/openapi.py +92 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/config/default.env +13 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/database/db.sqlite +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/database/models.py +130 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/docs/mcp_learning/mcp_discovery.json +108 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/logic/cocktail-napkin.jpg +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/logic/declare_logic.py +106 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/logic/logic_discovery/email_request.py +49 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/logic/logic_discovery/simple_constraints.py +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/security/declare_security.py +60 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/admin/admin.yaml +162 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/admin/home.js +48 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/README.md +17 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/README_create_react_app.md +70 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/package-lock.json +18469 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/package.json +47 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/favicon.ico +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/index.html +43 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/logo192.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/logo512.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/manifest.json +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/robots.txt +3 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/App.css +38 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/App.js +61 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/App.test.js +8 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Config-reference.js +527 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Config.js +527 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Customer-reference.js +216 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Customer.js +230 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Item.js +170 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Order.js +207 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Product.js +140 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/SysEmail.js +157 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/SysMcp.js +110 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/app_loader.js +24 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/index.css +13 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/index.js +17 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/logo.svg +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/.eslintrc +5 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/.yarnrc.yml +4 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/default-settings.js +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/default-settings.ts +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/errors.js +116 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/errors.ts +116 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/index.test.tsx +7 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/index.tsx +11 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/ra-jsonapi-client.js +577 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/ra-jsonapi-client.ts +577 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/resourceLookup.js +124 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/resourceLookup.ts +124 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/styles.module.css +9 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/reportWebVitals.js +13 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/setupTests.js +5 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/__init__.py +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/alembic_run.py +98 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/env.py +78 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/readme_alembic.md +36 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/script.py.mako +24 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/versions/ae6a5c2fdc47_autogenerated.py +34 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/versions/readme.md +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic.ini +103 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/authentication_db.sqlite +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/bind_dbs.py +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/customize_models.py +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/database_discovery/authentication_models.py +183 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/database_discovery/auto_discovery.py +27 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/db.sqlite +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/db_debug/db_debug.py +90 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/mcp_db.sqlite +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/mcp_models.py +58 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/models.py +132 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/system/SAFRSBaseX.py +139 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/test_data/alp_init.py +40 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/test_data/readme.md +13 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/test_data/response2code.py +148 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/database/test_data/test_data_preamble.py +83 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/auth-db/authdb_mysql.Dockerfile +65 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/auth-db/authdb_mysql.sql +112 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/auth-db/authdb_postgres.sql +57 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-compose-dev-azure/azure-deploy.sh +98 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-compose-dev-local/docker-compose-dev-local.yml +38 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-compose-dev-local/docker-compose.sh +34 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-image/build_image.dockerfile +20 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-image/build_image.sh +67 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-image/env.list +35 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-image/run_image.sh +23 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-standard-image/docker-compose-standard-image.yml +33 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-standard-image/env.list +55 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/h2/keycloakdb.mv.db +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/h2/keycloakdb.trace.db +236 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/import/kcals-realm.json +1807 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/import/kcals-users-0.json +24 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/import/master-realm.json +1953 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/import/master-users-0.json +23 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/tmp/kc-gzip-cache/nnbna/js/keycloak.js.gz +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/docker-compose-dev-network.yml +31 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/docker-compose-nginx.yml +48 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/docker-compose.yml +24 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/import/kcals-realm.json +1898 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/import/kcals-users-0.json +319 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/import/master-realm.json +1953 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/import/master-users-0.json +23 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/nginx/cert.pem +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/nginx/key.pem +28 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/nginx/nginx.conf +73 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/startup_log_nginx.txt +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/startup_log_no_nginx.txt +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/unused/auth_provider.py +80 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/unused/unused-docker-compose-keycloak.sh +13 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/python-anywhere/python_anywhere_wsgi.py +116 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/readme-devops.md +31 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/db.dbml +14 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/graphics/readme.md +12 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/logic/readme.md +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/logic_suggestions/readme_logic_suggestions.md +3 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/mcp_learning/mcp.prompt +39 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/mcp_learning/mcp_schema.json +30 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/models-not-code.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/runtime engines.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/system-creation-vibe.md +158 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/admin_app_1_context.prompt.md +43 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/admin_app_2_functionality.prompt.md +69 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/admin_app_3_architecture.prompt.md +29 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/logic_bank_api.prompt +342 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/logic_example.py +41 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/react_map.prompt.md +13 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/react_tree.prompt.md +10 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/kafka/kafka_consumer.py +60 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/kafka/kafka_producer.py +127 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/kafka/kafka_readme.md +3 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_context_results.txt +142 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_discovery_response.json +150 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_request.prompt +46 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_schema.txt +47 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_tool_context_response.json +34 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_tool_context_response_get.json +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/mcp_client_executor.py +545 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/mcp_server_discovery.json +9 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/readme-mcp.md +9 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/n8n/N8N_WebHook_from_ApiLogicServer.json +394 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/n8n/n8n_producer.py +172 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/n8n/n8n_readme.md +67 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/row_dict_maps/OrderB2BMapper.py +54 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/row_dict_maps/row_dict_maps_readme.md +3 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/system/FlaskKafka.py +105 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/system/RowDictMapper.py +416 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/api/api_discovery/order_b2b.py +92 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/database/db.sqlite +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/docs/er_diagram.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/integration/row_dict_maps/OrderB2B.py +36 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/integration/row_dict_maps/OrderShipping.py +30 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/logic/declare_logic.py +147 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/ui/admin/admin.yaml +175 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/declarative-vs-procedural-comparison.html +110 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/declare_logic.py +81 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/load_verify_rules.py +217 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/app_integration.py +23 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/auto_discovery.py +52 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/check_credit.py +44 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/mcp_client_executor_request.py +50 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/readme_logic_discovery.md +9 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/use_case.py +31 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/procedural/credit_service.py +204 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/procedural/declarative-vs-procedural-comparison.md +295 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/procedural/declarative-vs-procedural-comparison.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/readme_logic.md +249 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/readme.md +495 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/readme_project.md +43 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/readme_standard.md +492 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/readme_vibe.md +353 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/requirements.txt +3 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/run.ps1 +30 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/run.sh +55 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/security/__init__.py +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/__init__.py +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/abstract_authentication_provider.py +34 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/keycloak/auth_provider.py +238 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/memory/auth_provider.py +161 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/memory/auth_provider_no_swagger.py +98 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/sql/auth_provider.py +127 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/security/declare_security.py +49 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/security/readme_security.md +16 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/security/system/authentication.py +129 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/security/system/authorization.py +473 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/security/system/custom_swagger.json +62 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/__init__.py +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/__init__.py +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/behave_logic_report.py +256 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/behave_run.py +64 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/features/about.feature +12 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/features/steps/about.py +20 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/features/steps/test_utils.py +133 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/logs/behave.log +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/reports/Behave Logic Report Intro micro.md +4 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/reports/Behave Logic Report Intro.md +75 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/reports/Behave Logic Report Sample.md +1180 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/basic/server_test.py +33 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/readme_test.md +395 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/__init__.py +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/admin/admin.yaml +173 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/admin/admin_loader.py +217 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/admin/authentication_admin.yaml +99 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/admin/home.js +48 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/admin/mcp_admin.yaml +53 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/.browserslistrc +12 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/.dockerignore +47 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/.editorconfig +16 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/.eslintrc.json +51 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/.gitignore +47 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/README.md +42 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/angular.json +206 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/app_model.yaml +303 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/docker-compose-ontimize.yml +54 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/e2e/protractor.conf.js +32 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/e2e/src/app.e2e-spec.ts +23 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/e2e/src/app.po.ts +11 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/e2e/tsconfig.json +13 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/karma.conf.js +32 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/nginx/nginx.conf +29 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/ngsw-config.json +29 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/package-lock.json +22651 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/package.json +69 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app-routing.module.ts +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.component.html +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.component.scss +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.component.spec.ts +35 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.component.ts +9 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.config.ts +43 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.module.ts +37 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login-routing.module.ts +12 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login.component.html +58 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login.component.scss +155 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login.component.ts +81 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login.module.ts +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login.theme.scss +51 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/Customer-routing.module.ts +37 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/Customer.module.ts +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/detail/Customer-detail.component.html +90 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/detail/Customer-detail.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/detail/Customer-detail.component.ts +32 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/home/Customer-home.component.html +44 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/home/Customer-home.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/home/Customer-home.component.ts +23 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/new/Customer-new.component.html +26 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/new/Customer-new.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/new/Customer-new.component.ts +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/Item-routing.module.ts +30 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/Item.module.ts +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/detail/Item-detail.component.html +72 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/detail/Item-detail.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/detail/Item-detail.component.ts +32 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/home/Item-home.component.html +55 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/home/Item-home.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/home/Item-home.component.ts +23 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/new/Item-new.component.html +60 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/new/Item-new.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/new/Item-new.component.ts +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/Order-routing.module.ts +37 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/Order.module.ts +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/detail/Order-detail.component.html +114 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/detail/Order-detail.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/detail/Order-detail.component.ts +32 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/home/Order-home.component.html +48 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/home/Order-home.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/home/Order-home.component.ts +23 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/new/Order-new.component.html +43 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/new/Order-new.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/new/Order-new.component.ts +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/Product-routing.module.ts +37 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/Product.module.ts +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/detail/Product-detail.component.html +91 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/detail/Product-detail.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/detail/Product-detail.component.ts +32 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/home/Product-home.component.html +35 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/home/Product-home.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/home/Product-home.component.ts +23 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/new/Product-new.component.html +20 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/new/Product-new.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/new/Product-new.component.ts +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about-routing.module.ts +13 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about.component.html +39 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about.component.scss +35 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about.component.ts +17 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about.module.ts +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about.theme.scss +14 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/home/home-routing.module.ts +17 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/home/home.component.html +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/home/home.component.scss +3 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/home/home.component.ts +21 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/home/home.module.ts +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main-routing.module.ts +32 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main-theme.scss +56 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main.component.html +8 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main.component.scss +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main.component.ts +20 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main.module.ts +22 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/settings/settings-routing.module.ts +14 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/settings/settings.component.html +14 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/settings/settings.component.scss +44 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/settings/settings.component.ts +46 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/settings/settings.module.ts +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Customer-card/Customer-card.component.html +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Customer-card/Customer-card.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Customer-card/Customer-card.component.ts +16 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Item-card/Item-card.component.html +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Item-card/Item-card.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Item-card/Item-card.component.ts +16 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Order-card/Order-card.component.html +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Order-card/Order-card.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Order-card/Order-card.component.ts +16 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Product-card/Product-card.component.html +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Product-card/Product-card.component.scss +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Product-card/Product-card.component.ts +16 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/app.menu.config.ts +45 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/app.services.config.ts +5 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/constant.ts +4 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/shared.module.ts +15 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/.gitkeep +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/css/app.scss +20 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/css/loader.css +173 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/i18n/en.json +44 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/i18n/es.json +42 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize128.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize16.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize256.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize32.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize48.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize64.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize72.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize96.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/github.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/login_bg.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/no-image-transparent.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/no-image.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/ontimize.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/ontimize_web_log.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/sidenav-closed.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/sidenav-closed.svg +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/sidenav-opened.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/sidenav-opened.svg +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/user_profile.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/js/domchange.js +110 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/js/keyboard.js +24 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/environments/environment.prod.ts +11 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/environments/environment.ts +15 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/favicon.ico +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/index.html +30 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/main.ts +15 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/manifest.webmanifest +59 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/polyfills.ts +66 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/styles.scss +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/test.ts +16 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/tsconfig.app.json +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/tsconfig.json +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/tsconfig.spec.json +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/andrew.jpg +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/anne.jpg +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/janet.jpg +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/laura.jpg +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/margaret.jpg +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/michael.jpg +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/nancy.jpg +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/robert.jpg +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/steven.jpg +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/beverages.gif +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/cereals.gif +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/condiments.gif +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/confections.gif +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/diary.gif +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/meat.gif +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/produce.gif +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/seafood.gif +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/README.md +16 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/README_create_react_app.md +70 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/package-lock.json +18469 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/package.json +47 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/favicon.ico +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/index.html +43 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/logo192.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/logo512.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/manifest.json +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/robots.txt +3 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/App.css +38 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/App.js +80 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/App.test.js +8 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/Config.js +527 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/Customer.js +218 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/Item.js +190 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/Order.js +189 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/Product.js +159 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/app_loader.js +24 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/index.css +13 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/index.js +17 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/logo.svg +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/.eslintrc +5 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/.yarnrc.yml +4 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/default-settings.js +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/default-settings.ts +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/errors.js +116 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/errors.ts +116 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/index.test.tsx +7 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/index.tsx +11 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/ra-jsonapi-client.js +577 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/ra-jsonapi-client.ts +577 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/resourceLookup.js +124 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/resourceLookup.ts +124 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/styles.module.css +9 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/reportWebVitals.js +13 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/setupTests.js +5 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/README.md +20 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/README_create_react_app.md +72 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/package-lock.json +18469 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/package.json +47 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/product-cards.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/favicon.ico +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/index.html +43 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/logo192.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/logo512.png +0 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/manifest.json +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/robots.txt +3 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/App.css +38 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/App.js +80 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/App.test.js +8 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/Config.js +527 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/Customer.js +218 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/Item.js +190 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/Order.js +189 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/Product.js +241 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/app_loader.js +24 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/index.css +13 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/index.js +17 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/logo.svg +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/.eslintrc +5 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/.yarnrc.yml +4 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/default-settings.js +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/default-settings.ts +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/errors.js +116 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/errors.ts +116 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/index.test.tsx +7 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/index.tsx +11 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/ra-jsonapi-client.js +577 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/ra-jsonapi-client.ts +577 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/resourceLookup.js +124 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/resourceLookup.ts +124 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/styles.module.css +9 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/reportWebVitals.js +13 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/setupTests.js +5 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/templates/bar_chart.jinja +64 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/templates/content.html +3 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/py.py +121 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/readme_venv.md +20 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/requirements-no-cli.txt +33 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/venv-linux.sh +28 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/venv.ps1 +21 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/venv.sh +28 -0
- api_logic_server_cli/prototypes/manager/samples/dbs/readme_dbs.md +4 -4
- api_logic_server_cli/prototypes/manager/samples/readme_samples.md +13 -6
- api_logic_server_cli/prototypes/manager/system/Manager_workspace.code-workspace +3 -2
- api_logic_server_cli/prototypes/nw/test/readme_test_nw.md +224 -0
- {apilogicserver-15.0.61.dist-info → apilogicserver-15.1.0.dist-info}/METADATA +1 -1
- {apilogicserver-15.0.61.dist-info → apilogicserver-15.1.0.dist-info}/RECORD +528 -24
- api_logic_server_cli/prototypes/manager/.vscode/.copilot-instructions.md +0 -58
- api_logic_server_cli/prototypes/manager/.vscode/ApiLogicServer.code-workspace +0 -15
- api_logic_server_cli/prototypes/nw/test/readme_test.md +0 -13
- {apilogicserver-15.0.61.dist-info → apilogicserver-15.1.0.dist-info}/WHEEL +0 -0
- {apilogicserver-15.0.61.dist-info → apilogicserver-15.1.0.dist-info}/entry_points.txt +0 -0
- {apilogicserver-15.0.61.dist-info → apilogicserver-15.1.0.dist-info}/licenses/LICENSE +0 -0
- {apilogicserver-15.0.61.dist-info → apilogicserver-15.1.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
import requests
|
|
3
|
+
import logging
|
|
4
|
+
import subprocess
|
|
5
|
+
import socket
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def prt(msg: any) -> None:
|
|
9
|
+
print(msg)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def get_project_dir() -> str:
|
|
13
|
+
"""
|
|
14
|
+
:return: ApiLogicServer dir, eg, /Users/val/dev/ApiLogicServer
|
|
15
|
+
"""
|
|
16
|
+
path = Path(__file__)
|
|
17
|
+
parent_path = path.parent
|
|
18
|
+
parent_path = parent_path.parent
|
|
19
|
+
return parent_path
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def server_tests(host, port, version):
|
|
23
|
+
""" called by api_logic_server_run.py, for any tests on server start
|
|
24
|
+
args
|
|
25
|
+
host - server host
|
|
26
|
+
port - server port
|
|
27
|
+
version - ApiLogicServer version
|
|
28
|
+
"""
|
|
29
|
+
... # Your Code Goes Here
|
|
30
|
+
|
|
31
|
+
if __name__ == "__main__":
|
|
32
|
+
# only to run when not called via 'import' here
|
|
33
|
+
server_tests("localhost", "5656", "v0")
|
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
# API Logic Server Testing Guide
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This directory contains comprehensive tests for API Logic Server projects, designed to validate business logic rules, API endpoints, security, and data integrity. The testing framework emphasizes **business logic validation** through declarative rules rather than just basic CRUD operations.
|
|
6
|
+
|
|
7
|
+
## 🎯 What Gets Tested
|
|
8
|
+
|
|
9
|
+
- **Business Logic Rules**: Declarative rules for sums, formulas, constraints, and events
|
|
10
|
+
- **API Endpoints**: REST API functionality and JSON:API compliance
|
|
11
|
+
- **Security**: Authentication, authorization, and role-based access control
|
|
12
|
+
- **Data Integrity**: Database constraints, cascading updates, and transactions
|
|
13
|
+
- **Integration**: Logic engine, database, and API layer integration
|
|
14
|
+
|
|
15
|
+
## 📁 Test Structure
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
test/
|
|
19
|
+
├── readme_test.md # This guide
|
|
20
|
+
├── api_logic_server_behave/ # Primary BDD testing framework
|
|
21
|
+
│ ├── behave_run.py # Main test runner
|
|
22
|
+
│ ├── behave_logic_report.py # Report generator
|
|
23
|
+
│ ├── features/ # Gherkin feature files
|
|
24
|
+
│ │ ├── *.feature # Business logic test scenarios
|
|
25
|
+
│ │ └── steps/ # Python step implementations
|
|
26
|
+
│ ├── logs/ # Test execution logs
|
|
27
|
+
│ └── reports/ # Generated test reports
|
|
28
|
+
└── basic/ # Simple server tests
|
|
29
|
+
├── server_test.py # Basic API functionality tests
|
|
30
|
+
└── results/ # Basic test results
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 🚀 Running Tests
|
|
34
|
+
|
|
35
|
+
### Prerequisites
|
|
36
|
+
1. **Start API Logic Server**: `python api_logic_server_run.py` or press F5
|
|
37
|
+
2. **Install behave**: `pip install behave` (if not already installed)
|
|
38
|
+
3. **Database State**: Tests restore data automatically, but if tests fail mid-execution, restore your database from backup
|
|
39
|
+
|
|
40
|
+
### Primary Testing Method: Behave (BDD)
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# From project root
|
|
44
|
+
cd test/api_logic_server_behave
|
|
45
|
+
python behave_run.py
|
|
46
|
+
|
|
47
|
+
# Or in VS Code
|
|
48
|
+
# Use "Behave Run" configuration (F5)
|
|
49
|
+
# In Debug Console, select "Behave Run" from dropdown (not server log)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Alternative: Basic Server Tests
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# From project root
|
|
56
|
+
cd test/basic
|
|
57
|
+
python server_test.py go
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**Note**: Basic tests require `SECURITY_ENABLED = False` in `config/config.py`
|
|
61
|
+
|
|
62
|
+
## 📝 Common Test Scenarios
|
|
63
|
+
|
|
64
|
+
API Logic Server projects typically test these business patterns:
|
|
65
|
+
|
|
66
|
+
### Core Business Logic
|
|
67
|
+
- **State Management**: Entity status changes and their cascading effects
|
|
68
|
+
- **Credit/Limit Checking**: Validation against business constraints
|
|
69
|
+
- **Balance/Total Calculations**: Automatic sum and formula derivations
|
|
70
|
+
- **Inventory/Resource Management**: Allocation and availability tracking
|
|
71
|
+
- **Notifications**: Email alerts and external system integration
|
|
72
|
+
- **Constraint Validation**: Business rule enforcement
|
|
73
|
+
|
|
74
|
+
*Example: In Northwind, order ready/not-ready states affect customer balances through automatic sum rules.*
|
|
75
|
+
|
|
76
|
+
### Entity Management
|
|
77
|
+
- **Audit Trails**: Automatic logging of critical changes
|
|
78
|
+
- **Derived Attributes**: Calculated fields and transformations
|
|
79
|
+
- **Business Rules**: Validation and constraint enforcement
|
|
80
|
+
|
|
81
|
+
*Example: Employee salary changes create audit records and validate minimum raise amounts.*
|
|
82
|
+
|
|
83
|
+
### Security Testing
|
|
84
|
+
- **Authentication**: Login/logout functionality
|
|
85
|
+
- **Role-Based Access**: Permission validation
|
|
86
|
+
- **Data Filtering**: Row-level security based on user roles
|
|
87
|
+
|
|
88
|
+
## 🧪 Test Data Strategy
|
|
89
|
+
|
|
90
|
+
### Testing Business Logic Derivations
|
|
91
|
+
|
|
92
|
+
**Best Practice for Derivation Testing:**
|
|
93
|
+
|
|
94
|
+
When testing business logic derivations (sums, formulas, constraints), follow this pattern:
|
|
95
|
+
|
|
96
|
+
1. **Read Initial State**: Capture the starting values before the transaction
|
|
97
|
+
2. **Execute Transaction**: Perform the business operation (create order, update quantity, etc.)
|
|
98
|
+
3. **Read Final State**: Capture the resulting values after business logic execution
|
|
99
|
+
4. **Compare Changes**: Verify the differences match expected derivation behavior
|
|
100
|
+
|
|
101
|
+
```python
|
|
102
|
+
@when('Customer places order for ${amount:d}')
|
|
103
|
+
def step_impl(context, amount):
|
|
104
|
+
# 1. Read initial state
|
|
105
|
+
customer_response = requests.get(f"{BASE_URL}/api/Customer/1")
|
|
106
|
+
context.initial_balance = customer_response.json()['data']['attributes']['balance']
|
|
107
|
+
|
|
108
|
+
# 2. Execute transaction
|
|
109
|
+
order_data = {"customer_id": 1, "amount_total": amount}
|
|
110
|
+
context.response = requests.post(f"{BASE_URL}/api/Order", json=order_data)
|
|
111
|
+
|
|
112
|
+
@then('Customer balance increases by ${expected_increase:d}')
|
|
113
|
+
def step_impl(context, expected_increase):
|
|
114
|
+
# 3. Read final state
|
|
115
|
+
customer_response = requests.get(f"{BASE_URL}/api/Customer/1")
|
|
116
|
+
final_balance = customer_response.json()['data']['attributes']['balance']
|
|
117
|
+
|
|
118
|
+
# 4. Compare changes
|
|
119
|
+
actual_increase = final_balance - context.initial_balance
|
|
120
|
+
assert actual_increase == expected_increase, f"Balance changed by {actual_increase}, expected {expected_increase}"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Why This Approach Works:**
|
|
124
|
+
- ✅ **Independent of Initial Data**: Tests work regardless of starting database state
|
|
125
|
+
- ✅ **Focuses on Business Logic**: Verifies the rule behavior, not absolute values
|
|
126
|
+
- ✅ **Robust Against Multiple Runs**: Tests remain valid after repeated execution
|
|
127
|
+
- ✅ **Clear Intent**: Shows exactly what the business rule should accomplish
|
|
128
|
+
|
|
129
|
+
### Identifying Test Data
|
|
130
|
+
When creating tests, identify stable test entities in your database:
|
|
131
|
+
|
|
132
|
+
1. **Key Business Entities**: Main domain objects (customers, orders, products, etc.)
|
|
133
|
+
2. **Known State**: Entities with predictable initial values
|
|
134
|
+
3. **Relationships**: Connected entities that demonstrate rule cascading
|
|
135
|
+
4. **Edge Cases**: Boundary conditions for constraints and validations
|
|
136
|
+
|
|
137
|
+
### Test Data Documentation
|
|
138
|
+
Document your test data in comments or separate files:
|
|
139
|
+
|
|
140
|
+
```python
|
|
141
|
+
"""
|
|
142
|
+
Test Data Used:
|
|
143
|
+
- Primary Customer: [CustomerID] with [known balance/status]
|
|
144
|
+
- Test Order: [OrderID] with [known amount]
|
|
145
|
+
- Test Employee: [EmployeeID] with [known salary]
|
|
146
|
+
- Constraint Limits: [specific values that trigger validations]
|
|
147
|
+
"""
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## 🔧 For Developers
|
|
151
|
+
|
|
152
|
+
### Adding New Tests
|
|
153
|
+
|
|
154
|
+
1. **Identify Business Scenario**: What business rule or process needs testing?
|
|
155
|
+
2. **Create Feature File**: Add `.feature` file in `features/` using Gherkin syntax
|
|
156
|
+
3. **Implement Steps**: Create corresponding `.py` file in `features/steps/`
|
|
157
|
+
4. **Use Test Utilities**: Import `test_utils.py` for common functions
|
|
158
|
+
5. **Follow Patterns**: Reference existing tests for authentication, logging, and assertions
|
|
159
|
+
|
|
160
|
+
### Generic Feature Structure
|
|
161
|
+
|
|
162
|
+
```gherkin
|
|
163
|
+
Feature: [Business Process Name]
|
|
164
|
+
|
|
165
|
+
Scenario: [Specific Business Rule Test]
|
|
166
|
+
Given [Initial business state]
|
|
167
|
+
When [Business action is performed]
|
|
168
|
+
Then [Expected business outcome occurs]
|
|
169
|
+
And [Additional validations]
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Generic Step Implementation Pattern
|
|
173
|
+
|
|
174
|
+
```python
|
|
175
|
+
# features/steps/[feature_name].py
|
|
176
|
+
from behave import *
|
|
177
|
+
import test_utils
|
|
178
|
+
import requests
|
|
179
|
+
import json
|
|
180
|
+
from dotmap import DotMap
|
|
181
|
+
|
|
182
|
+
@given('[Initial business state]')
|
|
183
|
+
def step_impl(context):
|
|
184
|
+
# Get initial state of your key business entities
|
|
185
|
+
# Store in context for later comparison
|
|
186
|
+
context.initial_state = get_entity_state(entity_id)
|
|
187
|
+
|
|
188
|
+
@when('[Business action is performed]')
|
|
189
|
+
def step_impl(context):
|
|
190
|
+
# Perform the business operation via API
|
|
191
|
+
header = test_utils.login() # Get auth header if needed
|
|
192
|
+
|
|
193
|
+
# Make API call (POST, PATCH, DELETE, etc.)
|
|
194
|
+
api_url = f'http://localhost:5656/api/[YourEntity]/[id]/'
|
|
195
|
+
response = requests.patch(url=api_url, json=your_data, headers=header)
|
|
196
|
+
|
|
197
|
+
# Store response for validation
|
|
198
|
+
context.response = response
|
|
199
|
+
|
|
200
|
+
@then('[Expected business outcome occurs]')
|
|
201
|
+
def step_impl(context):
|
|
202
|
+
# Verify the business rule executed correctly
|
|
203
|
+
# Check entity state changes, calculated fields, etc.
|
|
204
|
+
final_state = get_entity_state(entity_id)
|
|
205
|
+
assert final_state.calculated_field == expected_value
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## 🤖 For GitHub Copilot
|
|
209
|
+
|
|
210
|
+
When generating tests for API Logic Server projects:
|
|
211
|
+
|
|
212
|
+
### Key Patterns to Follow
|
|
213
|
+
|
|
214
|
+
1. **Focus on Business Logic**: Test declarative rules, not just CRUD operations
|
|
215
|
+
2. **Use Behave Framework**: Create `.feature` files with Gherkin syntax
|
|
216
|
+
3. **Test Rule Execution**: Verify LogicBank rules fire and produce correct results
|
|
217
|
+
4. **Test Constraints**: Verify business rule violations are properly caught
|
|
218
|
+
5. **Check Cascading Updates**: Ensure changes propagate through rule chains
|
|
219
|
+
6. **Include Authentication**: Use proper auth headers for API calls
|
|
220
|
+
|
|
221
|
+
### Common Test Utilities
|
|
222
|
+
|
|
223
|
+
```python
|
|
224
|
+
import test_utils
|
|
225
|
+
|
|
226
|
+
# Authentication (handles both SQL and Keycloak)
|
|
227
|
+
header = test_utils.login(user='username') # Returns auth header dict
|
|
228
|
+
|
|
229
|
+
# Logging (appears in console and scenario log files)
|
|
230
|
+
test_utils.prt("Test message", "scenario_name")
|
|
231
|
+
|
|
232
|
+
# Typical API call patterns
|
|
233
|
+
r = requests.get(url=api_url, headers=header)
|
|
234
|
+
r = requests.post(url=api_url, json=data, headers=header)
|
|
235
|
+
r = requests.patch(url=api_url, json=data, headers=header)
|
|
236
|
+
r = requests.delete(url=api_url, headers=header)
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Business Logic Testing Patterns
|
|
240
|
+
|
|
241
|
+
#### Testing Sum Rules
|
|
242
|
+
```python
|
|
243
|
+
# Pattern: Test that derived sums update automatically
|
|
244
|
+
# Example: Customer.Balance = sum(Order.AmountTotal where not shipped)
|
|
245
|
+
|
|
246
|
+
@given('Entity with calculated sum field')
|
|
247
|
+
def step_impl(context):
|
|
248
|
+
context.parent_before = get_parent_entity(parent_id)
|
|
249
|
+
|
|
250
|
+
@when('Child entity is modified')
|
|
251
|
+
def step_impl(context):
|
|
252
|
+
# Create/update child entity
|
|
253
|
+
header = test_utils.login()
|
|
254
|
+
child_data = {"amount": 100, "parent_id": parent_id}
|
|
255
|
+
r = requests.post(url=child_api_url, json=child_data, headers=header)
|
|
256
|
+
|
|
257
|
+
@then('Parent sum field updates automatically')
|
|
258
|
+
def step_impl(context):
|
|
259
|
+
parent_after = get_parent_entity(parent_id)
|
|
260
|
+
expected_sum = context.parent_before.sum_field + 100
|
|
261
|
+
assert parent_after.sum_field == expected_sum
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
#### Testing Constraint Rules
|
|
265
|
+
```python
|
|
266
|
+
# Pattern: Test that business constraints are enforced
|
|
267
|
+
# Example: Customer.Balance <= Customer.CreditLimit
|
|
268
|
+
|
|
269
|
+
@when('Action violates business constraint')
|
|
270
|
+
def step_impl(context):
|
|
271
|
+
header = test_utils.login()
|
|
272
|
+
# Data that should violate constraint
|
|
273
|
+
violating_data = {"amount": 99999} # Exceeds credit limit
|
|
274
|
+
r = requests.patch(url=api_url, json=violating_data, headers=header)
|
|
275
|
+
context.response = r
|
|
276
|
+
|
|
277
|
+
@then('Constraint violation is detected')
|
|
278
|
+
def step_impl(context):
|
|
279
|
+
assert context.response.status_code >= 400 # Should fail
|
|
280
|
+
error_message = context.response.json()
|
|
281
|
+
assert "constraint" in error_message.get("message", "").lower()
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
#### Testing Formula Rules
|
|
285
|
+
```python
|
|
286
|
+
# Pattern: Test that formulas calculate correctly
|
|
287
|
+
# Example: OrderDetail.Amount = Quantity * UnitPrice
|
|
288
|
+
|
|
289
|
+
@when('Formula inputs are changed')
|
|
290
|
+
def step_impl(context):
|
|
291
|
+
header = test_utils.login()
|
|
292
|
+
update_data = {"quantity": 5, "unit_price": 10.50}
|
|
293
|
+
r = requests.patch(url=api_url, json=update_data, headers=header)
|
|
294
|
+
|
|
295
|
+
@then('Formula result updates automatically')
|
|
296
|
+
def step_impl(context):
|
|
297
|
+
updated_entity = get_entity(entity_id)
|
|
298
|
+
expected_amount = 5 * 10.50
|
|
299
|
+
assert updated_entity.amount == expected_amount
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### Security Testing Patterns
|
|
303
|
+
|
|
304
|
+
```python
|
|
305
|
+
# Test role-based access
|
|
306
|
+
@given('User with specific role')
|
|
307
|
+
def step_impl(context):
|
|
308
|
+
context.auth_header = test_utils.login(user='role_specific_user')
|
|
309
|
+
|
|
310
|
+
@when('User accesses restricted resource')
|
|
311
|
+
def step_impl(context):
|
|
312
|
+
r = requests.get(url=restricted_api_url, headers=context.auth_header)
|
|
313
|
+
context.response = r
|
|
314
|
+
|
|
315
|
+
@then('Access is properly controlled')
|
|
316
|
+
def step_impl(context):
|
|
317
|
+
# Should succeed for authorized users, fail for others
|
|
318
|
+
if user_has_permission:
|
|
319
|
+
assert context.response.status_code == 200
|
|
320
|
+
else:
|
|
321
|
+
assert context.response.status_code in [401, 403]
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### Project-Specific Considerations
|
|
325
|
+
|
|
326
|
+
When creating tests for a specific project:
|
|
327
|
+
|
|
328
|
+
1. **Identify Key Business Rules**: What are the main business logic rules in `logic/declare_logic.py`?
|
|
329
|
+
2. **Map Test Scenarios**: Create scenarios that exercise each major rule type
|
|
330
|
+
3. **Use Domain Language**: Write scenarios in business terms, not technical terms
|
|
331
|
+
4. **Test Rule Interactions**: Verify that rules work together correctly
|
|
332
|
+
5. **Include Edge Cases**: Test boundary conditions and error cases
|
|
333
|
+
|
|
334
|
+
### API Endpoint Patterns
|
|
335
|
+
|
|
336
|
+
```python
|
|
337
|
+
# Standard API endpoint patterns for any project
|
|
338
|
+
base_url = "http://localhost:5656/api"
|
|
339
|
+
|
|
340
|
+
# Get entity with relationships
|
|
341
|
+
get_url = f"{base_url}/{EntityName}/{entity_id}/?include={RelatedEntity}List"
|
|
342
|
+
|
|
343
|
+
# Create new entity
|
|
344
|
+
post_url = f"{base_url}/{EntityName}/"
|
|
345
|
+
post_data = {"data": {"attributes": {...}, "type": "EntityName"}}
|
|
346
|
+
|
|
347
|
+
# Update existing entity
|
|
348
|
+
patch_url = f"{base_url}/{EntityName}/{entity_id}/"
|
|
349
|
+
patch_data = {"data": {"attributes": {...}, "type": "EntityName", "id": entity_id}}
|
|
350
|
+
|
|
351
|
+
# Delete entity
|
|
352
|
+
delete_url = f"{base_url}/{EntityName}/{entity_id}/"
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
## 📊 Test Reports and Logging
|
|
356
|
+
|
|
357
|
+
- **Logic Reports**: Generated in `reports/` showing which rules executed
|
|
358
|
+
- **Behave Output**: Standard BDD test results with pass/fail status
|
|
359
|
+
- **Logic Logs**: Detailed rule execution in `logs/scenario_logic_logs/`
|
|
360
|
+
- **Server Logs**: API request/response details and errors
|
|
361
|
+
|
|
362
|
+
## 🔍 Debugging Tests
|
|
363
|
+
|
|
364
|
+
### Common Issues and Solutions
|
|
365
|
+
|
|
366
|
+
1. **Authentication Failures**: Check `Config.SECURITY_ENABLED` and login credentials
|
|
367
|
+
2. **Database State**: If tests fail, restore database to clean state
|
|
368
|
+
3. **Rule Not Firing**: Verify rule syntax in `logic/declare_logic.py`
|
|
369
|
+
4. **API Errors**: Check server console and `logs/scenario_logic_logs/`
|
|
370
|
+
|
|
371
|
+
### Debug Steps
|
|
372
|
+
|
|
373
|
+
```python
|
|
374
|
+
# Add debug logging to your test steps
|
|
375
|
+
test_utils.prt(f"Before: {entity_before}", scenario_name)
|
|
376
|
+
test_utils.prt(f"API Response: {response.text}", scenario_name)
|
|
377
|
+
test_utils.prt(f"After: {entity_after}", scenario_name)
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
## ⚠️ Important Notes
|
|
381
|
+
|
|
382
|
+
- **Data Restoration**: Tests automatically restore data, but partial failures may require manual database restore
|
|
383
|
+
- **Security Mode**: Behave tests work with security enabled; basic tests require security disabled
|
|
384
|
+
- **Rule Engine Focus**: Tests specifically validate LogicBank rule execution, not just API responses
|
|
385
|
+
- **Performance Testing**: Tests can include logic optimization verification (rule pruning, etc.)
|
|
386
|
+
- **Concurrent Testing**: Be aware of database locking if running multiple test suites simultaneously
|
|
387
|
+
|
|
388
|
+
## 🎯 Best Practices
|
|
389
|
+
|
|
390
|
+
1. **Test Business Logic First**: Focus on rules and constraints before API mechanics
|
|
391
|
+
2. **Use Meaningful Test Data**: Choose entities and values that clearly demonstrate rule behavior
|
|
392
|
+
3. **Document Test Scenarios**: Explain the business purpose of each test
|
|
393
|
+
4. **Keep Tests Independent**: Each scenario should work regardless of other test execution
|
|
394
|
+
5. **Verify Rule Execution**: Don't just test API responses, verify that business logic actually ran
|
|
395
|
+
6. **Test Error Cases**: Include scenarios that should fail due to business constraints
|
|
File without changes
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
about:
|
|
2
|
+
date: August 09, 2025 08:12:46
|
|
3
|
+
recent_changes: works with modified safrs-react-admin
|
|
4
|
+
version: 0.0.0
|
|
5
|
+
api_root: '{http_type}://{swagger_host}:{port}/{api}'
|
|
6
|
+
authentication: '{system-default}'
|
|
7
|
+
info:
|
|
8
|
+
number_relationships: 4
|
|
9
|
+
number_tables: 5
|
|
10
|
+
info_toggle_checked: true
|
|
11
|
+
resources:
|
|
12
|
+
Customer:
|
|
13
|
+
attributes:
|
|
14
|
+
- label: ' name*'
|
|
15
|
+
name: name
|
|
16
|
+
search: true
|
|
17
|
+
sort: true
|
|
18
|
+
- name: balance
|
|
19
|
+
type: DECIMAL
|
|
20
|
+
- name: credit_limit
|
|
21
|
+
type: DECIMAL
|
|
22
|
+
- name: email
|
|
23
|
+
- name: email_opt_out
|
|
24
|
+
type: Boolean
|
|
25
|
+
- name: id
|
|
26
|
+
tab_groups:
|
|
27
|
+
- direction: tomany
|
|
28
|
+
fks:
|
|
29
|
+
- customer_id
|
|
30
|
+
name: OrderList
|
|
31
|
+
resource: Order
|
|
32
|
+
- direction: tomany
|
|
33
|
+
fks:
|
|
34
|
+
- customer_id
|
|
35
|
+
name: SysEmailList
|
|
36
|
+
resource: SysEmail
|
|
37
|
+
type: Customer
|
|
38
|
+
user_key: name
|
|
39
|
+
Item:
|
|
40
|
+
attributes:
|
|
41
|
+
- label: ' id*'
|
|
42
|
+
name: id
|
|
43
|
+
search: true
|
|
44
|
+
sort: true
|
|
45
|
+
- name: order_id
|
|
46
|
+
- name: product_id
|
|
47
|
+
required: true
|
|
48
|
+
- name: quantity
|
|
49
|
+
required: true
|
|
50
|
+
- name: amount
|
|
51
|
+
type: DECIMAL
|
|
52
|
+
- name: unit_price
|
|
53
|
+
type: DECIMAL
|
|
54
|
+
tab_groups:
|
|
55
|
+
- direction: toone
|
|
56
|
+
fks:
|
|
57
|
+
- order_id
|
|
58
|
+
name: order
|
|
59
|
+
resource: Order
|
|
60
|
+
- direction: toone
|
|
61
|
+
fks:
|
|
62
|
+
- product_id
|
|
63
|
+
name: product
|
|
64
|
+
resource: Product
|
|
65
|
+
type: Item
|
|
66
|
+
user_key: id
|
|
67
|
+
Order:
|
|
68
|
+
attributes:
|
|
69
|
+
- label: ' id*'
|
|
70
|
+
name: id
|
|
71
|
+
search: true
|
|
72
|
+
sort: true
|
|
73
|
+
- name: customer_id
|
|
74
|
+
required: true
|
|
75
|
+
- name: notes
|
|
76
|
+
- name: CreatedOn
|
|
77
|
+
type: DATE
|
|
78
|
+
- name: amount_total
|
|
79
|
+
type: DECIMAL
|
|
80
|
+
- name: date_shipped
|
|
81
|
+
type: DATE
|
|
82
|
+
tab_groups:
|
|
83
|
+
- direction: tomany
|
|
84
|
+
fks:
|
|
85
|
+
- order_id
|
|
86
|
+
name: ItemList
|
|
87
|
+
resource: Item
|
|
88
|
+
- direction: toone
|
|
89
|
+
fks:
|
|
90
|
+
- customer_id
|
|
91
|
+
name: customer
|
|
92
|
+
resource: Customer
|
|
93
|
+
type: Order
|
|
94
|
+
user_key: id
|
|
95
|
+
Product:
|
|
96
|
+
attributes:
|
|
97
|
+
- label: ' name*'
|
|
98
|
+
name: name
|
|
99
|
+
search: true
|
|
100
|
+
sort: true
|
|
101
|
+
- name: unit_price
|
|
102
|
+
type: DECIMAL
|
|
103
|
+
- name: id
|
|
104
|
+
tab_groups:
|
|
105
|
+
- direction: tomany
|
|
106
|
+
fks:
|
|
107
|
+
- product_id
|
|
108
|
+
name: ItemList
|
|
109
|
+
resource: Item
|
|
110
|
+
type: Product
|
|
111
|
+
user_key: name
|
|
112
|
+
SysEmail:
|
|
113
|
+
attributes:
|
|
114
|
+
- label: ' id*'
|
|
115
|
+
name: id
|
|
116
|
+
search: true
|
|
117
|
+
sort: true
|
|
118
|
+
- name: customer_id
|
|
119
|
+
required: true
|
|
120
|
+
- name: subject
|
|
121
|
+
- name: message
|
|
122
|
+
- name: CreatedOn
|
|
123
|
+
type: DATETIME
|
|
124
|
+
tab_groups:
|
|
125
|
+
- direction: toone
|
|
126
|
+
fks:
|
|
127
|
+
- customer_id
|
|
128
|
+
name: customer
|
|
129
|
+
resource: Customer
|
|
130
|
+
type: SysEmail
|
|
131
|
+
user_key: id
|
|
132
|
+
mcp-SysMcp:
|
|
133
|
+
attributes:
|
|
134
|
+
- name: request
|
|
135
|
+
type: textarea
|
|
136
|
+
- label: ' id*'
|
|
137
|
+
name: id
|
|
138
|
+
search: true
|
|
139
|
+
sort: true
|
|
140
|
+
show_when: isInserting == false
|
|
141
|
+
type: SysMcp
|
|
142
|
+
user_key: id
|
|
143
|
+
settings:
|
|
144
|
+
HomeJS: /admin-app/home.js
|
|
145
|
+
max_list_columns: 8
|
|
146
|
+
style_guide:
|
|
147
|
+
applicationLocales:
|
|
148
|
+
- en
|
|
149
|
+
- es
|
|
150
|
+
currency_symbol: $
|
|
151
|
+
currency_symbol_position: left
|
|
152
|
+
date_format: LL
|
|
153
|
+
decimal_max: '1000000000'
|
|
154
|
+
decimal_min: '2'
|
|
155
|
+
decimal_separator: .
|
|
156
|
+
detail_mode: tab
|
|
157
|
+
edit_on_mode: dblclick
|
|
158
|
+
exclude_listpicker: false
|
|
159
|
+
include_translation: 'false'
|
|
160
|
+
keycloak_client_id: alsclient
|
|
161
|
+
keycloak_realm: kcals
|
|
162
|
+
keycloak_url: http://localhost:8080
|
|
163
|
+
locale: en
|
|
164
|
+
max_decimal_digits: '4'
|
|
165
|
+
min_decimal_digits: '2'
|
|
166
|
+
new_mode: dialog
|
|
167
|
+
pick_style: list
|
|
168
|
+
row_height: small,
|
|
169
|
+
serviceType: JSONAPI
|
|
170
|
+
startSessionPath: /auth/login
|
|
171
|
+
style: light
|
|
172
|
+
thousand_separator: ','
|
|
173
|
+
use_keycloak: 'false'
|