|
9 | 9 | from satosa.internal import InternalData
|
10 | 10 | from satosa.micro_services.custom_routing import DecideIfRequesterIsAllowed
|
11 | 11 | from satosa.micro_services.custom_routing import DecideBackendByTargetIssuer
|
| 12 | +from satosa.micro_services.custom_routing import DecideBackendByRequester |
12 | 13 |
|
13 | 14 |
|
14 | 15 | TARGET_ENTITY = "entity1"
|
@@ -202,3 +203,51 @@ def test_when_target_is_mapped_choose_mapping_backend(self):
|
202 | 203 | data.requester = 'somebody else'
|
203 | 204 | newctx, newdata = self.plugin.process(self.context, data)
|
204 | 205 | assert newctx.target_backend == 'mapped_backend'
|
| 206 | + |
| 207 | + |
| 208 | +class TestDecideBackendByRequester(TestCase): |
| 209 | + def setUp(self): |
| 210 | + context = Context() |
| 211 | + context.state = State() |
| 212 | + |
| 213 | + config = { |
| 214 | + 'requester_mapping': { |
| 215 | + 'test_requester': 'mapped_backend', |
| 216 | + }, |
| 217 | + } |
| 218 | + |
| 219 | + plugin = DecideBackendByRequester( |
| 220 | + config=config, |
| 221 | + name='test_decide_service', |
| 222 | + base_url='https://satosa.example.org', |
| 223 | + ) |
| 224 | + plugin.next = lambda ctx, data: (ctx, data) |
| 225 | + |
| 226 | + self.config = config |
| 227 | + self.context = context |
| 228 | + self.plugin = plugin |
| 229 | + |
| 230 | + def test_when_requester_is_not_mapped_and_no_default_backend_skip(self): |
| 231 | + data = InternalData(requester='other_test_requester') |
| 232 | + newctx, newdata = self.plugin.process(self.context, data) |
| 233 | + assert not newctx.target_backend |
| 234 | + |
| 235 | + def test_when_requester_is_not_mapped_choose_default_backend(self): |
| 236 | + # override config to set default backend |
| 237 | + self.config['default_backend'] = 'default_backend' |
| 238 | + self.plugin = DecideBackendByRequester( |
| 239 | + config=self.config, |
| 240 | + name='test_decide_service', |
| 241 | + base_url='https://satosa.example.org', |
| 242 | + ) |
| 243 | + self.plugin.next = lambda ctx, data: (ctx, data) |
| 244 | + |
| 245 | + data = InternalData(requester='other_test_requester') |
| 246 | + newctx, newdata = self.plugin.process(self.context, data) |
| 247 | + assert newctx.target_backend == 'default_backend' |
| 248 | + |
| 249 | + def test_when_requester_is_mapped_choose_mapping_backend(self): |
| 250 | + data = InternalData(requester='test_requester') |
| 251 | + data.requester = 'test_requester' |
| 252 | + newctx, newdata = self.plugin.process(self.context, data) |
| 253 | + assert newctx.target_backend == 'mapped_backend' |
0 commit comments