1+ """Test create_integration_instance method"""
2+
3+ import pytest
4+ from unittest .mock import Mock , patch
5+ from jupiterone .client import JupiterOneClient
6+
7+
8+ class TestCreateIntegrationInstance :
9+ """Test create_integration_instance method"""
10+
11+ def setup_method (self ):
12+ """Set up test fixtures"""
13+ self .client = JupiterOneClient (account = "test-account" , token = "test-token" )
14+
15+ @patch ('jupiterone.client.JupiterOneClient._execute_query' )
16+ def test_create_integration_instance_basic (self , mock_execute_query ):
17+ """Test basic integration instance creation without resource_group_id"""
18+ # Mock response
19+ mock_response = {
20+ "data" : {
21+ "createIntegrationInstance" : {
22+ "id" : "test-instance-id" ,
23+ "name" : "test-instance" ,
24+ "description" : "Test integration instance"
25+ }
26+ }
27+ }
28+ mock_execute_query .return_value = mock_response
29+
30+ # Test the method
31+ result = self .client .create_integration_instance (
32+ instance_name = "test-instance" ,
33+ instance_description = "Test integration instance"
34+ )
35+
36+ # Verify the result
37+ assert result == mock_response ["data" ]["createIntegrationInstance" ]
38+
39+ # Verify the query was called with correct variables
40+ mock_execute_query .assert_called_once ()
41+ call_args = mock_execute_query .call_args
42+ variables = call_args [1 ]['variables' ]
43+
44+ assert variables ["instance" ]["name" ] == "test-instance"
45+ assert variables ["instance" ]["description" ] == "Test integration instance"
46+ assert "resourceGroupId" not in variables ["instance" ]
47+
48+ @patch ('jupiterone.client.JupiterOneClient._execute_query' )
49+ def test_create_integration_instance_with_resource_group_id (self , mock_execute_query ):
50+ """Test integration instance creation with resource_group_id"""
51+ # Mock response
52+ mock_response = {
53+ "data" : {
54+ "createIntegrationInstance" : {
55+ "id" : "test-instance-id" ,
56+ "name" : "test-instance" ,
57+ "description" : "Test integration instance" ,
58+ "resourceGroupId" : "test-resource-group-id"
59+ }
60+ }
61+ }
62+ mock_execute_query .return_value = mock_response
63+
64+ # Test the method with resource_group_id
65+ result = self .client .create_integration_instance (
66+ instance_name = "test-instance" ,
67+ instance_description = "Test integration instance" ,
68+ resource_group_id = "test-resource-group-id"
69+ )
70+
71+ # Verify the result
72+ assert result == mock_response ["data" ]["createIntegrationInstance" ]
73+
74+ # Verify the query was called with correct variables including resourceGroupId
75+ mock_execute_query .assert_called_once ()
76+ call_args = mock_execute_query .call_args
77+ variables = call_args [1 ]['variables' ]
78+
79+ assert variables ["instance" ]["name" ] == "test-instance"
80+ assert variables ["instance" ]["description" ] == "Test integration instance"
81+ assert variables ["instance" ]["resourceGroupId" ] == "test-resource-group-id"
82+
83+ @patch ('jupiterone.client.JupiterOneClient._execute_query' )
84+ def test_create_integration_instance_with_custom_definition_id (self , mock_execute_query ):
85+ """Test integration instance creation with custom definition ID"""
86+ # Mock response
87+ mock_response = {
88+ "data" : {
89+ "createIntegrationInstance" : {
90+ "id" : "test-instance-id" ,
91+ "name" : "test-instance" ,
92+ "integrationDefinitionId" : "custom-definition-id"
93+ }
94+ }
95+ }
96+ mock_execute_query .return_value = mock_response
97+
98+ # Test the method with custom definition ID
99+ result = self .client .create_integration_instance (
100+ instance_name = "test-instance" ,
101+ integration_definition_id = "custom-definition-id"
102+ )
103+
104+ # Verify the result
105+ assert result == mock_response ["data" ]["createIntegrationInstance" ]
106+
107+ # Verify the query was called with correct variables
108+ mock_execute_query .assert_called_once ()
109+ call_args = mock_execute_query .call_args
110+ variables = call_args [1 ]['variables' ]
111+
112+ assert variables ["instance" ]["integrationDefinitionId" ] == "custom-definition-id"
113+
114+ @patch ('jupiterone.client.JupiterOneClient._execute_query' )
115+ def test_create_integration_instance_all_parameters (self , mock_execute_query ):
116+ """Test integration instance creation with all parameters"""
117+ # Mock response
118+ mock_response = {
119+ "data" : {
120+ "createIntegrationInstance" : {
121+ "id" : "test-instance-id" ,
122+ "name" : "test-instance" ,
123+ "description" : "Test integration instance" ,
124+ "integrationDefinitionId" : "custom-definition-id" ,
125+ "resourceGroupId" : "test-resource-group-id"
126+ }
127+ }
128+ }
129+ mock_execute_query .return_value = mock_response
130+
131+ # Test the method with all parameters
132+ result = self .client .create_integration_instance (
133+ instance_name = "test-instance" ,
134+ instance_description = "Test integration instance" ,
135+ integration_definition_id = "custom-definition-id" ,
136+ resource_group_id = "test-resource-group-id"
137+ )
138+
139+ # Verify the result
140+ assert result == mock_response ["data" ]["createIntegrationInstance" ]
141+
142+ # Verify the query was called with correct variables
143+ mock_execute_query .assert_called_once ()
144+ call_args = mock_execute_query .call_args
145+ variables = call_args [1 ]['variables' ]
146+
147+ assert variables ["instance" ]["name" ] == "test-instance"
148+ assert variables ["instance" ]["description" ] == "Test integration instance"
149+ assert variables ["instance" ]["integrationDefinitionId" ] == "custom-definition-id"
150+ assert variables ["instance" ]["resourceGroupId" ] == "test-resource-group-id"
151+ assert variables ["instance" ]["pollingInterval" ] == "DISABLED"
152+ assert "config" in variables ["instance" ]
153+ assert "pollingIntervalCronExpression" in variables ["instance" ]
154+ assert "ingestionSourcesOverrides" in variables ["instance" ]
0 commit comments