mirror of
https://github.com/status-im/spiff-arena.git
synced 2025-02-06 07:04:18 +00:00
Update process callers when a file is uploaded (#1571)
This commit is contained in:
parent
6c54265793
commit
5840db56cf
@ -28,6 +28,7 @@ from spiffworkflow_backend.routes.process_api_blueprint import _commit_and_push_
|
|||||||
from spiffworkflow_backend.routes.process_api_blueprint import _find_process_instance_by_id_or_raise
|
from spiffworkflow_backend.routes.process_api_blueprint import _find_process_instance_by_id_or_raise
|
||||||
from spiffworkflow_backend.routes.process_api_blueprint import _get_process_model
|
from spiffworkflow_backend.routes.process_api_blueprint import _get_process_model
|
||||||
from spiffworkflow_backend.routes.process_api_blueprint import _un_modify_modified_process_model_id
|
from spiffworkflow_backend.routes.process_api_blueprint import _un_modify_modified_process_model_id
|
||||||
|
from spiffworkflow_backend.services.data_setup_service import DataSetupService
|
||||||
from spiffworkflow_backend.services.file_system_service import FileSystemService
|
from spiffworkflow_backend.services.file_system_service import FileSystemService
|
||||||
from spiffworkflow_backend.services.git_service import GitCommandError
|
from spiffworkflow_backend.services.git_service import GitCommandError
|
||||||
from spiffworkflow_backend.services.git_service import GitService
|
from spiffworkflow_backend.services.git_service import GitService
|
||||||
@ -565,7 +566,9 @@ def _create_or_update_process_model_file(
|
|||||||
status_code=400,
|
status_code=400,
|
||||||
)
|
)
|
||||||
|
|
||||||
if file_contents_hash is not None:
|
is_new_file = file_contents_hash is None
|
||||||
|
|
||||||
|
if not is_new_file:
|
||||||
current_file_contents_bytes = SpecFileService.get_data(process_model, request_file.filename)
|
current_file_contents_bytes = SpecFileService.get_data(process_model, request_file.filename)
|
||||||
if current_file_contents_bytes and file_contents_hash:
|
if current_file_contents_bytes and file_contents_hash:
|
||||||
current_file_contents_hash = sha256(current_file_contents_bytes).hexdigest()
|
current_file_contents_hash = sha256(current_file_contents_bytes).hexdigest()
|
||||||
@ -598,4 +601,7 @@ def _create_or_update_process_model_file(
|
|||||||
file.file_contents_hash = file_contents_hash
|
file.file_contents_hash = file_contents_hash
|
||||||
_commit_and_push_to_git(f"{message_for_git_commit} {process_model_identifier}/{file.name}")
|
_commit_and_push_to_git(f"{message_for_git_commit} {process_model_identifier}/{file.name}")
|
||||||
|
|
||||||
|
if is_new_file:
|
||||||
|
DataSetupService.save_all_process_models()
|
||||||
|
|
||||||
return make_response(jsonify(file), http_status_to_return)
|
return make_response(jsonify(file), http_status_to_return)
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
from flask.app import Flask
|
from flask.app import Flask
|
||||||
from flask.testing import FlaskClient
|
from flask.testing import FlaskClient
|
||||||
from spiffworkflow_backend.models.task import TaskModel # noqa: F401
|
from spiffworkflow_backend.models.task import TaskModel # noqa: F401
|
||||||
@ -125,3 +127,97 @@ class TestProcessCallers(BaseTest):
|
|||||||
assert response.json is not None
|
assert response.json is not None
|
||||||
assert isinstance(response.json, list)
|
assert isinstance(response.json, list)
|
||||||
assert len(response.json) == 0
|
assert len(response.json) == 0
|
||||||
|
|
||||||
|
def test_references_after_process_file_delete(
|
||||||
|
self,
|
||||||
|
app: Flask,
|
||||||
|
client: FlaskClient,
|
||||||
|
with_db_and_bpmn_file_cleanup: None,
|
||||||
|
with_super_admin_user: UserModel,
|
||||||
|
) -> None:
|
||||||
|
self.create_group_and_model_with_bpmn(
|
||||||
|
client=client,
|
||||||
|
user=with_super_admin_user,
|
||||||
|
process_group_id="test_group_two",
|
||||||
|
process_model_id="call_activity_nested",
|
||||||
|
bpmn_file_location="call_activity_nested",
|
||||||
|
)
|
||||||
|
|
||||||
|
response = client.delete(
|
||||||
|
"/v1.0/process-models/test_group_two:call_activity_nested/files/call_activity_level_2.bpmn",
|
||||||
|
headers=self.logged_in_headers(with_super_admin_user),
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
response = client.get(
|
||||||
|
"/v1.0/processes",
|
||||||
|
headers=self.logged_in_headers(with_super_admin_user),
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert response.json is not None
|
||||||
|
assert isinstance(response.json, list)
|
||||||
|
assert len(response.json) == 3
|
||||||
|
|
||||||
|
response = client.get(
|
||||||
|
"/v1.0/processes/callers/Level2",
|
||||||
|
headers=self.logged_in_headers(with_super_admin_user),
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert response.json is not None
|
||||||
|
assert isinstance(response.json, list)
|
||||||
|
assert len(response.json) == 0
|
||||||
|
|
||||||
|
def test_references_after_process_file_delete_and_upload(
|
||||||
|
self,
|
||||||
|
app: Flask,
|
||||||
|
client: FlaskClient,
|
||||||
|
with_db_and_bpmn_file_cleanup: None,
|
||||||
|
with_super_admin_user: UserModel,
|
||||||
|
) -> None:
|
||||||
|
process_model = self.create_group_and_model_with_bpmn(
|
||||||
|
client=client,
|
||||||
|
user=with_super_admin_user,
|
||||||
|
process_group_id="test_group_two",
|
||||||
|
process_model_id="call_activity_nested",
|
||||||
|
bpmn_file_location="call_activity_nested",
|
||||||
|
)
|
||||||
|
|
||||||
|
response = client.delete(
|
||||||
|
"/v1.0/process-models/test_group_two:call_activity_nested/files/call_activity_level_2.bpmn",
|
||||||
|
headers=self.logged_in_headers(with_super_admin_user),
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
with open(f"{os.getcwd()}/tests/data/call_activity_nested/call_activity_level_2.bpmn", "rb") as f:
|
||||||
|
file_data = f.read()
|
||||||
|
|
||||||
|
bpmn_file_name = "call_activity_level_2.bpmn"
|
||||||
|
bpmn_file_location = "call_activity_level_2"
|
||||||
|
|
||||||
|
response = self.create_spec_file(
|
||||||
|
client,
|
||||||
|
process_model_id=process_model.id,
|
||||||
|
process_model=process_model,
|
||||||
|
process_model_location=bpmn_file_location,
|
||||||
|
file_name=bpmn_file_name,
|
||||||
|
file_data=file_data,
|
||||||
|
user=with_super_admin_user,
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response["process_model_id"] == process_model.id
|
||||||
|
assert response["name"] == bpmn_file_name
|
||||||
|
assert bytes(str(response["file_contents"]), "utf-8") == file_data
|
||||||
|
|
||||||
|
response = client.get(
|
||||||
|
"/v1.0/processes/callers/Level2",
|
||||||
|
headers=self.logged_in_headers(with_super_admin_user),
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert response.json is not None
|
||||||
|
assert isinstance(response.json, list)
|
||||||
|
assert len(response.json) == 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user