2  * Copyright (c) 2016 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
 
   9 package org.opendaylight.aaa.authn.mdsal.store;
 
  11 import static org.mockito.Mockito.mock;
 
  12 import static org.mockito.Mockito.when;
 
  13 import com.google.common.base.Optional;
 
  14 import com.google.common.util.concurrent.CheckedFuture;
 
  15 import java.util.concurrent.ExecutionException;
 
  16 import org.opendaylight.aaa.api.IDMStoreUtil;
 
  17 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 
  18 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 
  19 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 
  20 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 
  21 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
 
  22 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.Authentication;
 
  23 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.authentication.Domain;
 
  24 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.authentication.DomainBuilder;
 
  25 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.authentication.DomainKey;
 
  26 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.authentication.Grant;
 
  27 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.authentication.GrantBuilder;
 
  28 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.authentication.GrantKey;
 
  29 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.authentication.Role;
 
  30 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.authentication.RoleBuilder;
 
  31 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.authentication.RoleKey;
 
  32 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.authentication.User;
 
  33 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.authentication.UserBuilder;
 
  34 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authn.claims.rev141029.authentication.UserKey;
 
  35 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
  37 public class IDMStoreTestUtil {
 
  38     /* DataBroker mocked with Mokito */
 
  39     protected static DataBroker dataBroker = mock(DataBroker.class);
 
  40     protected static WriteTransaction wrt = mock(WriteTransaction.class);
 
  41     protected static ReadOnlyTransaction rot = null;
 
  44         rot = (ReadOnlyTransaction) DataBrokerReadMocker.addMock(ReadOnlyTransaction.class);
 
  45         when(dataBroker.newReadOnlyTransaction()).thenReturn(rot);
 
  46         when(dataBroker.newWriteOnlyTransaction()).thenReturn(wrt);
 
  49     /* Domain Data Object Instance */
 
  50     public Domain domain = createdomain();
 
  52     /* Domain create Method */
 
  53     public Domain createdomain() {
 
  54         /* Start of Domain builder */
 
  55         DomainBuilder domainbuilder = new DomainBuilder();
 
  56         domainbuilder.setName("SETNAME");
 
  57         domainbuilder.setDomainid("SETNAME");
 
  58         domainbuilder.setKey(new DomainKey("SETNAME"));
 
  59         domainbuilder.setDescription("SETDESCRIPTION");
 
  60         domainbuilder.setEnabled(true);
 
  61         /* End of Domain builder */
 
  62         return domainbuilder.build();
 
  65     /* Role Data Object Instance */
 
  66     public Role role = createrole();
 
  68     /* Role create Method */
 
  69     public Role createrole() {
 
  70         /* Start of Role builder */
 
  71         RoleBuilder rolebuilder = new RoleBuilder();
 
  72         rolebuilder.setRoleid("SETNAME@SETNAME");
 
  73         rolebuilder.setName("SETNAME");
 
  74         rolebuilder.setKey(new RoleKey(rolebuilder.getRoleid()));
 
  75         rolebuilder.setDomainid(createdomain().getDomainid());
 
  76         rolebuilder.setDescription("SETDESCRIPTION");
 
  77         /* End of Role builder */
 
  78         return rolebuilder.build();
 
  81     /* User Data Object Instance */
 
  82     public User user = createuser();
 
  84     /* User create Method */
 
  85     public User createuser() {
 
  86         /* Start of User builder */
 
  87         UserBuilder userbuilder = new UserBuilder();
 
  88         userbuilder.setUserid("SETNAME@SETNAME");
 
  89         userbuilder.setName("SETNAME");
 
  90         userbuilder.setKey(new UserKey(userbuilder.getUserid()));
 
  91         userbuilder.setDomainid(createdomain().getDomainid());
 
  92         userbuilder.setEmail("SETEMAIL");
 
  93         userbuilder.setPassword("SETPASSWORD");
 
  94         userbuilder.setSalt("SETSALT");
 
  95         userbuilder.setEnabled(true);
 
  96         userbuilder.setDescription("SETDESCRIPTION");
 
  97         /* End of User builder */
 
  98         return userbuilder.build();
 
 101     /* Grant Data Object Instance */
 
 102     public Grant grant = creategrant();
 
 104     /* Grant create Method */
 
 105     public Grant creategrant() {
 
 106         /* Start of Grant builder */
 
 107         GrantBuilder grantbuilder = new GrantBuilder();
 
 108         grantbuilder.setDomainid(createdomain().getDomainid());
 
 109         grantbuilder.setRoleid(createrole().getRoleid());
 
 110         grantbuilder.setUserid(createuser().getUserid());
 
 111         grantbuilder.setGrantid(IDMStoreUtil.createGrantid(grantbuilder.getUserid(),
 
 112                 grantbuilder.getDomainid(), grantbuilder.getRoleid()));
 
 113         grantbuilder.setKey(new GrantKey(grantbuilder.getGrantid()));
 
 114         /* End of Grant builder */
 
 115         return grantbuilder.build();
 
 118     /* InstanceIdentifier for Grant instance grant */
 
 119     public InstanceIdentifier<Grant> grantID = InstanceIdentifier.create(Authentication.class)
 
 121                                                                          creategrant().getKey());
 
 123     /* Mokito DataBroker method for grant Data Object */
 
 124     public void addMokitoForgrant() throws NoSuchMethodException, SecurityException, InterruptedException, ExecutionException {
 
 125         CheckedFuture<Optional<Grant>, ReadFailedException> read = mock(CheckedFuture.class);
 
 126         DataBrokerReadMocker.getMocker(rot).addWhen("read",
 
 127                 new Object[] { LogicalDatastoreType.CONFIGURATION, grantID }, read);
 
 128         Optional<Grant> optional = mock(Optional.class);
 
 129         when(read.get()).thenReturn(optional);
 
 130         when(optional.get()).thenReturn(grant);
 
 131         when(optional.isPresent()).thenReturn(true);
 
 134     /* InstanceIdentifier for Domain instance domain */
 
 135     public InstanceIdentifier<Domain> domainID = InstanceIdentifier.create(Authentication.class)
 
 141     /* Mokito DataBroker method for domain Data Object */
 
 142     public void addMokitoFordomain() throws NoSuchMethodException, SecurityException, InterruptedException, ExecutionException {
 
 143         CheckedFuture<Optional<Domain>, ReadFailedException> read = mock(CheckedFuture.class);
 
 144         DataBrokerReadMocker.getMocker(rot).addWhen("read",
 
 145                 new Object[] { LogicalDatastoreType.CONFIGURATION, domainID }, read);
 
 146         Optional<Domain> optional = mock(Optional.class);
 
 147         when(read.get()).thenReturn(optional);
 
 148         when(optional.get()).thenReturn(domain);
 
 149         when(optional.isPresent()).thenReturn(true);
 
 152     /* InstanceIdentifier for Role instance role */
 
 153     public InstanceIdentifier<Role> roleID = InstanceIdentifier.create(Authentication.class).child(
 
 154             Role.class, createrole().getKey());
 
 156     /* Mokito DataBroker method for role Data Object */
 
 157     public void addMokitoForrole() throws NoSuchMethodException, SecurityException, InterruptedException, ExecutionException {
 
 158         CheckedFuture<Optional<Role>, ReadFailedException> read = mock(CheckedFuture.class);
 
 159         DataBrokerReadMocker.getMocker(rot).addWhen("read",
 
 160                 new Object[] { LogicalDatastoreType.CONFIGURATION, roleID }, read);
 
 161         Optional<Role> optional = mock(Optional.class);
 
 162         when(read.get()).thenReturn(optional);
 
 163         when(optional.get()).thenReturn(role);
 
 164         when(optional.isPresent()).thenReturn(true);
 
 167     /* InstanceIdentifier for User instance user */
 
 168     public InstanceIdentifier<User> userID = InstanceIdentifier.create(Authentication.class).child(
 
 169             User.class, createuser().getKey());
 
 171     /* Mokito DataBroker method for user Data Object */
 
 172     public void addMokitoForuser() throws NoSuchMethodException, SecurityException, InterruptedException, ExecutionException {
 
 173         CheckedFuture<Optional<User>, ReadFailedException> read = mock(CheckedFuture.class);
 
 174         DataBrokerReadMocker.getMocker(rot).addWhen("read",
 
 175                 new Object[] { LogicalDatastoreType.CONFIGURATION, userID }, read);
 
 176         Optional<User> optional = mock(Optional.class);
 
 177         when(read.get()).thenReturn(optional);
 
 178         when(optional.get()).thenReturn(user);
 
 179         when(optional.isPresent()).thenReturn(true);