| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 | from unittest import mockfrom uuid import uuid4import contextsfrom constants import HIDDEN_VALUEfrom core.variables import FloatVariable, IntegerVariable, SecretVariable, StringVariablefrom models.workflow import Workflowdef test_environment_variables():    contexts.tenant_id.set("tenant_id")    # Create a Workflow instance    workflow = Workflow(        tenant_id="tenant_id",        app_id="app_id",        type="workflow",        version="draft",        graph="{}",        features="{}",        created_by="account_id",        environment_variables=[],        conversation_variables=[],    )    # Create some EnvironmentVariable instances    variable1 = StringVariable.model_validate({"name": "var1", "value": "value1", "id": str(uuid4())})    variable2 = IntegerVariable.model_validate({"name": "var2", "value": 123, "id": str(uuid4())})    variable3 = SecretVariable.model_validate({"name": "var3", "value": "secret", "id": str(uuid4())})    variable4 = FloatVariable.model_validate({"name": "var4", "value": 3.14, "id": str(uuid4())})    with (        mock.patch("core.helper.encrypter.encrypt_token", return_value="encrypted_token"),        mock.patch("core.helper.encrypter.decrypt_token", return_value="secret"),    ):        # Set the environment_variables property of the Workflow instance        variables = [variable1, variable2, variable3, variable4]        workflow.environment_variables = variables        # Get the environment_variables property and assert its value        assert workflow.environment_variables == variablesdef test_update_environment_variables():    contexts.tenant_id.set("tenant_id")    # Create a Workflow instance    workflow = Workflow(        tenant_id="tenant_id",        app_id="app_id",        type="workflow",        version="draft",        graph="{}",        features="{}",        created_by="account_id",        environment_variables=[],        conversation_variables=[],    )    # Create some EnvironmentVariable instances    variable1 = StringVariable.model_validate({"name": "var1", "value": "value1", "id": str(uuid4())})    variable2 = IntegerVariable.model_validate({"name": "var2", "value": 123, "id": str(uuid4())})    variable3 = SecretVariable.model_validate({"name": "var3", "value": "secret", "id": str(uuid4())})    variable4 = FloatVariable.model_validate({"name": "var4", "value": 3.14, "id": str(uuid4())})    with (        mock.patch("core.helper.encrypter.encrypt_token", return_value="encrypted_token"),        mock.patch("core.helper.encrypter.decrypt_token", return_value="secret"),    ):        variables = [variable1, variable2, variable3, variable4]        # Set the environment_variables property of the Workflow instance        workflow.environment_variables = variables        assert workflow.environment_variables == [variable1, variable2, variable3, variable4]        # Update the name of variable3 and keep the value as it is        variables[2] = variable3.model_copy(            update={                "name": "new name",                "value": HIDDEN_VALUE,            }        )        workflow.environment_variables = variables        assert workflow.environment_variables[2].name == "new name"        assert workflow.environment_variables[2].value == variable3.valuedef test_to_dict():    contexts.tenant_id.set("tenant_id")    # Create a Workflow instance    workflow = Workflow(        tenant_id="tenant_id",        app_id="app_id",        type="workflow",        version="draft",        graph="{}",        features="{}",        created_by="account_id",        environment_variables=[],        conversation_variables=[],    )    # Create some EnvironmentVariable instances    with (        mock.patch("core.helper.encrypter.encrypt_token", return_value="encrypted_token"),        mock.patch("core.helper.encrypter.decrypt_token", return_value="secret"),    ):        # Set the environment_variables property of the Workflow instance        workflow.environment_variables = [            SecretVariable.model_validate({"name": "secret", "value": "secret", "id": str(uuid4())}),            StringVariable.model_validate({"name": "text", "value": "text", "id": str(uuid4())}),        ]        workflow_dict = workflow.to_dict()        assert workflow_dict["environment_variables"][0]["value"] == ""        assert workflow_dict["environment_variables"][1]["value"] == "text"        workflow_dict = workflow.to_dict(include_secret=True)        assert workflow_dict["environment_variables"][0]["value"] == "secret"        assert workflow_dict["environment_variables"][1]["value"] == "text"
 |