sre-defender-env / tests /test_models.py
G Rohith Yadav
SRE Defender Env - Meta x Scaler Hackathon
68d3e5b
Raw
History Blame Contribute Delete
2.7 kB
import pytest
from pydantic import ValidationError
def test_action_read_file():
from sre_defender_env.models import SreDefenderAction
action = SreDefenderAction(action_type="read_file", filepath="/app/logs/nginx_access.log")
assert action.action_type == "read_file"
assert action.filepath == "/app/logs/nginx_access.log"
assert action.rule_content is None
assert action.file_content is None
def test_action_append_nginx_rule():
from sre_defender_env.models import SreDefenderAction
action = SreDefenderAction(action_type="append_nginx_rule", rule_content="deny 1.2.3.4;")
assert action.action_type == "append_nginx_rule"
assert action.rule_content == "deny 1.2.3.4;"
assert action.filepath is None
def test_action_write_middleware():
from sre_defender_env.models import SreDefenderAction
action = SreDefenderAction(
action_type="write_express_middleware",
file_content="const express = require('express'); const app = express();"
)
assert action.action_type == "write_express_middleware"
assert action.file_content is not None
def test_action_rejects_invalid_type():
from sre_defender_env.models import SreDefenderAction
with pytest.raises(ValidationError):
SreDefenderAction(action_type="execute_command", filepath="/etc/passwd")
def test_action_read_file_requires_filepath():
from sre_defender_env.models import SreDefenderAction
with pytest.raises(ValidationError):
SreDefenderAction(action_type="read_file") # no filepath
def test_observation_reward_bounds():
from sre_defender_env.models import SreDefenderObservation
with pytest.raises(ValidationError):
SreDefenderObservation(done=False, reward=1.5) # out of bounds
def test_action_requires_action_type():
from sre_defender_env.models import SreDefenderAction
with pytest.raises(ValidationError):
SreDefenderAction()
def test_observation_reward_is_float():
from sre_defender_env.models import SreDefenderObservation
obs = SreDefenderObservation(done=False)
assert isinstance(obs.reward, float)
assert obs.reward == 0.0
def test_observation_current_score_matches_reward():
from sre_defender_env.models import SreDefenderObservation
obs = SreDefenderObservation(done=False, reward=0.75, current_score=0.75)
assert obs.reward == 0.75
assert obs.current_score == 0.75
def test_observation_defaults():
from sre_defender_env.models import SreDefenderObservation
obs = SreDefenderObservation(done=False)
assert obs.log_tail == ""
assert obs.server_status == "unknown"
assert obs.task_id == 1
assert obs.error_message == ""