3 * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
7 * This program and the accompanying materials are made available under the
9 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
11 * and is available at http://www.eclipse.org/legal/epl-v10.html
14 package org.opendaylight.nemo.user.tenantmanager;
16 import junit.framework.TestCase;
17 import org.junit.Assert;
18 import org.junit.Before;
19 import org.junit.Test;
21 import static org.junit.Assert.*;
22 import com.google.common.base.Optional;
23 import com.google.common.util.concurrent.FutureCallback;
24 import com.google.common.util.concurrent.Futures;
25 import com.google.common.util.concurrent.CheckedFuture;
26 import com.google.common.util.concurrent.ListenableFuture;
27 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
28 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
29 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
30 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
31 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
32 import org.opendaylight.nemo.user.tenantmanager.TenantManage;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.RegisterUserInput;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.UserRoles;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.user.roles.UserRole;
41 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
42 import org.slf4j.Logger;
43 import org.slf4j.LoggerFactory;
45 import java.util.LinkedList;
46 import java.util.List;
47 import static org.mockito.Mockito.*;
49 * Created by zhangmeng on 2015/11/20.
51 public class TenantManageTest extends TestCase {
52 private TenantManage tenantManage;
53 private DataBroker dataBroker;
54 private List<UserRole> userRoleList;
55 private List<User> usersList ;
58 public void setUp() throws Exception {
59 userRoleList = new LinkedList<UserRole>();
60 usersList = new LinkedList<User>();
61 user = mock(User.class);
63 dataBroker = mock(DataBroker.class);
64 tenantManage = new TenantManage(dataBroker);
68 public void testGetUserRoleList() throws Exception {
69 Assert.assertNotNull(userRoleList);
70 userRoleList = tenantManage.getUserRoleList();
71 Assert.assertNotEquals(new LinkedList<UserRole>(),userRoleList);
75 public void testGetUsersList() throws Exception {
76 Assert.assertNotNull(usersList);
77 usersList = tenantManage.getUsersList();
78 Assert.assertNotEquals(new LinkedList<User>(),usersList);
82 public void testGetUser() throws Exception {
83 user = tenantManage.getUser();
84 Assert.assertNotEquals(mock(User.class),user);
88 public void testFetchUserRoles() throws Exception {
89 //ListenableFuture<Optional<UserRoles>> userRolesFuture = mock(ListenableFuture.class);
90 CheckedFuture userRolesFuture = mock(CheckedFuture.class);
91 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
92 // when(dataBroker.newReadOnlyTransaction().read(any(LogicalDatastoreType.class),
93 // any(InstanceIdentifier.class))).thenReturn(userRolesFuture);
94 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
95 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(userRolesFuture);
96 tenantManage.fetchUserRoles();
97 verify(dataBroker).newReadOnlyTransaction();
98 verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
99 Assert.assertNotNull(tenantManage);
103 public void testFetchUsers() throws Exception {
104 CheckedFuture usersFuture = mock(CheckedFuture.class);
105 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
107 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
108 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(usersFuture);
109 tenantManage.fetchUsers();
110 verify(dataBroker).newReadOnlyTransaction();
111 verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
112 Assert.assertNotNull(tenantManage);
116 public void testFetchVNSpace() throws Exception {
117 CheckedFuture usersFuture = mock(CheckedFuture.class);
118 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
120 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
121 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(usersFuture);
122 tenantManage.fetchVNSpace(mock(UserId.class));
123 verify(dataBroker).newReadOnlyTransaction();
124 verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
125 Assert.assertNotNull(tenantManage);
128 @Test // As a parameter registerUserInput has no data , so the test case just test a small part
129 public void testAddUser() throws Exception {
130 RegisterUserInput registerUserInput = mock(RegisterUserInput.class);
131 WriteTransaction writeTransaction = mock(WriteTransaction.class);
133 when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
134 when(registerUserInput.getUserId()).thenReturn(null);
135 tenantManage.addUser(registerUserInput);
137 CheckedFuture f = mock(CheckedFuture.class);
138 when(registerUserInput.getUserId()).thenReturn(mock(UserId.class));
139 when(writeTransaction.submit()).thenReturn(f);
140 tenantManage.addUser(registerUserInput);
142 verify(dataBroker,times(2)).newWriteOnlyTransaction();
143 verify(registerUserInput,times(4)).getUserId();
144 Assert.assertNotNull(tenantManage);