Make nested classes final
[aaa.git] / aaa-shiro / impl / src / test / java / org / opendaylight / aaa / shiro / idm / persistence / PasswordHashTest.java
1 /*
2  * Copyright (c) 2015, 2017 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.aaa.shiro.idm.persistence;
9
10 import static org.mockito.Mockito.doReturn;
11 import static org.mockito.Mockito.mock;
12
13 import java.util.ArrayList;
14 import java.util.LinkedList;
15 import java.util.List;
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.opendaylight.aaa.api.IDMStoreException;
19 import org.opendaylight.aaa.api.IIDMStore;
20 import org.opendaylight.aaa.api.PasswordCredentials;
21 import org.opendaylight.aaa.api.model.Domain;
22 import org.opendaylight.aaa.api.model.Grant;
23 import org.opendaylight.aaa.api.model.Grants;
24 import org.opendaylight.aaa.api.model.Role;
25 import org.opendaylight.aaa.api.model.User;
26 import org.opendaylight.aaa.api.model.Users;
27 import org.opendaylight.aaa.api.password.service.PasswordHashService;
28 import org.opendaylight.aaa.impl.password.service.DefaultPasswordHashService;
29 import org.opendaylight.aaa.shiro.idm.IdmLightProxy;
30
31 /*
32  * @Author - Sharon Aicler (saichler@cisco.com)
33 */
34 public class PasswordHashTest {
35     private final PasswordHashService passwordService = new DefaultPasswordHashService();
36
37     private IIDMStore store;
38
39     @Before
40     public void before() throws IDMStoreException {
41         store = mock(IIDMStore.class);
42         Domain domain = new Domain();
43         domain.setName("sdn");
44         domain.setDomainid("sdn");
45
46         doReturn(domain).when(store).readDomain("sdn");
47         Creds creds = new Creds();
48
49         User user = new User();
50         user.setName("admin");
51         user.setUserid(creds.username());
52         user.setDomainid("sdn");
53         user.setSalt("ABCD");
54         user.setPassword(passwordService.getPasswordHash(creds.password(), user.getSalt()).getHashedPassword());
55         List<User> lu = new LinkedList<>();
56         lu.add(user);
57         Users users = new Users();
58         users.setUsers(lu);
59
60         Grant grant = new Grant();
61         List<Grant> listOfGrants = new ArrayList<>();
62         listOfGrants.add(grant);
63         grant.setDomainid("sdn");
64         grant.setRoleid("admin");
65         grant.setUserid("admin");
66         Grants grants = new Grants();
67         grants.setGrants(listOfGrants);
68         Role role = new Role();
69         role.setRoleid("admin");
70         role.setName("admin");
71         doReturn(role).when(store).readRole("admin");
72         doReturn(users).when(store).getUsers(creds.username(), creds.domain());
73         doReturn(grants).when(store).getGrants(creds.domain(), creds.username());
74     }
75
76     @Test
77     public void testPasswordHash() {
78         final var proxy = new IdmLightProxy(store, passwordService);
79         proxy.authenticate(new Creds());
80     }
81
82     private static final class Creds implements PasswordCredentials {
83         @Override
84         public String username() {
85             return "admin";
86         }
87
88         @Override
89         public String password() {
90             return "admin";
91         }
92
93         @Override
94         public String domain() {
95             return "sdn";
96         }
97     }
98 }