|
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,37 @@ 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_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_mapped_choose_mapping_backend(self): |
| 236 | + data = InternalData(requester='test_requester') |
| 237 | + data.requester = 'test_requester' |
| 238 | + newctx, newdata = self.plugin.process(self.context, data) |
| 239 | + assert newctx.target_backend == 'mapped_backend' |
0 commit comments