2 * Copyright (c) 2015, 2017 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.aaa.shiro.idm.persistence;
10 import static org.mockito.Mockito.doReturn;
11 import static org.mockito.Mockito.mock;
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;
32 * @Author - Sharon Aicler (saichler@cisco.com)
34 public class PasswordHashTest {
35 private final PasswordHashService passwordService = new DefaultPasswordHashService();
37 private IIDMStore store;
40 public void before() throws IDMStoreException {
41 store = mock(IIDMStore.class);
42 Domain domain = new Domain();
43 domain.setName("sdn");
44 domain.setDomainid("sdn");
46 doReturn(domain).when(store).readDomain("sdn");
47 Creds creds = new Creds();
49 User user = new User();
50 user.setName("admin");
51 user.setUserid(creds.username());
52 user.setDomainid("sdn");
54 user.setPassword(passwordService.getPasswordHash(creds.password(), user.getSalt()).getHashedPassword());
55 List<User> lu = new LinkedList<>();
57 Users users = new Users();
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());
77 public void testPasswordHash() {
78 final var proxy = new IdmLightProxy(store, passwordService);
79 proxy.authenticate(new Creds());
82 private static final class Creds implements PasswordCredentials {
84 public String username() {
89 public String password() {
94 public String domain() {