1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.wa.starter.surrogate;
20
21 import static org.junit.jupiter.api.Assertions.assertFalse;
22 import static org.junit.jupiter.api.Assertions.assertTrue;
23
24 import java.util.Optional;
25 import org.apache.syncope.common.lib.wa.ImpersonationAccount;
26 import org.apache.syncope.common.rest.api.service.wa.ImpersonationService;
27 import org.apache.syncope.wa.bootstrap.WARestClient;
28 import org.apache.syncope.wa.starter.AbstractTest;
29 import org.apereo.cas.authentication.principal.Principal;
30 import org.apereo.cas.authentication.principal.PrincipalFactoryUtils;
31 import org.apereo.cas.authentication.surrogate.SurrogateAuthenticationService;
32 import org.junit.jupiter.api.Test;
33 import org.springframework.beans.factory.annotation.Autowired;
34
35 public class WASurrogateAuthenticationServiceTest extends AbstractTest {
36
37 @Autowired
38 private WARestClient waRestClient;
39
40 @Autowired
41 private SurrogateAuthenticationService surrogateService;
42
43 @Test
44 public void verifyImpersonation() {
45 String owner = "syncope-principal";
46 ImpersonationAccount account = new ImpersonationAccount.Builder().
47 impersonated("impersonatee").build();
48
49 ImpersonationService impersonationService = waRestClient.getService(ImpersonationService.class);
50
51 impersonationService.create(owner, account);
52
53 assertFalse(surrogateService.getImpersonationAccounts(owner).isEmpty());
54
55 Principal principal = PrincipalFactoryUtils.newPrincipalFactory().createPrincipal(owner);
56 assertFalse(surrogateService.canImpersonate("unknown", principal, Optional.empty()));
57 assertTrue(surrogateService.canImpersonate(account.getImpersonated(), principal, Optional.empty()));
58 }
59 }