2 * Copyright (c) 2015 Huawei, 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 user.tenantmanager;
10 import junit.framework.TestCase;
11 import org.junit.Assert;
12 import org.junit.Before;
13 import org.junit.Test;
15 import static org.junit.Assert.*;
17 import java.util.ArrayList;
18 import java.util.HashMap;
19 import java.util.List;
21 import java.util.concurrent.ExecutionException;
23 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
24 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
25 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
26 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
27 import org.opendaylight.nemo.user.tenantmanager.TenantManage;
28 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserRoleName;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.RegisterUserInput;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.UserRoles;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.user.roles.UserRole;
38 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
39 import org.slf4j.Logger;
40 import org.slf4j.LoggerFactory;
41 import com.google.common.base.Function;
42 import com.google.common.base.Optional;
43 import com.google.common.collect.Maps;
44 import com.google.common.util.concurrent.CheckedFuture;
45 import com.google.common.util.concurrent.FutureCallback;
46 import com.google.common.util.concurrent.Futures;
47 import com.google.common.util.concurrent.ListenableFuture;
48 import static org.mockito.Mockito.*;
50 * Created by zhangmeng on 2015/12/15.
52 public class TenantManageTest extends TestCase {
53 private DataBroker dataBroker;
54 private TenantManage tenantManage;
56 public void setUp() throws Exception {
57 dataBroker = mock(DataBroker.class);
59 tenantManage = new TenantManage(dataBroker);
63 public void testGetUser() throws Exception {
65 result = tenantManage.getUser();
66 Assert.assertTrue(result == null);
70 public void testGetUserRoles() throws Exception {
71 Map<UserRoleName, UserRole> result;
72 UserRoles userRoles = mock(UserRoles.class);
73 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
74 CheckedFuture checkedFuture = mock(CheckedFuture.class);
75 Optional<UserRoles> optional = Optional.of(userRoles);;
76 Assert.assertTrue(optional.isPresent());
79 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
80 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
81 when(checkedFuture.get()).thenReturn(optional);
82 // when(userRoles.getUserRole()).thenReturn(new UserRoleName("admin"));
84 result = tenantManage.getUserRoles();
85 Assert.assertTrue(result.isEmpty());
86 verify(userRoles).getUserRole();
90 public void testGetUsers_FetchVNSpace() throws Exception {
91 Map<UserId, User> result;
92 Users users = mock(Users.class);
93 User user = mock(User.class);
94 UserId userId = mock(UserId.class);
95 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
96 CheckedFuture checkedFuture = mock(CheckedFuture.class);
97 Optional<Users> usersOpt = Optional.of(users);
98 List<User> userList = new ArrayList<User>();
102 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
103 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
104 when(checkedFuture.get()).thenReturn(usersOpt);
105 when(users.getUser()).thenReturn(userList);
106 when(user.getUserId()).thenReturn(userId);
108 result = tenantManage.getUsers(); //hashmap with userid user
109 Assert.assertTrue(!result.isEmpty() && result.size() == 1);
110 verify(users).getUser();
111 verify(user).getUserId();
113 tenantManage.fetchVNSpace(userId);
114 Assert.assertTrue(tenantManage.getUser() != null);
118 public void testAddUser() throws Exception {
119 RegisterUserInput registerUserInput = mock(RegisterUserInput.class);
120 WriteTransaction writeTransaction = mock(WriteTransaction.class);
121 CheckedFuture checkedFuture = mock(CheckedFuture.class);
122 UserId userId = mock(UserId.class);
124 when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
125 when(writeTransaction.submit()).thenReturn(checkedFuture);
126 when(registerUserInput.getUserId())
130 tenantManage.addUser(registerUserInput);
131 verify(registerUserInput).getUserId();
133 tenantManage.addUser(registerUserInput);
134 verify(registerUserInput,times(4)).getUserId();