Skip to content

Commit ea412e6

Browse files
Merge pull request #24 from FiniteStateInc/ASOC-2593
[Asoc-2593] Create unittests
2 parents c529eb3 + 9bbe570 commit ea412e6

38 files changed

+2018
-7
lines changed

finite_state_sdk/__init__.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1997,9 +1997,9 @@ def update_finding_statuses(token, organization_context, user_id=None, finding_i
19971997
dict: Response JSON from the GraphQL query of type UpdateFindingsStatusesResponse. For details see https://docs.finitestate.io/types/update-findings-statuses-response
19981998
"""
19991999
if not user_id:
2000-
raise ValueError("User ID is required")
2000+
raise ValueError("User Id is required")
20012001
if not finding_ids:
2002-
raise ValueError("Finding ID is required")
2002+
raise ValueError("Finding Ids is required")
20032003
if not status:
20042004
raise ValueError("Status is required")
20052005

@@ -2041,9 +2041,9 @@ def upload_file_for_binary_analysis(token, organization_context, test_id=None, f
20412041
# To upload a file for Binary Analysis, you must use the generateMultiplePartUploadUrl mutation
20422042

20432043
if not test_id:
2044-
raise ValueError("Test ID is required")
2044+
raise ValueError("Test Id is required")
20452045
if not file_path:
2046-
raise ValueError("File path is required")
2046+
raise ValueError("File Path is required")
20472047

20482048
# Start Multi-part Upload
20492049
graphql_query = '''
@@ -2168,9 +2168,9 @@ def upload_test_results_file(token, organization_context, test_id=None, file_pat
21682168
dict: The response from the GraphQL query, a completeTestResultUpload Object.
21692169
"""
21702170
if not test_id:
2171-
raise ValueError("Test ID is required")
2171+
raise ValueError("Test Id is required")
21722172
if not file_path:
2173-
raise ValueError("File path is required")
2173+
raise ValueError("File Path is required")
21742174

21752175
# Gerneate Test Result Upload URL
21762176
graphql_query = '''

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ description = "The official Finite State Python SDK."
1717
readme = "README.md"
1818
license = "MIT"
1919
classifiers = [
20-
"Programming Language :: Python :: 3.8.1",
20+
"Programming Language :: Python :: 3.8",
2121
"Programming Language :: Python :: 3.9",
2222
"Programming Language :: Python :: 3.10",
2323
"Programming Language :: Python :: 3.11",

tests/test_create_artifact.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
from unittest.mock import patch
2+
3+
from finite_state_sdk import create_artifact
4+
5+
6+
class TestArtifacts:
7+
# Define test data
8+
auth_token = "your_auth_token"
9+
organization_context = "your_organization_context"
10+
business_unit_id = "business_unit_id"
11+
created_by_user_id = "user_id"
12+
asset_version_id = "asset_version_id"
13+
artifact_name = "artifact_name"
14+
product_id = "product_id"
15+
16+
# Define a mock response
17+
mock_response = {
18+
"data": {
19+
"createArtifact": {
20+
"id": "mock_artifact_id",
21+
"name": "artifact_name",
22+
"assetVersion": {
23+
"id": "asset_version_id",
24+
"name": "asset_version_name",
25+
"asset": {
26+
"id": "asset_id",
27+
"name": "asset_name"
28+
}
29+
},
30+
"createdBy": {
31+
"id": "user_id",
32+
"email": "[email protected]"
33+
},
34+
"ctx": {
35+
"asset": "asset_version_id",
36+
"products": ["product_id"],
37+
"businessUnits": ["business_unit_id"]
38+
}
39+
}
40+
}
41+
}
42+
43+
@patch("finite_state_sdk.send_graphql_query")
44+
def test_create_artifact(self, mock_send_query):
45+
mock_send_query.return_value = self.mock_response
46+
response = create_artifact(
47+
token=self.auth_token,
48+
organization_context=self.organization_context,
49+
business_unit_id=self.business_unit_id,
50+
created_by_user_id=self.created_by_user_id,
51+
asset_version_id=self.asset_version_id,
52+
artifact_name=self.artifact_name,
53+
product_id=self.product_id
54+
)
55+
mock_send_query.assert_called_once()
56+
57+
assert response['createArtifact']['id'] == self.mock_response['data']['createArtifact']['id']
58+
assert response['createArtifact']['name'] == self.mock_response['data']['createArtifact']['name']
59+
assert response['createArtifact']['assetVersion']['id'] == self.mock_response['data']['createArtifact']['assetVersion']['id']
60+
assert response['createArtifact']['assetVersion']['name'] == self.mock_response['data']['createArtifact']['assetVersion']['name']
61+
assert response['createArtifact']['assetVersion']['asset']['id'] == self.mock_response['data']['createArtifact']['assetVersion']['asset']['id']
62+
assert response['createArtifact']['assetVersion']['asset']['name'] == self.mock_response['data']['createArtifact']['assetVersion']['asset']['name']
63+
assert response['createArtifact']['createdBy']['id'] == self.mock_response['data']['createArtifact']['createdBy']['id']
64+
assert response['createArtifact']['createdBy']['email'] == self.mock_response['data']['createArtifact']['createdBy']['email']
65+
assert response['createArtifact']['ctx']['asset'] == self.mock_response['data']['createArtifact']['ctx']['asset']
66+
assert response['createArtifact']['ctx']['products'] == self.mock_response['data']['createArtifact']['ctx']['products']
67+
assert response['createArtifact']['ctx']['businessUnits'] == self.mock_response['data']['createArtifact']['ctx']['businessUnits']
68+
69+
# Run the test...

tests/test_create_asset.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
from unittest.mock import patch
2+
3+
from finite_state_sdk import create_asset
4+
5+
6+
class TestCreateAsset:
7+
# Define test data
8+
auth_token = "your_auth_token"
9+
organization_context = "your_organization_context"
10+
business_unit_id = "business_unit_id"
11+
created_by_user_id = "user_id"
12+
asset_name = "asset_name"
13+
product_id = "product_id"
14+
15+
# Define a mock response
16+
mock_response = {
17+
"data": {
18+
"createAsset": {
19+
"id": "mock_asset_id",
20+
"name": "asset_name",
21+
"dependentProducts": [],
22+
"group": {
23+
"id": "business_unit_id",
24+
"name": "business_unit_name"
25+
},
26+
"createdBy": {
27+
"id": "user_id",
28+
"email": "[email protected]"
29+
},
30+
"ctx": {
31+
"asset": "mock_asset_id",
32+
"products": ["product_id"],
33+
"businessUnits": ["business_unit_id"]
34+
}
35+
}
36+
}
37+
}
38+
39+
@patch("finite_state_sdk.send_graphql_query")
40+
def test_create_asset(self, mock_send_query):
41+
mock_send_query.return_value = self.mock_response
42+
response = create_asset(
43+
token=self.auth_token,
44+
organization_context=self.organization_context,
45+
business_unit_id=self.business_unit_id,
46+
created_by_user_id=self.created_by_user_id,
47+
asset_name=self.asset_name,
48+
product_id=self.product_id
49+
)
50+
mock_send_query.assert_called_once()
51+
52+
assert response['createAsset']['id'] == self.mock_response['data']['createAsset']['id']
53+
assert response['createAsset']['name'] == self.mock_response['data']['createAsset']['name']
54+
assert response['createAsset']['dependentProducts'] == self.mock_response['data']['createAsset']['dependentProducts']
55+
assert response['createAsset']['group']['id'] == self.mock_response['data']['createAsset']['group']['id']
56+
assert response['createAsset']['group']['name'] == self.mock_response['data']['createAsset']['group']['name']
57+
assert response['createAsset']['createdBy']['id'] == self.mock_response['data']['createAsset']['createdBy']['id']
58+
assert response['createAsset']['createdBy']['email'] == self.mock_response['data']['createAsset']['createdBy']['email']
59+
assert response['createAsset']['ctx']['asset'] == self.mock_response['data']['createAsset']['ctx']['asset']
60+
assert response['createAsset']['ctx']['products'] == self.mock_response['data']['createAsset']['ctx']['products']
61+
assert response['createAsset']['ctx']['businessUnits'] == self.mock_response['data']['createAsset']['ctx']['businessUnits']

tests/test_create_asset_version.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
from unittest.mock import patch
2+
3+
from finite_state_sdk import create_asset_version
4+
5+
6+
class TestCreateAssetVersion:
7+
# Define test data
8+
auth_token = "your_auth_token"
9+
organization_context = "your_organization_context"
10+
business_unit_id = "business_unit_id"
11+
created_by_user_id = "user_id"
12+
asset_id = "asset_id"
13+
asset_version_name = "asset_version_name"
14+
product_id = "product_id"
15+
16+
# Define a mock response
17+
mock_response = {
18+
"data": {
19+
"createAssetVersion": {
20+
"id": "mock_asset_version_id",
21+
"name": "asset_version_name",
22+
"asset": {
23+
"id": "asset_id",
24+
"name": "asset_name"
25+
},
26+
"createdBy": {
27+
"id": "user_id",
28+
"email": "[email protected]"
29+
},
30+
"ctx": {
31+
"asset": "asset_id",
32+
"products": ["product_id"],
33+
"businessUnits": ["business_unit_id"]
34+
}
35+
}
36+
}
37+
}
38+
39+
@patch("finite_state_sdk.send_graphql_query")
40+
def test_create_asset_version(self, mock_send_query):
41+
mock_send_query.return_value = self.mock_response
42+
response = create_asset_version(
43+
token=self.auth_token,
44+
organization_context=self.organization_context,
45+
business_unit_id=self.business_unit_id,
46+
created_by_user_id=self.created_by_user_id,
47+
asset_id=self.asset_id,
48+
asset_version_name=self.asset_version_name,
49+
product_id=self.product_id
50+
)
51+
mock_send_query.assert_called_once()
52+
53+
assert response['createAssetVersion']['id'] == self.mock_response['data']['createAssetVersion']['id']
54+
assert response['createAssetVersion']['name'] == self.mock_response['data']['createAssetVersion']['name']
55+
assert response['createAssetVersion']['asset']['id'] == self.mock_response['data']['createAssetVersion']['asset']['id']
56+
assert response['createAssetVersion']['asset']['name'] == self.mock_response['data']['createAssetVersion']['asset']['name']
57+
assert response['createAssetVersion']['createdBy']['id'] == self.mock_response['data']['createAssetVersion']['createdBy']['id']
58+
assert response['createAssetVersion']['createdBy']['email'] == self.mock_response['data']['createAssetVersion']['createdBy']['email']
59+
assert response['createAssetVersion']['ctx']['asset'] == self.mock_response['data']['createAssetVersion']['ctx']['asset']
60+
assert response['createAssetVersion']['ctx']['products'] == self.mock_response['data']['createAssetVersion']['ctx']['products']
61+
assert response['createAssetVersion']['ctx']['businessUnits'] == self.mock_response['data']['createAssetVersion']['ctx']['businessUnits']
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
from unittest.mock import patch
2+
from finite_state_sdk import create_new_asset_version_and_upload_binary, UploadMethod
3+
4+
5+
class TestCreateNewAssetVersionAndUploadBinary:
6+
# Define test data
7+
auth_token = "your_auth_token"
8+
organization_context = "your_organization_context"
9+
business_unit_id = "business_unit_id"
10+
created_by_user_id = "user_id"
11+
asset_id = "asset_id"
12+
version = "version"
13+
file_path = "file_path"
14+
product_id = "product_id"
15+
artifact_description = "artifact_description"
16+
quick_scan = False
17+
upload_method = UploadMethod.API
18+
19+
# Define mock responses for each mocked function
20+
mock_response_create_test = {
21+
"id": "test_id"
22+
}
23+
24+
@patch("finite_state_sdk.create_new_asset_version_artifact_and_test_for_upload")
25+
@patch("finite_state_sdk.upload_file_for_binary_analysis")
26+
def test_create_new_asset_version_and_upload_binary(self, mock_upload_file, mock_create_asset_version):
27+
mock_create_asset_version.return_value = self.mock_response_create_test['id']
28+
mock_upload_file.return_value = {}
29+
30+
response = create_new_asset_version_and_upload_binary(
31+
token=self.auth_token,
32+
organization_context=self.organization_context,
33+
business_unit_id=self.business_unit_id,
34+
created_by_user_id=self.created_by_user_id,
35+
asset_id=self.asset_id,
36+
version=self.version,
37+
file_path=self.file_path,
38+
product_id=self.product_id,
39+
artifact_description=self.artifact_description,
40+
quick_scan=self.quick_scan,
41+
upload_method=self.upload_method
42+
)
43+
44+
mock_create_asset_version.assert_called_once_with(
45+
self.auth_token,
46+
self.organization_context,
47+
business_unit_id=self.business_unit_id,
48+
created_by_user_id=self.created_by_user_id,
49+
asset_id=self.asset_id,
50+
version=self.version,
51+
product_id=self.product_id,
52+
test_type="finite_state_binary_analysis",
53+
artifact_description=self.artifact_description,
54+
upload_method=self.upload_method
55+
)
56+
mock_upload_file.assert_called_once_with(
57+
self.auth_token,
58+
self.organization_context,
59+
test_id=self.mock_response_create_test['id'],
60+
file_path=self.file_path,
61+
quick_scan=self.quick_scan
62+
)
63+
64+
assert response == {}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
from unittest.mock import patch
2+
from finite_state_sdk import create_new_asset_version_and_upload_test_results, UploadMethod
3+
4+
5+
class TestCreateNewAssetVersionAndUploadTestResults:
6+
# Define test data
7+
auth_token = "your_auth_token"
8+
organization_context = "your_organization_context"
9+
business_unit_id = "business_unit_id"
10+
created_by_user_id = "user_id"
11+
asset_id = "asset_id"
12+
version = "version"
13+
file_path = "file_path"
14+
product_id = "product_id"
15+
test_type = "test_type"
16+
artifact_description = "artifact_description"
17+
upload_method = UploadMethod.API
18+
19+
# Define mock responses for each mocked function
20+
mock_response_create_test = "test_id"
21+
22+
@patch("finite_state_sdk.create_new_asset_version_artifact_and_test_for_upload")
23+
@patch("finite_state_sdk.upload_test_results_file")
24+
def test_create_new_asset_version_and_upload_test_results(self, mock_upload_file, mock_create_asset_version):
25+
mock_create_asset_version.return_value = self.mock_response_create_test
26+
mock_upload_file.return_value = {}
27+
28+
response = create_new_asset_version_and_upload_test_results(
29+
self.auth_token,
30+
self.organization_context,
31+
business_unit_id=self.business_unit_id,
32+
created_by_user_id=self.created_by_user_id,
33+
asset_id=self.asset_id,
34+
version=self.version,
35+
file_path=self.file_path,
36+
product_id=self.product_id,
37+
test_type=self.test_type,
38+
artifact_description=self.artifact_description,
39+
upload_method=self.upload_method
40+
)
41+
42+
mock_create_asset_version.assert_called_once_with(
43+
self.auth_token,
44+
self.organization_context,
45+
business_unit_id=self.business_unit_id,
46+
created_by_user_id=self.created_by_user_id,
47+
asset_id=self.asset_id,
48+
version=self.version,
49+
product_id=self.product_id,
50+
test_type=self.test_type,
51+
artifact_description=self.artifact_description,
52+
upload_method=self.upload_method
53+
)
54+
mock_upload_file.assert_called_once_with(
55+
self.auth_token,
56+
self.organization_context,
57+
test_id=self.mock_response_create_test,
58+
file_path=self.file_path
59+
)
60+
61+
assert response == {}

0 commit comments

Comments
 (0)