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 static org.mockito.Matchers.any;
17 import static org.mockito.Mockito.mock;
18 import static org.mockito.Mockito.times;
19 import static org.mockito.Mockito.verify;
20 import static org.mockito.Mockito.when;
22 import java.util.LinkedList;
23 import java.util.List;
25 import junit.framework.TestCase;
27 import org.junit.Assert;
28 import org.junit.Before;
29 import org.junit.Test;
30 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
31 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
32 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
33 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.RegisterUserInput;
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.user.rev151010.user.roles.UserRole;
38 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
40 import com.google.common.util.concurrent.CheckedFuture;
42 * Created by zhangmeng on 2015/11/20.
44 public class TenantManageTest extends TestCase {
45 private TenantManage tenantManage;
46 private DataBroker dataBroker;
47 private List<UserRole> userRoleList;
48 private List<User> usersList ;
51 public void setUp() throws Exception {
52 userRoleList = new LinkedList<UserRole>();
53 usersList = new LinkedList<User>();
54 user = mock(User.class);
56 dataBroker = mock(DataBroker.class);
57 tenantManage = new TenantManage(dataBroker);
61 public void testGetUserRoleList() throws Exception {
62 Assert.assertNotNull(userRoleList);
63 userRoleList = tenantManage.getUserRoleList();
64 Assert.assertNotEquals(new LinkedList<UserRole>(),userRoleList);
68 public void testGetUsersList() throws Exception {
69 Assert.assertNotNull(usersList);
70 usersList = tenantManage.getUsersList();
71 Assert.assertNotEquals(new LinkedList<User>(),usersList);
75 public void testGetUser() throws Exception {
76 user = tenantManage.getUser();
77 Assert.assertNotEquals(mock(User.class),user);
81 public void testFetchUserRoles() throws Exception {
82 //ListenableFuture<Optional<UserRoles>> userRolesFuture = mock(ListenableFuture.class);
83 CheckedFuture userRolesFuture = mock(CheckedFuture.class);
84 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
85 // when(dataBroker.newReadOnlyTransaction().read(any(LogicalDatastoreType.class),
86 // any(InstanceIdentifier.class))).thenReturn(userRolesFuture);
87 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
88 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(userRolesFuture);
89 tenantManage.fetchUserRoles();
90 verify(dataBroker).newReadOnlyTransaction();
91 verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
92 Assert.assertNotNull(tenantManage);
96 public void testFetchUsers() throws Exception {
97 CheckedFuture usersFuture = mock(CheckedFuture.class);
98 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
100 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
101 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(usersFuture);
102 tenantManage.fetchUsers();
103 verify(dataBroker).newReadOnlyTransaction();
104 verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
105 Assert.assertNotNull(tenantManage);
109 public void testFetchVNSpace() throws Exception {
110 CheckedFuture usersFuture = mock(CheckedFuture.class);
111 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
113 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
114 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(usersFuture);
115 tenantManage.fetchVNSpace(mock(UserId.class));
116 verify(dataBroker).newReadOnlyTransaction();
117 verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
118 Assert.assertNotNull(tenantManage);
121 @Test // As a parameter registerUserInput has no data , so the test case just test a small part
122 public void testAddUser() throws Exception {
123 RegisterUserInput registerUserInput = mock(RegisterUserInput.class);
124 WriteTransaction writeTransaction = mock(WriteTransaction.class);
126 when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
127 when(registerUserInput.getUserId()).thenReturn(null);
128 tenantManage.addUser(registerUserInput);
130 CheckedFuture f = mock(CheckedFuture.class);
131 when(registerUserInput.getUserId()).thenReturn(mock(UserId.class));
132 when(writeTransaction.submit()).thenReturn(f);
133 tenantManage.addUser(registerUserInput);
135 verify(dataBroker,times(2)).newWriteOnlyTransaction();
136 verify(registerUserInput,times(4)).getUserId();
137 Assert.assertNotNull(tenantManage);