Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions app/services/bindflow_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from typing import Any

from ..schemas.workflows import WorkflowUserDetails
from .cluster_utils import GADI_PROJECT, encode_ip
from .cluster_utils import GADI_PROJECT, encode_value
from .workflow_config_fetcher import fetch_workflow_config


Expand All @@ -32,9 +32,9 @@ def get_bindflow_config_text(
base = fetch_workflow_config(config_file_path)

account = (
f"{user_details.user_email}:{encode_ip(user_details.ip_address)}"
f"{encode_value(user_details.user_email)}:{encode_value(user_details.ip_address)}"
Comment thread
vtnphan marked this conversation as resolved.
Outdated
if user_details.ip_address
else user_details.user_email
else encode_value(user_details.user_email)
)
cluster_opts = f"-A {account}"
override = f'\nprocess {{\n clusterOptions = "{cluster_opts}"\n}}\n'
Expand Down
6 changes: 3 additions & 3 deletions app/services/cluster_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
GADI_PROJECT: str = os.getenv("GADI_PROJECT", "yz52")


def encode_ip(ip_address: str) -> str:
"""Return the base64 encoding of an IP address string."""
return base64.b64encode(ip_address.encode()).decode()
def encode_value(value: str) -> str:
"""Return the base64 encoding of a string."""
return base64.b64encode(value.encode()).decode()
6 changes: 3 additions & 3 deletions app/services/proteindj_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from typing import Any

from ..schemas.workflows import WorkflowUserDetails
from .cluster_utils import encode_ip
from .cluster_utils import encode_value
from .workflow_config_fetcher import fetch_workflow_config


Expand Down Expand Up @@ -44,9 +44,9 @@ def get_proteindj_config_text(
base = fetch_workflow_config(config_file_path)

account = (
f"{user_details.user_email}:{encode_ip(user_details.ip_address)}"
f"{encode_value(user_details.user_email)}:{encode_value(user_details.ip_address)}"
if user_details.ip_address
else user_details.user_email
else encode_value(user_details.user_email)
)
cluster_opts = f"-A {account}"
override = f'\nprocess {{\n clusterOptions = "{cluster_opts}"\n}}\n'
Expand Down
6 changes: 3 additions & 3 deletions app/services/proteinfold_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from typing import Any

from ..schemas.workflows import WorkflowUserDetails
from .cluster_utils import GADI_PROJECT, encode_ip
from .cluster_utils import GADI_PROJECT, encode_value
from .workflow_config_fetcher import fetch_workflow_config


Expand All @@ -30,9 +30,9 @@ def get_proteinfold_config_text(
base = fetch_workflow_config(config_file_path)

account = (
f"{user_details.user_email}:{encode_ip(user_details.ip_address)}"
f"{encode_value(user_details.user_email)}:{encode_value(user_details.ip_address)}"
if user_details.ip_address
else user_details.user_email
else encode_value(user_details.user_email)
)
cluster_opts = f"-P {GADI_PROJECT} -A {account}"
override = f'\nprocess {{\n clusterOptions = "{cluster_opts}"\n}}\n'
Expand Down
6 changes: 3 additions & 3 deletions app/services/wisps_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from typing import Any, Literal

from ..schemas.workflows import WorkflowUserDetails
from .cluster_utils import GADI_PROJECT, encode_ip
from .cluster_utils import GADI_PROJECT, encode_value
from .workflow_config_fetcher import fetch_workflow_config

WispsMode = Literal["g1-g2", "manual"]
Expand Down Expand Up @@ -50,9 +50,9 @@ def get_wisps_config_text(
base = fetch_workflow_config(config_file_path)

account = (
f"{user_details.user_email}:{encode_ip(user_details.ip_address)}"
f"{encode_value(user_details.user_email)}:{encode_value(user_details.ip_address)}"
if user_details.ip_address
else user_details.user_email
else encode_value(user_details.user_email)
)
cluster_opts = f"-P {GADI_PROJECT} -A {account}"
override = f'\nprocess {{\n clusterOptions = "{cluster_opts}"\n}}\n'
Expand Down
8 changes: 4 additions & 4 deletions tests/test_proteindj_coverage.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,20 +221,20 @@ def test_get_proteindj_config_text_appends_process_block():
assert "clusterOptions" in result


def test_get_proteindj_config_text_contains_email_and_encoded_ip():
def test_get_proteindj_config_text_contains_encoded_email_and_encoded_ip():
with patch("builtins.open", mock_open(read_data="base_config")):
result = get_proteindj_config_text("/fake/proteindj.config", user_details=_USER_DETAILS)
assert "user@ex.com" in result
assert "dXNlckBleC5jb20=" in result
assert "MS4yLjMuNA==" in result


def test_get_proteindj_config_text_without_ip_uses_email_only():
def test_get_proteindj_config_text_without_ip_uses_encoded_email_only():
with patch("builtins.open", mock_open(read_data="base_config")):
result = get_proteindj_config_text(
"/fake/proteindj.config",
user_details=_USER_DETAILS.model_copy(update={"ip_address": ""}),
)
assert "-A user@ex.com" in result
assert "-A dXNlckBleC5jb20=" in result
assert ":" not in result.split("clusterOptions = ")[1]


Expand Down
8 changes: 4 additions & 4 deletions tests/test_proteinfold_coverage.py
Original file line number Diff line number Diff line change
Expand Up @@ -547,23 +547,23 @@ def test_get_proteinfold_config_text_appends_process_block():
assert "clusterOptions" in result


def test_get_proteinfold_config_text_contains_email_and_encoded_ip():
def test_get_proteinfold_config_text_contains_encoded_email_and_encoded_ip():
with patch("builtins.open", mock_open(read_data="base_config")):
result = get_proteinfold_config_text(
"/fake/proteinfold.config",
user_details=_USER_DETAILS,
)
assert "user@ex.com" in result
assert "dXNlckBleC5jb20=" in result
assert "MS4yLjMuNA==" in result


def test_get_proteinfold_config_text_without_ip_uses_email_only():
def test_get_proteinfold_config_text_without_ip_uses_encoded_email_only():
with patch("builtins.open", mock_open(read_data="base_config")):
result = get_proteinfold_config_text(
"/fake/proteinfold.config",
user_details=_USER_DETAILS.model_copy(update={"ip_address": ""}),
)
assert "-A user@ex.com" in result
assert "-A dXNlckBleC5jb20=" in result
assert ":" not in result.split("clusterOptions = ")[1]


Expand Down
6 changes: 3 additions & 3 deletions tests/test_services_bindflow_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ def test_get_bindflow_config_text_interpolates_email():
"/fake/bindflow.config",
user_details=_user_details("alice@example.com"),
)
assert "-A alice@example.com" in result
assert "-A YWxpY2VAZXhhbXBsZS5jb20=" in result


def test_get_bindflow_config_text_without_ip_address_omits_encoding():
Expand All @@ -154,7 +154,7 @@ def test_get_bindflow_config_text_without_ip_address_omits_encoding():
"/fake/bindflow.config",
user_details=_user_details("user@example.com"),
)
assert "-A user@example.com" in result
assert "-A dXNlckBleGFtcGxlLmNvbQ==" in result
assert ":" not in result.split("clusterOptions = ")[1]


Expand All @@ -164,7 +164,7 @@ def test_get_bindflow_config_text_with_ip_address_appends_encoded_ip():
"/fake/bindflow.config",
user_details=_user_details("user@example.com", ip_address="1.2.3.4"),
)
assert "-A user@example.com:MS4yLjMuNA==" in result
assert "-A dXNlckBleGFtcGxlLmNvbQ==:MS4yLjMuNA==" in result


def test_get_bindflow_config_text_url_fetching():
Expand Down
19 changes: 12 additions & 7 deletions tests/test_services_cluster_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,25 @@
import importlib

Comment thread
marius-mather marked this conversation as resolved.
from app.services import cluster_utils
from app.services.cluster_utils import encode_ip
from app.services.cluster_utils import encode_value


def test_encode_ip_returns_base64_of_ip_string():
assert encode_ip("1.2.3.4") == base64.b64encode(b"1.2.3.4").decode()
def test_encode_value_returns_base64_of_ip_string():
assert encode_value("1.2.3.4") == base64.b64encode(b"1.2.3.4").decode()


def test_encode_ip_empty_string():
assert encode_ip("") == ""
def test_encode_value_empty_string():
assert encode_value("") == ""


def test_encode_ip_ipv6_address():
def test_encode_value_ipv6_address():
ip = "2001:db8::1"
assert encode_ip(ip) == base64.b64encode(ip.encode()).decode()
assert encode_value(ip) == base64.b64encode(ip.encode()).decode()


def test_encode_value_email_string():
email = "user@example.com"
assert encode_value(email) == base64.b64encode(email.encode()).decode()


def test_gadi_project_defaults_to_yz52(monkeypatch):
Expand Down
8 changes: 4 additions & 4 deletions tests/test_wisps_coverage.py
Original file line number Diff line number Diff line change
Expand Up @@ -262,23 +262,23 @@ def test_get_wisps_config_text_appends_process_block():
assert "clusterOptions" in result


def test_get_wisps_config_text_contains_email_and_encoded_ip():
def test_get_wisps_config_text_contains_encoded_email_and_encoded_ip():
with patch("builtins.open", mock_open(read_data="base_config")):
result = get_wisps_config_text(
config_file_path="/fake/path.config",
user_details=_USER_DETAILS,
)
assert "user@ex.com" in result
assert "dXNlckBleC5jb20=" in result
assert "MS4yLjMuNA==" in result


def test_get_wisps_config_text_without_ip_uses_email_only():
def test_get_wisps_config_text_without_ip_uses_encoded_email_only():
with patch("builtins.open", mock_open(read_data="base_config")):
result = get_wisps_config_text(
config_file_path="/fake/path.config",
user_details=_USER_DETAILS.model_copy(update={"ip_address": ""}),
)
assert "-A user@ex.com" in result
assert "-A dXNlckBleC5jb20=" in result
assert ":" not in result.split("clusterOptions = ")[1]


Expand Down
Loading