@infosel-sdk/markets 1.2.0
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.
- package/CHANGELOG.md +90 -0
- package/README.md +996 -0
- package/package.json +52 -0
- package/src/__tests__/__mocks__/apis/charts-api.mock.d.ts +106 -0
- package/src/__tests__/__mocks__/apis/charts-api.mock.js +110 -0
- package/src/__tests__/__mocks__/apis/charts-api.mock.js.map +1 -0
- package/src/__tests__/__mocks__/apis/markets-api.mock.d.ts +148 -0
- package/src/__tests__/__mocks__/apis/markets-api.mock.js +121 -0
- package/src/__tests__/__mocks__/apis/markets-api.mock.js.map +1 -0
- package/src/__tests__/__mocks__/core/auth-provider.mock.d.ts +35 -0
- package/src/__tests__/__mocks__/core/auth-provider.mock.js +28 -0
- package/src/__tests__/__mocks__/core/auth-provider.mock.js.map +1 -0
- package/src/__tests__/__mocks__/core/graphql-client.mock.d.ts +36 -0
- package/src/__tests__/__mocks__/core/graphql-client.mock.js +60 -0
- package/src/__tests__/__mocks__/core/graphql-client.mock.js.map +1 -0
- package/src/__tests__/__mocks__/core/http-client.mock.d.ts +43 -0
- package/src/__tests__/__mocks__/core/http-client.mock.js +40 -0
- package/src/__tests__/__mocks__/core/http-client.mock.js.map +1 -0
- package/src/__tests__/__mocks__/core/sdk-manager.mock.d.ts +64 -0
- package/src/__tests__/__mocks__/core/sdk-manager.mock.js +46 -0
- package/src/__tests__/__mocks__/core/sdk-manager.mock.js.map +1 -0
- package/src/__tests__/__mocks__/core/storage.mock.d.ts +32 -0
- package/src/__tests__/__mocks__/core/storage.mock.js +35 -0
- package/src/__tests__/__mocks__/core/storage.mock.js.map +1 -0
- package/src/__tests__/__mocks__/index.d.ts +9 -0
- package/src/__tests__/__mocks__/index.js +16 -0
- package/src/__tests__/__mocks__/index.js.map +1 -0
- package/src/__tests__/e2e/config/auth.config.d.ts +44 -0
- package/src/__tests__/e2e/config/auth.config.js +217 -0
- package/src/__tests__/e2e/config/auth.config.js.map +1 -0
- package/src/__tests__/e2e/config/environment.config.d.ts +29 -0
- package/src/__tests__/e2e/config/environment.config.js +74 -0
- package/src/__tests__/e2e/config/environment.config.js.map +1 -0
- package/src/__tests__/e2e/fixtures/test-scenarios.d.ts +176 -0
- package/src/__tests__/e2e/fixtures/test-scenarios.js +181 -0
- package/src/__tests__/e2e/fixtures/test-scenarios.js.map +1 -0
- package/src/__tests__/e2e/helpers/assertion.helper.d.ts +68 -0
- package/src/__tests__/e2e/helpers/assertion.helper.js +181 -0
- package/src/__tests__/e2e/helpers/assertion.helper.js.map +1 -0
- package/src/__tests__/e2e/helpers/auth.helper.d.ts +56 -0
- package/src/__tests__/e2e/helpers/auth.helper.js +188 -0
- package/src/__tests__/e2e/helpers/auth.helper.js.map +1 -0
- package/src/__tests__/e2e/helpers/performance.helper.d.ts +85 -0
- package/src/__tests__/e2e/helpers/performance.helper.js +203 -0
- package/src/__tests__/e2e/helpers/performance.helper.js.map +1 -0
- package/src/__tests__/e2e/setup/global-setup.e2e.d.ts +5 -0
- package/src/__tests__/e2e/setup/global-setup.e2e.js +80 -0
- package/src/__tests__/e2e/setup/global-setup.e2e.js.map +1 -0
- package/src/__tests__/e2e/setup/global-teardown.e2e.d.ts +5 -0
- package/src/__tests__/e2e/setup/global-teardown.e2e.js +61 -0
- package/src/__tests__/e2e/setup/global-teardown.e2e.js.map +1 -0
- package/src/__tests__/e2e/setup/jest.e2e.config.d.ts +7 -0
- package/src/__tests__/e2e/setup/jest.e2e.config.js +58 -0
- package/src/__tests__/e2e/setup/jest.e2e.config.js.map +1 -0
- package/src/__tests__/e2e/setup/setup.e2e.d.ts +8 -0
- package/src/__tests__/e2e/setup/setup.e2e.js +61 -0
- package/src/__tests__/e2e/setup/setup.e2e.js.map +1 -0
- package/src/__tests__/setup.d.ts +16 -0
- package/src/__tests__/setup.js +34 -0
- package/src/__tests__/setup.js.map +1 -0
- package/src/__tests__/utils/mock-datasource.d.ts +5 -0
- package/src/__tests__/utils/mock-datasource.js +39 -0
- package/src/__tests__/utils/mock-datasource.js.map +1 -0
- package/src/__tests__/utils/mock-factories.d.ts +547 -0
- package/src/__tests__/utils/mock-factories.js +226 -0
- package/src/__tests__/utils/mock-factories.js.map +1 -0
- package/src/__tests__/utils/mock-repository.d.ts +21 -0
- package/src/__tests__/utils/mock-repository.js +75 -0
- package/src/__tests__/utils/mock-repository.js.map +1 -0
- package/src/__tests__/utils/test-helpers.d.ts +43 -0
- package/src/__tests__/utils/test-helpers.js +129 -0
- package/src/__tests__/utils/test-helpers.js.map +1 -0
- package/src/data/datasources/charts_datasource_impl.d.ts +11 -0
- package/src/data/datasources/charts_datasource_impl.js +52 -0
- package/src/data/datasources/charts_datasource_impl.js.map +1 -0
- package/src/data/datasources/markets_datasource_impl.d.ts +57 -0
- package/src/data/datasources/markets_datasource_impl.js +704 -0
- package/src/data/datasources/markets_datasource_impl.js.map +1 -0
- package/src/data/di/infosel_charts_module.d.ts +18 -0
- package/src/data/di/infosel_charts_module.js +34 -0
- package/src/data/di/infosel_charts_module.js.map +1 -0
- package/src/data/di/infosel_markets_component.d.ts +71 -0
- package/src/data/di/infosel_markets_component.js +196 -0
- package/src/data/di/infosel_markets_component.js.map +1 -0
- package/src/data/di/infosel_markets_module.d.ts +21 -0
- package/src/data/di/infosel_markets_module.js +40 -0
- package/src/data/di/infosel_markets_module.js.map +1 -0
- package/src/data/mappers/markets_mapper.d.ts +52 -0
- package/src/data/mappers/markets_mapper.js +195 -0
- package/src/data/mappers/markets_mapper.js.map +1 -0
- package/src/data/models/chart_item_model.d.ts +8 -0
- package/src/data/models/chart_item_model.js +3 -0
- package/src/data/models/chart_item_model.js.map +1 -0
- package/src/data/models/delete_workspace_response_model.d.ts +5 -0
- package/src/data/models/delete_workspace_response_model.js +3 -0
- package/src/data/models/delete_workspace_response_model.js.map +1 -0
- package/src/data/models/get_user_workspaces_response_model.d.ts +13 -0
- package/src/data/models/get_user_workspaces_response_model.js +3 -0
- package/src/data/models/get_user_workspaces_response_model.js.map +1 -0
- package/src/data/models/instrument_detail_financial_model.d.ts +8 -0
- package/src/data/models/instrument_detail_financial_model.js +3 -0
- package/src/data/models/instrument_detail_financial_model.js.map +1 -0
- package/src/data/models/instrument_detail_financial_reasons_model.d.ts +40 -0
- package/src/data/models/instrument_detail_financial_reasons_model.js +3 -0
- package/src/data/models/instrument_detail_financial_reasons_model.js.map +1 -0
- package/src/data/models/instrument_detail_profile_model.d.ts +25 -0
- package/src/data/models/instrument_detail_profile_model.js +3 -0
- package/src/data/models/instrument_detail_profile_model.js.map +1 -0
- package/src/data/models/instrument_fields_model.d.ts +67 -0
- package/src/data/models/instrument_fields_model.js +3 -0
- package/src/data/models/instrument_fields_model.js.map +1 -0
- package/src/data/models/instrument_model.d.ts +5 -0
- package/src/data/models/instrument_model.js +3 -0
- package/src/data/models/instrument_model.js.map +1 -0
- package/src/data/models/instrument_report_financial_reasons_model.d.ts +21 -0
- package/src/data/models/instrument_report_financial_reasons_model.js +3 -0
- package/src/data/models/instrument_report_financial_reasons_model.js.map +1 -0
- package/src/data/models/project_model.d.ts +12 -0
- package/src/data/models/project_model.js +3 -0
- package/src/data/models/project_model.js.map +1 -0
- package/src/data/models/project_widgets_response_model.d.ts +8 -0
- package/src/data/models/project_widgets_response_model.js +3 -0
- package/src/data/models/project_widgets_response_model.js.map +1 -0
- package/src/data/models/user_model.d.ts +7 -0
- package/src/data/models/user_model.js +3 -0
- package/src/data/models/user_model.js.map +1 -0
- package/src/data/models/widget_layout_model.d.ts +6 -0
- package/src/data/models/widget_layout_model.js +3 -0
- package/src/data/models/widget_layout_model.js.map +1 -0
- package/src/data/models/widget_model.d.ts +15 -0
- package/src/data/models/widget_model.js +3 -0
- package/src/data/models/widget_model.js.map +1 -0
- package/src/data/models/widget_size_model.d.ts +9 -0
- package/src/data/models/widget_size_model.js +3 -0
- package/src/data/models/widget_size_model.js.map +1 -0
- package/src/data/models/widget_table_column_format_model.d.ts +6 -0
- package/src/data/models/widget_table_column_format_model.js +3 -0
- package/src/data/models/widget_table_column_format_model.js.map +1 -0
- package/src/data/models/widget_table_column_model.d.ts +8 -0
- package/src/data/models/widget_table_column_model.js +3 -0
- package/src/data/models/widget_table_column_model.js.map +1 -0
- package/src/data/models/widget_ticker_configuration.d.ts +7 -0
- package/src/data/models/widget_ticker_configuration.js +3 -0
- package/src/data/models/widget_ticker_configuration.js.map +1 -0
- package/src/data/models/workspace_model.d.ts +6 -0
- package/src/data/models/workspace_model.js +3 -0
- package/src/data/models/workspace_model.js.map +1 -0
- package/src/data/repositories/charts_repository_impl.d.ts +9 -0
- package/src/data/repositories/charts_repository_impl.js +22 -0
- package/src/data/repositories/charts_repository_impl.js.map +1 -0
- package/src/data/repositories/markets_repository_impl.d.ts +50 -0
- package/src/data/repositories/markets_repository_impl.js +69 -0
- package/src/data/repositories/markets_repository_impl.js.map +1 -0
- package/src/domain/datasources/charts_datasource.d.ts +6 -0
- package/src/domain/datasources/charts_datasource.js +3 -0
- package/src/domain/datasources/charts_datasource.js.map +1 -0
- package/src/domain/datasources/markets_datasource.d.ts +45 -0
- package/src/domain/datasources/markets_datasource.js +3 -0
- package/src/domain/datasources/markets_datasource.js.map +1 -0
- package/src/domain/di/charts_module.d.ts +8 -0
- package/src/domain/di/charts_module.js +3 -0
- package/src/domain/di/charts_module.js.map +1 -0
- package/src/domain/di/markets_component.d.ts +34 -0
- package/src/domain/di/markets_component.js +3 -0
- package/src/domain/di/markets_component.js.map +1 -0
- package/src/domain/di/markets_module.d.ts +9 -0
- package/src/domain/di/markets_module.js +3 -0
- package/src/domain/di/markets_module.js.map +1 -0
- package/src/domain/entities/chart_item.d.ts +8 -0
- package/src/domain/entities/chart_item.js +3 -0
- package/src/domain/entities/chart_item.js.map +1 -0
- package/src/domain/entities/chart_period.d.ts +6 -0
- package/src/domain/entities/chart_period.js +3 -0
- package/src/domain/entities/chart_period.js.map +1 -0
- package/src/domain/entities/chart_request.d.ts +5 -0
- package/src/domain/entities/chart_request.js +3 -0
- package/src/domain/entities/chart_request.js.map +1 -0
- package/src/domain/entities/create_instrument_request.d.ts +5 -0
- package/src/domain/entities/create_instrument_request.js +3 -0
- package/src/domain/entities/create_instrument_request.js.map +1 -0
- package/src/domain/entities/create_widget_request.d.ts +10 -0
- package/src/domain/entities/create_widget_request.js +3 -0
- package/src/domain/entities/create_widget_request.js.map +1 -0
- package/src/domain/entities/create_workspace_request.d.ts +5 -0
- package/src/domain/entities/create_workspace_request.js +3 -0
- package/src/domain/entities/create_workspace_request.js.map +1 -0
- package/src/domain/entities/delete_workspace_request.d.ts +3 -0
- package/src/domain/entities/delete_workspace_request.js +3 -0
- package/src/domain/entities/delete_workspace_request.js.map +1 -0
- package/src/domain/entities/get_instruments_request.d.ts +12 -0
- package/src/domain/entities/get_instruments_request.js +3 -0
- package/src/domain/entities/get_instruments_request.js.map +1 -0
- package/src/domain/entities/get_project_widgets_request.d.ts +12 -0
- package/src/domain/entities/get_project_widgets_request.js +3 -0
- package/src/domain/entities/get_project_widgets_request.js.map +1 -0
- package/src/domain/entities/get_user_workspaces_request.d.ts +4 -0
- package/src/domain/entities/get_user_workspaces_request.js +3 -0
- package/src/domain/entities/get_user_workspaces_request.js.map +1 -0
- package/src/domain/entities/get_workspace_request.d.ts +3 -0
- package/src/domain/entities/get_workspace_request.js +3 -0
- package/src/domain/entities/get_workspace_request.js.map +1 -0
- package/src/domain/entities/get_workspaces_by_user_request.d.ts +12 -0
- package/src/domain/entities/get_workspaces_by_user_request.js +3 -0
- package/src/domain/entities/get_workspaces_by_user_request.js.map +1 -0
- package/src/domain/entities/get_workspaces_request.d.ts +12 -0
- package/src/domain/entities/get_workspaces_request.js +3 -0
- package/src/domain/entities/get_workspaces_request.js.map +1 -0
- package/src/domain/entities/index.d.ts +28 -0
- package/src/domain/entities/index.js +32 -0
- package/src/domain/entities/index.js.map +1 -0
- package/src/domain/entities/instrument.d.ts +4 -0
- package/src/domain/entities/instrument.js +3 -0
- package/src/domain/entities/instrument.js.map +1 -0
- package/src/domain/entities/instrument_detail_financial.d.ts +8 -0
- package/src/domain/entities/instrument_detail_financial.js +3 -0
- package/src/domain/entities/instrument_detail_financial.js.map +1 -0
- package/src/domain/entities/instrument_detail_financial_annual_request.d.ts +5 -0
- package/src/domain/entities/instrument_detail_financial_annual_request.js +3 -0
- package/src/domain/entities/instrument_detail_financial_annual_request.js.map +1 -0
- package/src/domain/entities/instrument_detail_financial_quarterly_request.d.ts +5 -0
- package/src/domain/entities/instrument_detail_financial_quarterly_request.js +3 -0
- package/src/domain/entities/instrument_detail_financial_quarterly_request.js.map +1 -0
- package/src/domain/entities/instrument_detail_financial_reasons.d.ts +40 -0
- package/src/domain/entities/instrument_detail_financial_reasons.js +3 -0
- package/src/domain/entities/instrument_detail_financial_reasons.js.map +1 -0
- package/src/domain/entities/instrument_detail_financial_reasons_request.d.ts +5 -0
- package/src/domain/entities/instrument_detail_financial_reasons_request.js +3 -0
- package/src/domain/entities/instrument_detail_financial_reasons_request.js.map +1 -0
- package/src/domain/entities/instrument_detail_profile.d.ts +25 -0
- package/src/domain/entities/instrument_detail_profile.js +3 -0
- package/src/domain/entities/instrument_detail_profile.js.map +1 -0
- package/src/domain/entities/instrument_detail_profile_request.d.ts +3 -0
- package/src/domain/entities/instrument_detail_profile_request.js +3 -0
- package/src/domain/entities/instrument_detail_profile_request.js.map +1 -0
- package/src/domain/entities/instrument_fields.d.ts +69 -0
- package/src/domain/entities/instrument_fields.js +3 -0
- package/src/domain/entities/instrument_fields.js.map +1 -0
- package/src/domain/entities/instrument_report_financial_reasons.d.ts +21 -0
- package/src/domain/entities/instrument_report_financial_reasons.js +3 -0
- package/src/domain/entities/instrument_report_financial_reasons.js.map +1 -0
- package/src/domain/entities/instrument_report_financial_reasons_request.d.ts +4 -0
- package/src/domain/entities/instrument_report_financial_reasons_request.js +3 -0
- package/src/domain/entities/instrument_report_financial_reasons_request.js.map +1 -0
- package/src/domain/entities/instruments_response.d.ts +6 -0
- package/src/domain/entities/instruments_response.js +3 -0
- package/src/domain/entities/instruments_response.js.map +1 -0
- package/src/domain/entities/period_type.d.ts +1 -0
- package/src/domain/entities/period_type.js +3 -0
- package/src/domain/entities/period_type.js.map +1 -0
- package/src/domain/entities/project_widgets_container.d.ts +12 -0
- package/src/domain/entities/project_widgets_container.js +3 -0
- package/src/domain/entities/project_widgets_container.js.map +1 -0
- package/src/domain/entities/search_instruments_request.d.ts +7 -0
- package/src/domain/entities/search_instruments_request.js +3 -0
- package/src/domain/entities/search_instruments_request.js.map +1 -0
- package/src/domain/entities/search_result_item.d.ts +5 -0
- package/src/domain/entities/search_result_item.js +3 -0
- package/src/domain/entities/search_result_item.js.map +1 -0
- package/src/domain/entities/update_widget_instruments_reques.d.ts +11 -0
- package/src/domain/entities/update_widget_instruments_reques.js +3 -0
- package/src/domain/entities/update_widget_instruments_reques.js.map +1 -0
- package/src/domain/entities/user_workspaces.d.ts +8 -0
- package/src/domain/entities/user_workspaces.js +3 -0
- package/src/domain/entities/user_workspaces.js.map +1 -0
- package/src/domain/entities/widget.d.ts +46 -0
- package/src/domain/entities/widget.js +3 -0
- package/src/domain/entities/widget.js.map +1 -0
- package/src/domain/entities/workspace.d.ts +4 -0
- package/src/domain/entities/workspace.js +3 -0
- package/src/domain/entities/workspace.js.map +1 -0
- package/src/domain/entities/workspace_widgets.d.ts +6 -0
- package/src/domain/entities/workspace_widgets.js +3 -0
- package/src/domain/entities/workspace_widgets.js.map +1 -0
- package/src/domain/entities/workspaces_container.d.ts +18 -0
- package/src/domain/entities/workspaces_container.js +3 -0
- package/src/domain/entities/workspaces_container.js.map +1 -0
- package/src/domain/repositories/charts_repository.d.ts +5 -0
- package/src/domain/repositories/charts_repository.js +3 -0
- package/src/domain/repositories/charts_repository.js.map +1 -0
- package/src/domain/repositories/markets_repository.d.ts +41 -0
- package/src/domain/repositories/markets_repository.js +3 -0
- package/src/domain/repositories/markets_repository.js.map +1 -0
- package/src/domain/use_cases/create_instrument_use_case.d.ts +9 -0
- package/src/domain/use_cases/create_instrument_use_case.js +22 -0
- package/src/domain/use_cases/create_instrument_use_case.js.map +1 -0
- package/src/domain/use_cases/create_widget_use_case.d.ts +9 -0
- package/src/domain/use_cases/create_widget_use_case.js +22 -0
- package/src/domain/use_cases/create_widget_use_case.js.map +1 -0
- package/src/domain/use_cases/create_workspace_use_case.d.ts +9 -0
- package/src/domain/use_cases/create_workspace_use_case.js +22 -0
- package/src/domain/use_cases/create_workspace_use_case.js.map +1 -0
- package/src/domain/use_cases/delete_instrument_use_case.d.ts +7 -0
- package/src/domain/use_cases/delete_instrument_use_case.js +19 -0
- package/src/domain/use_cases/delete_instrument_use_case.js.map +1 -0
- package/src/domain/use_cases/delete_widget_use_case.d.ts +7 -0
- package/src/domain/use_cases/delete_widget_use_case.js +19 -0
- package/src/domain/use_cases/delete_widget_use_case.js.map +1 -0
- package/src/domain/use_cases/delete_workspace_use_case.d.ts +8 -0
- package/src/domain/use_cases/delete_workspace_use_case.js +22 -0
- package/src/domain/use_cases/delete_workspace_use_case.js.map +1 -0
- package/src/domain/use_cases/get_chart_data_use_case.d.ts +9 -0
- package/src/domain/use_cases/get_chart_data_use_case.js +16 -0
- package/src/domain/use_cases/get_chart_data_use_case.js.map +1 -0
- package/src/domain/use_cases/get_instrument_detail_financial_annual_use_case.d.ts +8 -0
- package/src/domain/use_cases/get_instrument_detail_financial_annual_use_case.js +16 -0
- package/src/domain/use_cases/get_instrument_detail_financial_annual_use_case.js.map +1 -0
- package/src/domain/use_cases/get_instrument_detail_financial_quartely_use_case.d.ts +8 -0
- package/src/domain/use_cases/get_instrument_detail_financial_quartely_use_case.js +16 -0
- package/src/domain/use_cases/get_instrument_detail_financial_quartely_use_case.js.map +1 -0
- package/src/domain/use_cases/get_instrument_detail_financial_reasons_use_case.d.ts +8 -0
- package/src/domain/use_cases/get_instrument_detail_financial_reasons_use_case.js +16 -0
- package/src/domain/use_cases/get_instrument_detail_financial_reasons_use_case.js.map +1 -0
- package/src/domain/use_cases/get_instrument_detail_profile_use_case.d.ts +8 -0
- package/src/domain/use_cases/get_instrument_detail_profile_use_case.js +16 -0
- package/src/domain/use_cases/get_instrument_detail_profile_use_case.js.map +1 -0
- package/src/domain/use_cases/get_instrument_fields_use_case.d.ts +8 -0
- package/src/domain/use_cases/get_instrument_fields_use_case.js +19 -0
- package/src/domain/use_cases/get_instrument_fields_use_case.js.map +1 -0
- package/src/domain/use_cases/get_instrument_report_financial_reasons.d.ts +9 -0
- package/src/domain/use_cases/get_instrument_report_financial_reasons.js +16 -0
- package/src/domain/use_cases/get_instrument_report_financial_reasons.js.map +1 -0
- package/src/domain/use_cases/get_instruments_use_case.d.ts +9 -0
- package/src/domain/use_cases/get_instruments_use_case.js +16 -0
- package/src/domain/use_cases/get_instruments_use_case.js.map +1 -0
- package/src/domain/use_cases/get_project_widgets_use_case.d.ts +9 -0
- package/src/domain/use_cases/get_project_widgets_use_case.js +19 -0
- package/src/domain/use_cases/get_project_widgets_use_case.js.map +1 -0
- package/src/domain/use_cases/get_user_workspace_use_case.d.ts +9 -0
- package/src/domain/use_cases/get_user_workspace_use_case.js +22 -0
- package/src/domain/use_cases/get_user_workspace_use_case.js.map +1 -0
- package/src/domain/use_cases/get_workspace_use_case.d.ts +9 -0
- package/src/domain/use_cases/get_workspace_use_case.js +19 -0
- package/src/domain/use_cases/get_workspace_use_case.js.map +1 -0
- package/src/domain/use_cases/get_workspaces_by_user_use_case.d.ts +9 -0
- package/src/domain/use_cases/get_workspaces_by_user_use_case.js +19 -0
- package/src/domain/use_cases/get_workspaces_by_user_use_case.js.map +1 -0
- package/src/domain/use_cases/get_workspaces_use_case.d.ts +9 -0
- package/src/domain/use_cases/get_workspaces_use_case.js +19 -0
- package/src/domain/use_cases/get_workspaces_use_case.js.map +1 -0
- package/src/domain/use_cases/search_instruments_use_case.d.ts +9 -0
- package/src/domain/use_cases/search_instruments_use_case.js +25 -0
- package/src/domain/use_cases/search_instruments_use_case.js.map +1 -0
- package/src/domain/use_cases/update_widget_instruments_use_case.d.ts +9 -0
- package/src/domain/use_cases/update_widget_instruments_use_case.js +22 -0
- package/src/domain/use_cases/update_widget_instruments_use_case.js.map +1 -0
- package/src/index.d.ts +8 -0
- package/src/index.js +12 -0
- package/src/index.js.map +1 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Assertion Helper Functions
|
|
4
|
+
* Provides reusable assertion utilities for E2E tests
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.AssertionHelper = exports.logSuccessResult = exports.validateExpectedError = exports.validateSuccessResponse = exports.validateInstrumentId = exports.validateUUID = exports.validateResponseTime = exports.validateErrorResponse = exports.validateWorkspacesByUserResponse = exports.validateWorkspacesArray = exports.validateWorkspaceStructure = void 0;
|
|
8
|
+
const test_scenarios_1 = require("../fixtures/test-scenarios");
|
|
9
|
+
/**
|
|
10
|
+
* Validates basic workspace structure
|
|
11
|
+
*/
|
|
12
|
+
function validateWorkspaceStructure(workspace) {
|
|
13
|
+
expect(workspace).toBeDefined();
|
|
14
|
+
expect(workspace).toHaveProperty('id');
|
|
15
|
+
expect(workspace).toHaveProperty('name');
|
|
16
|
+
expect(typeof workspace.id).toBe('string');
|
|
17
|
+
expect(typeof workspace.name).toBe('string');
|
|
18
|
+
expect(workspace.id.trim()).not.toBe('');
|
|
19
|
+
expect(workspace.name.trim()).not.toBe('');
|
|
20
|
+
}
|
|
21
|
+
exports.validateWorkspaceStructure = validateWorkspaceStructure;
|
|
22
|
+
/**
|
|
23
|
+
* Validates workspaces array structure
|
|
24
|
+
*/
|
|
25
|
+
function validateWorkspacesArray(workspaces) {
|
|
26
|
+
expect(Array.isArray(workspaces)).toBe(true);
|
|
27
|
+
if (workspaces.length > 0) {
|
|
28
|
+
workspaces.forEach((workspace, index) => {
|
|
29
|
+
try {
|
|
30
|
+
validateWorkspaceStructure(workspace);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
throw new Error(`Invalid workspace structure at index ${index}: ${error}`);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.validateWorkspacesArray = validateWorkspacesArray;
|
|
39
|
+
/**
|
|
40
|
+
* Validates complete getWorkspacesByUser response
|
|
41
|
+
*/
|
|
42
|
+
function validateWorkspacesByUserResponse(response) {
|
|
43
|
+
expect(response).toBeDefined();
|
|
44
|
+
expect(response).toHaveProperty('workspaces');
|
|
45
|
+
// Validate workspaces array
|
|
46
|
+
validateWorkspacesArray(response.workspaces);
|
|
47
|
+
// Validate optional properties
|
|
48
|
+
if (response.widgets) {
|
|
49
|
+
expect(typeof response.widgets).toBe('object');
|
|
50
|
+
}
|
|
51
|
+
if (response.instruments) {
|
|
52
|
+
expect(typeof response.instruments).toBe('object');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.validateWorkspacesByUserResponse = validateWorkspacesByUserResponse;
|
|
56
|
+
/**
|
|
57
|
+
* Validates error response structure
|
|
58
|
+
*/
|
|
59
|
+
function validateErrorResponse(error, expectedStatusCodes) {
|
|
60
|
+
expect(error).toBeDefined();
|
|
61
|
+
expect(error.message).toBeDefined();
|
|
62
|
+
// Extract status code from error message
|
|
63
|
+
const statusCodeMatch = error.message.match(/(\d{3})/);
|
|
64
|
+
if (statusCodeMatch) {
|
|
65
|
+
const statusCode = parseInt(statusCodeMatch[1]);
|
|
66
|
+
expect((0, test_scenarios_1.isExpectedStatusCode)(statusCode, expectedStatusCodes)).toBe(true);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// If no status code in message, check if it's a network or validation error
|
|
70
|
+
const isNetworkError = error.message.includes('network') ||
|
|
71
|
+
error.message.includes('timeout') ||
|
|
72
|
+
error.message.includes('connection');
|
|
73
|
+
const isValidationError = error.message.includes('validation') ||
|
|
74
|
+
error.message.includes('required') ||
|
|
75
|
+
error.message.includes('invalid') ||
|
|
76
|
+
error.message.includes('400') ||
|
|
77
|
+
error.message.includes('Bad Request') ||
|
|
78
|
+
error.message.includes('Validation failed') ||
|
|
79
|
+
error.message.includes('uuid is expected') ||
|
|
80
|
+
error.message.includes('must not be null') ||
|
|
81
|
+
error.name === 'ApolloError' ||
|
|
82
|
+
(error.response &&
|
|
83
|
+
error.response.status >= 400 &&
|
|
84
|
+
error.response.status < 500);
|
|
85
|
+
expect(isNetworkError || isValidationError).toBe(true);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.validateErrorResponse = validateErrorResponse;
|
|
89
|
+
/**
|
|
90
|
+
* Validates response time is within acceptable limits
|
|
91
|
+
*/
|
|
92
|
+
function validateResponseTime(duration, maxDuration = 10000) {
|
|
93
|
+
expect(duration).toBeDefined();
|
|
94
|
+
expect(typeof duration).toBe('number');
|
|
95
|
+
expect(duration).toBeGreaterThan(0);
|
|
96
|
+
expect(duration).toBeLessThan(maxDuration);
|
|
97
|
+
}
|
|
98
|
+
exports.validateResponseTime = validateResponseTime;
|
|
99
|
+
/**
|
|
100
|
+
* Validates UUID format
|
|
101
|
+
*/
|
|
102
|
+
function validateUUID(uuid) {
|
|
103
|
+
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
104
|
+
expect(uuid).toMatch(uuidRegex);
|
|
105
|
+
}
|
|
106
|
+
exports.validateUUID = validateUUID;
|
|
107
|
+
/**
|
|
108
|
+
* Validates instrument ID format
|
|
109
|
+
*/
|
|
110
|
+
function validateInstrumentId(instrumentId) {
|
|
111
|
+
const instrumentRegex = /^\d+\/\d+\/\d+\/[A-Z*]+$/;
|
|
112
|
+
expect(instrumentId).toMatch(instrumentRegex);
|
|
113
|
+
}
|
|
114
|
+
exports.validateInstrumentId = validateInstrumentId;
|
|
115
|
+
/**
|
|
116
|
+
* Validates that response is successful (200 status)
|
|
117
|
+
*/
|
|
118
|
+
function validateSuccessResponse(response, startTime) {
|
|
119
|
+
const duration = Date.now() - startTime;
|
|
120
|
+
// Validate response time
|
|
121
|
+
validateResponseTime(duration);
|
|
122
|
+
// Validate response structure
|
|
123
|
+
validateWorkspacesByUserResponse(response);
|
|
124
|
+
return response;
|
|
125
|
+
}
|
|
126
|
+
exports.validateSuccessResponse = validateSuccessResponse;
|
|
127
|
+
/**
|
|
128
|
+
* Validates that error is as expected
|
|
129
|
+
*/
|
|
130
|
+
function validateExpectedError(error, expectedStatusCodes, testDescription) {
|
|
131
|
+
var _a;
|
|
132
|
+
console.log(`✅ Expected error for ${testDescription}:`);
|
|
133
|
+
console.log(` Type: ${(_a = error.constructor) === null || _a === void 0 ? void 0 : _a.name}`);
|
|
134
|
+
console.log(` Message: ${error.message}`);
|
|
135
|
+
validateErrorResponse(error, expectedStatusCodes);
|
|
136
|
+
}
|
|
137
|
+
exports.validateExpectedError = validateExpectedError;
|
|
138
|
+
/**
|
|
139
|
+
* Logs successful test result
|
|
140
|
+
*/
|
|
141
|
+
function logSuccessResult(response, duration, testDescription) {
|
|
142
|
+
console.log(`✅ Success for ${testDescription}:`);
|
|
143
|
+
console.log(` Workspaces: ${response.workspaces.length}`);
|
|
144
|
+
console.log(` Widgets: ${response.widgets ? Object.keys(response.widgets).length : 0}`);
|
|
145
|
+
console.log(` Instruments: ${response.instruments ? Object.keys(response.instruments).length : 0}`);
|
|
146
|
+
console.log(` Response time: ${duration}ms`);
|
|
147
|
+
if (response.workspaces.length > 0) {
|
|
148
|
+
const firstWorkspace = response.workspaces[0];
|
|
149
|
+
console.log(` First workspace: ID=${firstWorkspace.id}, Name=${firstWorkspace.name}`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.logSuccessResult = logSuccessResult;
|
|
153
|
+
/**
|
|
154
|
+
* Helper for common test assertions
|
|
155
|
+
*/
|
|
156
|
+
class AssertionHelper {
|
|
157
|
+
static validateSuccess(response, startTime, description) {
|
|
158
|
+
const validatedResponse = validateSuccessResponse(response, startTime);
|
|
159
|
+
const duration = Date.now() - startTime;
|
|
160
|
+
logSuccessResult(validatedResponse, duration, description);
|
|
161
|
+
return validatedResponse;
|
|
162
|
+
}
|
|
163
|
+
static validateError(error, expectedStatusCodes, description) {
|
|
164
|
+
validateExpectedError(error, expectedStatusCodes, description);
|
|
165
|
+
}
|
|
166
|
+
static validatePerformance(responseTimes, maxTime = 10000) {
|
|
167
|
+
expect(responseTimes).toBeDefined();
|
|
168
|
+
expect(responseTimes.length).toBeGreaterThan(0);
|
|
169
|
+
responseTimes.forEach((time, index) => {
|
|
170
|
+
expect(time).toBeLessThan(maxTime);
|
|
171
|
+
});
|
|
172
|
+
const avgTime = responseTimes.reduce((sum, time) => sum + time, 0) / responseTimes.length;
|
|
173
|
+
console.log(`📊 Performance Summary:`);
|
|
174
|
+
console.log(` Calls: ${responseTimes.length}`);
|
|
175
|
+
console.log(` Average time: ${Math.round(avgTime)}ms`);
|
|
176
|
+
console.log(` Max time: ${Math.max(...responseTimes)}ms`);
|
|
177
|
+
console.log(` Min time: ${Math.min(...responseTimes)}ms`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.AssertionHelper = AssertionHelper;
|
|
181
|
+
//# sourceMappingURL=assertion.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertion.helper.js","sourceRoot":"","sources":["../../../../../../../packages/markets/src/__tests__/e2e/helpers/assertion.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication Helper Functions
|
|
3
|
+
* Provides reusable authentication utilities for E2E tests
|
|
4
|
+
*/
|
|
5
|
+
import { AuthConfig, AuthMode } from '../config/auth.config';
|
|
6
|
+
/**
|
|
7
|
+
* Auth helper class for managing authentication in tests
|
|
8
|
+
*/
|
|
9
|
+
export declare class AuthHelper {
|
|
10
|
+
private static instance;
|
|
11
|
+
private authConfigs;
|
|
12
|
+
private initialized;
|
|
13
|
+
private static globalConfigs;
|
|
14
|
+
private constructor();
|
|
15
|
+
static getInstance(): AuthHelper;
|
|
16
|
+
/**
|
|
17
|
+
* Initializes auth configurations
|
|
18
|
+
*/
|
|
19
|
+
initialize(configs?: Record<AuthMode, AuthConfig>): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Gets SDK manager for specific auth mode
|
|
22
|
+
*/
|
|
23
|
+
getSdkManager(mode: AuthMode): any;
|
|
24
|
+
/**
|
|
25
|
+
* Checks if authentication mode is available and working
|
|
26
|
+
*/
|
|
27
|
+
isAuthenticated(mode: AuthMode): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Gets authentication status for all modes
|
|
30
|
+
*/
|
|
31
|
+
getAuthStatus(): Record<AuthMode, boolean>;
|
|
32
|
+
/**
|
|
33
|
+
* Re-verifies authentication for a specific mode
|
|
34
|
+
*/
|
|
35
|
+
reVerifyAuthentication(mode: AuthMode): Promise<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* Gets all available authentication modes
|
|
38
|
+
*/
|
|
39
|
+
getAvailableModes(): AuthMode[];
|
|
40
|
+
/**
|
|
41
|
+
* Logs authentication status summary
|
|
42
|
+
*/
|
|
43
|
+
logAuthStatus(): void;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Skip test if authentication is not available
|
|
47
|
+
*/
|
|
48
|
+
export declare function skipIfNotAuthenticated(mode: AuthMode, testDescription: string): void;
|
|
49
|
+
/**
|
|
50
|
+
* Test helper to run test with authentication check
|
|
51
|
+
*/
|
|
52
|
+
export declare function withAuthentication<T>(mode: AuthMode, testFn: (sdkManager: any) => Promise<T>, testDescription: string): Promise<T | undefined>;
|
|
53
|
+
/**
|
|
54
|
+
* Retry authentication if needed
|
|
55
|
+
*/
|
|
56
|
+
export declare function retryWithAuth<T>(mode: AuthMode, operation: (sdkManager: any) => Promise<T>, maxRetries?: number): Promise<T>;
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Authentication Helper Functions
|
|
4
|
+
* Provides reusable authentication utilities for E2E tests
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.retryWithAuth = exports.withAuthentication = exports.skipIfNotAuthenticated = exports.AuthHelper = void 0;
|
|
8
|
+
const tslib_1 = require("tslib");
|
|
9
|
+
const auth_config_1 = require("../config/auth.config");
|
|
10
|
+
/**
|
|
11
|
+
* Auth helper class for managing authentication in tests
|
|
12
|
+
*/
|
|
13
|
+
class AuthHelper {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.authConfigs = {};
|
|
16
|
+
this.initialized = false;
|
|
17
|
+
// Private constructor for singleton pattern
|
|
18
|
+
}
|
|
19
|
+
static getInstance() {
|
|
20
|
+
if (!AuthHelper.instance) {
|
|
21
|
+
AuthHelper.instance = new AuthHelper();
|
|
22
|
+
}
|
|
23
|
+
return AuthHelper.instance;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Initializes auth configurations
|
|
27
|
+
*/
|
|
28
|
+
initialize(configs) {
|
|
29
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
// If configs are provided, cache them globally
|
|
31
|
+
if (configs) {
|
|
32
|
+
AuthHelper.globalConfigs = configs;
|
|
33
|
+
this.authConfigs = configs;
|
|
34
|
+
this.initialized = true;
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
// If no configs provided but we have cached configs, use those
|
|
38
|
+
if (AuthHelper.globalConfigs) {
|
|
39
|
+
this.authConfigs = AuthHelper.globalConfigs;
|
|
40
|
+
this.initialized = true;
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
// Otherwise, create fresh configurations
|
|
44
|
+
const { createAuthConfigurations } = yield Promise.resolve().then(() => tslib_1.__importStar(require('../config/auth.config')));
|
|
45
|
+
const newConfigs = yield createAuthConfigurations();
|
|
46
|
+
AuthHelper.globalConfigs = newConfigs;
|
|
47
|
+
this.authConfigs = newConfigs;
|
|
48
|
+
this.initialized = true;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Gets SDK manager for specific auth mode
|
|
53
|
+
*/
|
|
54
|
+
getSdkManager(mode) {
|
|
55
|
+
var _a;
|
|
56
|
+
if (!this.initialized) {
|
|
57
|
+
throw new Error('AuthHelper not initialized. Call initialize() first.');
|
|
58
|
+
}
|
|
59
|
+
return (_a = this.authConfigs[mode]) === null || _a === void 0 ? void 0 : _a.sdkManager;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Checks if authentication mode is available and working
|
|
63
|
+
*/
|
|
64
|
+
isAuthenticated(mode) {
|
|
65
|
+
var _a;
|
|
66
|
+
if (!this.initialized)
|
|
67
|
+
return false;
|
|
68
|
+
return ((_a = this.authConfigs[mode]) === null || _a === void 0 ? void 0 : _a.isAuthenticated) || false;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Gets authentication status for all modes
|
|
72
|
+
*/
|
|
73
|
+
getAuthStatus() {
|
|
74
|
+
return {
|
|
75
|
+
'keycloak-hub': this.isAuthenticated('keycloak-hub'),
|
|
76
|
+
'keycloak-sibolsa': this.isAuthenticated('keycloak-sibolsa'),
|
|
77
|
+
'existing-token': this.isAuthenticated('existing-token'),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Re-verifies authentication for a specific mode
|
|
82
|
+
*/
|
|
83
|
+
reVerifyAuthentication(mode) {
|
|
84
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
85
|
+
const sdkManager = this.getSdkManager(mode);
|
|
86
|
+
if (!sdkManager)
|
|
87
|
+
return false;
|
|
88
|
+
const isAuthenticated = yield (0, auth_config_1.verifyAuthentication)(sdkManager);
|
|
89
|
+
this.authConfigs[mode].isAuthenticated = isAuthenticated;
|
|
90
|
+
return isAuthenticated;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Gets all available authentication modes
|
|
95
|
+
*/
|
|
96
|
+
getAvailableModes() {
|
|
97
|
+
if (!this.initialized)
|
|
98
|
+
return [];
|
|
99
|
+
return Object.keys(this.authConfigs).filter(mode => this.isAuthenticated(mode));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Logs authentication status summary
|
|
103
|
+
*/
|
|
104
|
+
logAuthStatus() {
|
|
105
|
+
console.log('🔐 Authentication Status Summary:');
|
|
106
|
+
const status = this.getAuthStatus();
|
|
107
|
+
Object.entries(status).forEach(([mode, isAuth]) => {
|
|
108
|
+
const emoji = isAuth ? '✅' : '❌';
|
|
109
|
+
console.log(` ${emoji} ${mode}: ${isAuth ? 'Available' : 'Unavailable'}`);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
exports.AuthHelper = AuthHelper;
|
|
114
|
+
AuthHelper.globalConfigs = null;
|
|
115
|
+
/**
|
|
116
|
+
* Skip test if authentication is not available
|
|
117
|
+
*/
|
|
118
|
+
function skipIfNotAuthenticated(mode, testDescription) {
|
|
119
|
+
const authHelper = AuthHelper.getInstance();
|
|
120
|
+
if (!authHelper.isAuthenticated(mode)) {
|
|
121
|
+
console.warn(`⚠️ Skipping test "${testDescription}" - ${mode} not authenticated`);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.skipIfNotAuthenticated = skipIfNotAuthenticated;
|
|
126
|
+
/**
|
|
127
|
+
* Test helper to run test with authentication check
|
|
128
|
+
*/
|
|
129
|
+
function withAuthentication(mode, testFn, testDescription) {
|
|
130
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
131
|
+
const authHelper = AuthHelper.getInstance();
|
|
132
|
+
// Auto-initialize if not initialized
|
|
133
|
+
if (!authHelper['initialized']) {
|
|
134
|
+
yield authHelper.initialize();
|
|
135
|
+
}
|
|
136
|
+
if (!authHelper.isAuthenticated(mode)) {
|
|
137
|
+
console.warn(`⚠️ Skipping test "${testDescription}" - ${mode} not authenticated`);
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
const sdkManager = authHelper.getSdkManager(mode);
|
|
141
|
+
if (!sdkManager) {
|
|
142
|
+
console.error(`❌ SDK Manager is null/undefined for ${mode}`);
|
|
143
|
+
throw new Error(`SDK Manager not available for ${mode}`);
|
|
144
|
+
}
|
|
145
|
+
return yield testFn(sdkManager);
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
exports.withAuthentication = withAuthentication;
|
|
149
|
+
/**
|
|
150
|
+
* Retry authentication if needed
|
|
151
|
+
*/
|
|
152
|
+
function retryWithAuth(mode, operation, maxRetries = 2) {
|
|
153
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
154
|
+
const authHelper = AuthHelper.getInstance();
|
|
155
|
+
let lastError;
|
|
156
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
157
|
+
try {
|
|
158
|
+
const sdkManager = authHelper.getSdkManager(mode);
|
|
159
|
+
if (!sdkManager) {
|
|
160
|
+
throw new Error(`No SDK manager available for ${mode}`);
|
|
161
|
+
}
|
|
162
|
+
return yield operation(sdkManager);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
lastError = error;
|
|
166
|
+
// If authentication error, try to re-verify
|
|
167
|
+
if (attempt < maxRetries && isAuthError(error)) {
|
|
168
|
+
console.warn(`⚠️ Auth error on attempt ${attempt}, re-verifying...`);
|
|
169
|
+
yield authHelper.reVerifyAuthentication(mode);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
throw lastError || new Error(`Operation failed after ${maxRetries} attempts`);
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
exports.retryWithAuth = retryWithAuth;
|
|
177
|
+
/**
|
|
178
|
+
* Checks if error is authentication related
|
|
179
|
+
*/
|
|
180
|
+
function isAuthError(error) {
|
|
181
|
+
var _a;
|
|
182
|
+
const errorMessage = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
|
|
183
|
+
return (errorMessage.includes('401') ||
|
|
184
|
+
errorMessage.includes('403') ||
|
|
185
|
+
errorMessage.includes('unauthorized') ||
|
|
186
|
+
errorMessage.includes('authentication'));
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=auth.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.helper.js","sourceRoot":"","sources":["../../../../../../../packages/markets/src/__tests__/e2e/helpers/auth.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance Helper Functions
|
|
3
|
+
* Provides utilities for measuring and validating performance in E2E tests
|
|
4
|
+
*/
|
|
5
|
+
import { PERFORMANCE_THRESHOLDS } from '../fixtures/test-scenarios';
|
|
6
|
+
export interface PerformanceMetrics {
|
|
7
|
+
duration: number;
|
|
8
|
+
startTime: number;
|
|
9
|
+
endTime: number;
|
|
10
|
+
operation: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ConcurrentResult<T = any> {
|
|
13
|
+
success: boolean;
|
|
14
|
+
duration: number;
|
|
15
|
+
result?: T;
|
|
16
|
+
error?: any;
|
|
17
|
+
index: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Performance measurement utility
|
|
21
|
+
*/
|
|
22
|
+
export declare class PerformanceHelper {
|
|
23
|
+
private static measurements;
|
|
24
|
+
/**
|
|
25
|
+
* Measures the execution time of an async operation
|
|
26
|
+
*/
|
|
27
|
+
static measure<T>(operation: string, asyncOperation: () => Promise<T>): Promise<{
|
|
28
|
+
result: T;
|
|
29
|
+
metrics: PerformanceMetrics;
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Validates performance against thresholds
|
|
33
|
+
*/
|
|
34
|
+
static validatePerformance(duration: number, threshold?: keyof typeof PERFORMANCE_THRESHOLDS, operation?: string): void;
|
|
35
|
+
/**
|
|
36
|
+
* Runs multiple sequential calls and measures performance consistency
|
|
37
|
+
*/
|
|
38
|
+
static measureSequentialCalls<T>(operation: string, asyncOperation: () => Promise<T>, callCount?: number): Promise<{
|
|
39
|
+
results: (T | null)[];
|
|
40
|
+
errors: any[];
|
|
41
|
+
metrics: PerformanceMetrics[];
|
|
42
|
+
summary: {
|
|
43
|
+
successCount: number;
|
|
44
|
+
errorCount: number;
|
|
45
|
+
avgDuration: number;
|
|
46
|
+
minDuration: number;
|
|
47
|
+
maxDuration: number;
|
|
48
|
+
};
|
|
49
|
+
}>;
|
|
50
|
+
/**
|
|
51
|
+
* Runs concurrent operations and measures performance
|
|
52
|
+
*/
|
|
53
|
+
static measureConcurrentCalls<T>(operation: string, asyncOperation: () => Promise<T>, concurrency?: number): Promise<{
|
|
54
|
+
results: ConcurrentResult<T>[];
|
|
55
|
+
summary: {
|
|
56
|
+
successCount: number;
|
|
57
|
+
errorCount: number;
|
|
58
|
+
avgDuration: number;
|
|
59
|
+
minDuration: number;
|
|
60
|
+
maxDuration: number;
|
|
61
|
+
};
|
|
62
|
+
}>;
|
|
63
|
+
/**
|
|
64
|
+
* Gets all recorded measurements
|
|
65
|
+
*/
|
|
66
|
+
static getMeasurements(): PerformanceMetrics[];
|
|
67
|
+
/**
|
|
68
|
+
* Clears all recorded measurements
|
|
69
|
+
*/
|
|
70
|
+
static clearMeasurements(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Gets performance summary for specific operation
|
|
73
|
+
*/
|
|
74
|
+
static getOperationSummary(operationPattern: string): {
|
|
75
|
+
count: number;
|
|
76
|
+
avgDuration: number;
|
|
77
|
+
minDuration: number;
|
|
78
|
+
maxDuration: number;
|
|
79
|
+
measurements: PerformanceMetrics[];
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Validates that all measurements meet performance criteria
|
|
83
|
+
*/
|
|
84
|
+
static validateAllMeasurements(threshold?: keyof typeof PERFORMANCE_THRESHOLDS): void;
|
|
85
|
+
}
|