33
44import pytest
55
6- from scripts .activate_stack import activate_stack
6+ from scripts .activate_stack import _parse_env_config , activate_stack
77
88
99@pytest .fixture
@@ -68,7 +68,9 @@ def _create_mock_env_config():
6868 return {
6969 "lock-state" : "open" ,
7070 "active-stack" : "test-stack-1" ,
71+ "active-version" : "v1" ,
7172 "inactive-stack" : "test-stack-2" ,
73+ "inactive-version" : "v2" ,
7274 "domain-name" : "test.domain.name" ,
7375 }
7476
@@ -88,16 +90,17 @@ def test_happy_path(mock_boto_session, mock_secretsmanager):
8890 expected_env_config = {
8991 ** mock_env_config ,
9092 "active-stack" : "test-stack-2" ,
93+ "active-version" : "v2" ,
9194 "inactive-stack" : "test-stack-1" ,
95+ "inactive-version" : "v1" ,
9296 }
9397 assert result ["SecretString" ] == json .dumps (expected_env_config )
9498
9599
96100def test_lock_state_not_open (mock_boto_session , mock_secretsmanager ):
97101 inital_env_config = {
102+ ** _create_mock_env_config (),
98103 "lock-state" : "locked" ,
99- "inactive-stack" : "test-stack-1" ,
100- "active-stack" : "test-stack-2" ,
101104 }
102105 mock_secretsmanager .create_secret (
103106 Name = "nhsd-nrlf--locked--env-config" , SecretString = json .dumps (inital_env_config )
@@ -115,7 +118,7 @@ def test_lock_state_not_open(mock_boto_session, mock_secretsmanager):
115118
116119def test_stack_already_active (mock_boto_session , mock_secretsmanager ):
117120 intial_env_config = {
118- "lock-state" : "open" ,
121+ ** _create_mock_env_config () ,
119122 "inactive-stack" : "test-stack-1" ,
120123 "active-stack" : "test-stack-2" ,
121124 }
@@ -132,3 +135,31 @@ def test_stack_already_active(mock_boto_session, mock_secretsmanager):
132135 SecretId = "nhsd-nrlf--already-active--env-config" # pragma: allowlist secret
133136 )
134137 assert result ["SecretString" ] == json .dumps (intial_env_config )
138+
139+
140+ def test_parse_env_config_valid ():
141+ valid_config = json .dumps (_create_mock_env_config ())
142+ result = _parse_env_config (valid_config )
143+ assert result == _create_mock_env_config ()
144+
145+
146+ def test_parse_env_config_empty ():
147+ with pytest .raises (ValueError ):
148+ _parse_env_config ("" )
149+
150+
151+ def test_parse_env_config_invalid_json ():
152+ with pytest .raises (ValueError ):
153+ _parse_env_config ("this is not JSON!" )
154+
155+
156+ def test_parse_env_config_missing_params ():
157+ with pytest .raises (ValueError ):
158+ _parse_env_config (json .dumps ({"lock-state" : "open" }))
159+
160+
161+ def test_parse_env_config_invalid_lock_state ():
162+ with pytest .raises (ValueError ):
163+ _parse_env_config (
164+ json .dumps ({** _create_mock_env_config (), "lock-state" : "invalid" })
165+ )
0 commit comments