port-ocean 0.15.0__tar.gz → 0.15.2__tar.gz

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.

Potentially problematic release.


This version of port-ocean might be problematic. Click here for more details.

Files changed (158) hide show
  1. {port_ocean-0.15.0 → port_ocean-0.15.2}/PKG-INFO +1 -1
  2. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/models.py +13 -2
  3. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/utils.py +5 -3
  4. port_ocean-0.15.2/port_ocean/tests/core/test_utils.py +73 -0
  5. {port_ocean-0.15.0 → port_ocean-0.15.2}/pyproject.toml +1 -1
  6. {port_ocean-0.15.0 → port_ocean-0.15.2}/LICENSE.md +0 -0
  7. {port_ocean-0.15.0 → port_ocean-0.15.2}/README.md +0 -0
  8. {port_ocean-0.15.0 → port_ocean-0.15.2}/integrations/_infra/Dockerfile.Deb +0 -0
  9. {port_ocean-0.15.0 → port_ocean-0.15.2}/integrations/_infra/Dockerfile.alpine +0 -0
  10. {port_ocean-0.15.0 → port_ocean-0.15.2}/integrations/_infra/Dockerfile.base.builder +0 -0
  11. {port_ocean-0.15.0 → port_ocean-0.15.2}/integrations/_infra/Dockerfile.base.runner +0 -0
  12. {port_ocean-0.15.0 → port_ocean-0.15.2}/integrations/_infra/Dockerfile.dockerignore +0 -0
  13. {port_ocean-0.15.0 → port_ocean-0.15.2}/integrations/_infra/Makefile +0 -0
  14. {port_ocean-0.15.0 → port_ocean-0.15.2}/integrations/_infra/grpcio.sh +0 -0
  15. {port_ocean-0.15.0 → port_ocean-0.15.2}/integrations/_infra/init.sh +0 -0
  16. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/__init__.py +0 -0
  17. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/bootstrap.py +0 -0
  18. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/__init__.py +0 -0
  19. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cli.py +0 -0
  20. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/commands/__init__.py +0 -0
  21. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/commands/defaults/__init___.py +0 -0
  22. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/commands/defaults/clean.py +0 -0
  23. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/commands/defaults/dock.py +0 -0
  24. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/commands/defaults/group.py +0 -0
  25. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/commands/list_integrations.py +0 -0
  26. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/commands/main.py +0 -0
  27. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/commands/new.py +0 -0
  28. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/commands/pull.py +0 -0
  29. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/commands/sail.py +0 -0
  30. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/commands/version.py +0 -0
  31. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/__init__.py +0 -0
  32. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/cookiecutter.json +0 -0
  33. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/extensions.py +0 -0
  34. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +0 -0
  35. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.env.example +0 -0
  36. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.gitignore +0 -0
  37. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/.gitignore +0 -0
  38. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/blueprints.json +0 -0
  39. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/port-app-config.yml +0 -0
  40. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +0 -0
  41. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CHANGELOG.md +0 -0
  42. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CONTRIBUTING.md +0 -0
  43. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/README.md +0 -0
  44. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/changelog/.gitignore +0 -0
  45. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/debug.py +0 -0
  46. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/main.py +0 -0
  47. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/poetry.toml +0 -0
  48. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/pyproject.toml +0 -0
  49. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/sonar-project.properties +0 -0
  50. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/__init__.py +0 -0
  51. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/test_sample.py +0 -0
  52. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/cli/utils.py +0 -0
  53. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/clients/__init__.py +0 -0
  54. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/clients/port/__init__.py +0 -0
  55. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/clients/port/authentication.py +0 -0
  56. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/clients/port/client.py +0 -0
  57. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/clients/port/mixins/__init__.py +0 -0
  58. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/clients/port/mixins/blueprints.py +0 -0
  59. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/clients/port/mixins/entities.py +0 -0
  60. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/clients/port/mixins/integrations.py +0 -0
  61. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/clients/port/mixins/migrations.py +0 -0
  62. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/clients/port/retry_transport.py +0 -0
  63. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/clients/port/types.py +0 -0
  64. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/clients/port/utils.py +0 -0
  65. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/config/__init__.py +0 -0
  66. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/config/base.py +0 -0
  67. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/config/dynamic.py +0 -0
  68. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/config/settings.py +0 -0
  69. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/consumers/__init__.py +0 -0
  70. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/consumers/kafka_consumer.py +0 -0
  71. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/context/__init__.py +0 -0
  72. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/context/event.py +0 -0
  73. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/context/ocean.py +0 -0
  74. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/context/resource.py +0 -0
  75. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/__init__.py +0 -0
  76. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/defaults/__init__.py +0 -0
  77. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/defaults/clean.py +0 -0
  78. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/defaults/common.py +0 -0
  79. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/defaults/initialize.py +0 -0
  80. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/event_listener/__init__.py +0 -0
  81. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/event_listener/base.py +0 -0
  82. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/event_listener/factory.py +0 -0
  83. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/event_listener/http.py +0 -0
  84. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/event_listener/kafka.py +0 -0
  85. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/event_listener/once.py +0 -0
  86. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/event_listener/polling.py +0 -0
  87. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/__init__.py +0 -0
  88. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/base.py +0 -0
  89. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/entities_state_applier/__init__.py +0 -0
  90. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/entities_state_applier/base.py +0 -0
  91. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/entities_state_applier/port/__init__.py +0 -0
  92. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/entities_state_applier/port/applier.py +0 -0
  93. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py +0 -0
  94. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py +0 -0
  95. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/entity_processor/__init__.py +0 -0
  96. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/entity_processor/base.py +0 -0
  97. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +0 -0
  98. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/port_app_config/__init__.py +0 -0
  99. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/port_app_config/api.py +0 -0
  100. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/port_app_config/base.py +0 -0
  101. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/port_app_config/models.py +0 -0
  102. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/resync_state_updater/__init__.py +0 -0
  103. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/handlers/resync_state_updater/updater.py +0 -0
  104. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/integrations/__init__.py +0 -0
  105. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/integrations/base.py +0 -0
  106. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/integrations/mixins/__init__.py +0 -0
  107. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/integrations/mixins/events.py +0 -0
  108. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/integrations/mixins/handler.py +0 -0
  109. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/integrations/mixins/sync.py +0 -0
  110. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/integrations/mixins/sync_raw.py +0 -0
  111. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/integrations/mixins/utils.py +0 -0
  112. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/core/ocean_types.py +0 -0
  113. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/exceptions/__init__.py +0 -0
  114. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/exceptions/api.py +0 -0
  115. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/exceptions/base.py +0 -0
  116. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/exceptions/clients.py +0 -0
  117. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/exceptions/context.py +0 -0
  118. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/exceptions/core.py +0 -0
  119. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/exceptions/port_defaults.py +0 -0
  120. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/exceptions/utils.py +0 -0
  121. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/helpers/__init__.py +0 -0
  122. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/helpers/async_client.py +0 -0
  123. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/helpers/retry.py +0 -0
  124. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/log/__init__.py +0 -0
  125. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/log/handlers.py +0 -0
  126. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/log/logger_setup.py +0 -0
  127. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/log/sensetive.py +0 -0
  128. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/middlewares.py +0 -0
  129. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/ocean.py +0 -0
  130. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/py.typed +0 -0
  131. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/run.py +0 -0
  132. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/sonar-project.properties +0 -0
  133. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/__init__.py +0 -0
  134. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/clients/port/mixins/test_entities.py +0 -0
  135. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/conftest.py +0 -0
  136. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/core/defaults/test_common.py +0 -0
  137. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/core/handlers/entity_processor/test_jq_entity_processor.py +0 -0
  138. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/helpers/__init__.py +0 -0
  139. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/helpers/fake_port_api.py +0 -0
  140. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/helpers/fixtures.py +0 -0
  141. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/helpers/integration.py +0 -0
  142. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/helpers/ocean_app.py +0 -0
  143. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/helpers/port_client.py +0 -0
  144. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/helpers/smoke_test.py +0 -0
  145. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/log/test_handlers.py +0 -0
  146. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/test_smoke.py +0 -0
  147. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/utils/test_async_iterators.py +0 -0
  148. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/tests/utils/test_cache.py +0 -0
  149. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/utils/__init__.py +0 -0
  150. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/utils/async_http.py +0 -0
  151. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/utils/async_iterators.py +0 -0
  152. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/utils/cache.py +0 -0
  153. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/utils/misc.py +0 -0
  154. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/utils/queue_utils.py +0 -0
  155. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/utils/repeat.py +0 -0
  156. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/utils/signal.py +0 -0
  157. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/utils/time.py +0 -0
  158. {port_ocean-0.15.0 → port_ocean-0.15.2}/port_ocean/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: port-ocean
3
- Version: 0.15.0
3
+ Version: 0.15.2
4
4
  Summary: Port Ocean is a CLI tool for managing your Port projects.
5
5
  Home-page: https://app.getport.io
6
6
  Keywords: ocean,port-ocean,port
@@ -8,12 +8,23 @@ from pydantic.fields import Field
8
8
 
9
9
  class Runtime(Enum):
10
10
  Saas = "Saas"
11
- SaasOauth = "SaasOauth"
12
11
  OnPrem = "OnPrem"
13
12
 
14
13
  @property
15
14
  def is_saas_runtime(self) -> bool:
16
- return self in [Runtime.Saas, Runtime.SaasOauth]
15
+ return self in [Runtime.Saas]
16
+
17
+ def is_installation_type_compatible(self, installation_type: str) -> bool:
18
+ """
19
+ Check if the installation type is compatible with the runtime
20
+
21
+ if the runtime is Saas, the installation type should start with Saas
22
+ else the installation type should be OnPrem
23
+ """
24
+ return (
25
+ self.value == Runtime.Saas.value
26
+ and installation_type.startswith(self.value)
27
+ ) or installation_type == self.value
17
28
 
18
29
 
19
30
  class Entity(BaseModel):
@@ -42,10 +42,12 @@ async def validate_integration_runtime(
42
42
  current_integration = await port_client.get_current_integration(
43
43
  should_raise=False, should_log=False
44
44
  )
45
- current_runtime = current_integration.get("installationType", "OnPrem")
46
- if current_integration and current_runtime != requested_runtime.value:
45
+ current_installation_type = current_integration.get("installationType", "OnPrem")
46
+ if current_integration and not requested_runtime.is_installation_type_compatible(
47
+ current_installation_type
48
+ ):
47
49
  raise IntegrationRuntimeException(
48
- f"Invalid Runtime! Requested to run existing {current_runtime} integration in {requested_runtime} runtime."
50
+ f"Invalid Runtime! Requested to run existing {current_installation_type} integration in {requested_runtime} runtime."
49
51
  )
50
52
 
51
53
 
@@ -0,0 +1,73 @@
1
+ from unittest.mock import AsyncMock, patch
2
+
3
+ import pytest
4
+
5
+ from port_ocean.core.utils import validate_integration_runtime
6
+ from port_ocean.clients.port.client import PortClient
7
+ from port_ocean.core.models import Runtime
8
+ from port_ocean.tests.helpers.port_client import get_port_client_for_integration
9
+ from port_ocean.exceptions.core import IntegrationRuntimeException
10
+
11
+
12
+ class TestValidateIntegrationRuntime:
13
+
14
+ @pytest.mark.asyncio
15
+ @pytest.mark.parametrize(
16
+ "requested_runtime, installation_type, should_raise",
17
+ [
18
+ (Runtime.Saas, "Saas", False),
19
+ (Runtime.Saas, "SaasOauth2", False),
20
+ (Runtime.Saas, "OnPrem", True),
21
+ (Runtime.OnPrem, "OnPrem", False),
22
+ (Runtime.OnPrem, "SaasOauth2", True),
23
+ ],
24
+ )
25
+ @patch.object(PortClient, "get_current_integration", new_callable=AsyncMock)
26
+ async def test_validate_integration_runtime(
27
+ self,
28
+ mock_get_current_integration: AsyncMock,
29
+ requested_runtime: Runtime,
30
+ installation_type: str,
31
+ should_raise: bool,
32
+ ) -> None:
33
+ # Arrange
34
+ port_client = get_port_client_for_integration(
35
+ client_id="mock-client-id",
36
+ client_secret="mock-client-secret",
37
+ integration_identifier="mock-integration-identifier",
38
+ integration_type="mock-integration-type",
39
+ integration_version="mock-integration-version",
40
+ base_url="mock-base-url",
41
+ )
42
+
43
+ # Mock the return value of get_current_integration
44
+ mock_get_current_integration.return_value = {
45
+ "installationType": installation_type
46
+ }
47
+
48
+ # Act & Assert
49
+ if should_raise:
50
+ with pytest.raises(IntegrationRuntimeException):
51
+ await validate_integration_runtime(port_client, requested_runtime)
52
+ else:
53
+ await validate_integration_runtime(port_client, requested_runtime)
54
+
55
+ # Verify that get_current_integration was called once
56
+ mock_get_current_integration.assert_called_once()
57
+
58
+ @pytest.mark.parametrize(
59
+ "requested_runtime, installation_type, expected",
60
+ [
61
+ (Runtime.Saas, "SaasOauth2", True),
62
+ (Runtime.Saas, "OnPrem", False),
63
+ (Runtime.OnPrem, "OnPrem", True),
64
+ (Runtime.OnPrem, "SaasCloud", False),
65
+ ],
66
+ )
67
+ def test_runtime_installation_compatibility(
68
+ self, requested_runtime: Runtime, installation_type: str, expected: bool
69
+ ) -> None:
70
+ assert (
71
+ requested_runtime.is_installation_type_compatible(installation_type)
72
+ == expected
73
+ )
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "port-ocean"
3
- version = "0.15.0"
3
+ version = "0.15.2"
4
4
  description = "Port Ocean is a CLI tool for managing your Port projects."
5
5
  readme = "README.md"
6
6
  homepage = "https://app.getport.io"
File without changes
File without changes