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.HashMap;
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.common.rev151010.UserRoleName;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.RegisterUserInput;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.user.roles.UserRole;
39 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
41 import com.google.common.base.Optional;
42 import com.google.common.util.concurrent.CheckedFuture;
44 * Created by zhangmeng on 2015/11/20.
46 public class TenantManageTest extends TestCase {
47 private TenantManage tenantManage;
48 private DataBroker dataBroker;
49 private Map<UserRoleName, UserRole> userRoles;
50 private Map<UserId, User> users ;
54 public void setUp() throws Exception {
55 userRoles = new HashMap<UserRoleName, UserRole>();
56 users = new HashMap<UserId, User>();
57 user = mock(User.class);
59 dataBroker = mock(DataBroker.class);
60 tenantManage = new TenantManage(dataBroker);
64 public void testGetUser() throws Exception {
65 user = tenantManage.getUser();
66 Assert.assertNotEquals(mock(User.class),user);
70 public void testGetUserRoles() throws Exception {
71 //ListenableFuture<Optional<UserRoles>> userRolesFuture = mock(ListenableFuture.class);
72 CheckedFuture userRolesFuture = mock(CheckedFuture.class);
73 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
74 // when(dataBroker.newReadOnlyTransaction().read(any(LogicalDatastoreType.class),
75 // any(InstanceIdentifier.class))).thenReturn(userRolesFuture);
76 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
77 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(userRolesFuture);
78 when(userRolesFuture.get()).thenReturn(Optional.absent());
79 tenantManage.getUserRoles();
80 verify(dataBroker).newReadOnlyTransaction();
81 verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
82 Assert.assertNotNull(tenantManage);
86 public void testGetUsers() throws Exception {
87 CheckedFuture usersFuture = mock(CheckedFuture.class);
88 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
90 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
91 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(usersFuture);
92 when(usersFuture.get()).thenReturn(Optional.absent());
93 tenantManage.getUsers();
94 verify(dataBroker).newReadOnlyTransaction();
95 verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
96 Assert.assertNotNull(tenantManage);
100 public void testFetchVNSpace() throws Exception {
101 CheckedFuture usersFuture = mock(CheckedFuture.class);
102 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
104 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
105 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(usersFuture);
106 when(usersFuture.get()).thenReturn(Optional.absent());
107 tenantManage.fetchVNSpace(mock(UserId.class));
108 verify(dataBroker).newReadOnlyTransaction();
109 verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
110 Assert.assertNotNull(tenantManage);
113 @Test // As a parameter registerUserInput has no data , so the test case just test a small part
114 public void testAddUser() throws Exception {
115 RegisterUserInput registerUserInput = mock(RegisterUserInput.class);
116 WriteTransaction writeTransaction = mock(WriteTransaction.class);
118 when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
119 when(registerUserInput.getUserId()).thenReturn(null);
120 tenantManage.addUser(registerUserInput);
122 CheckedFuture f = mock(CheckedFuture.class);
123 when(registerUserInput.getUserId()).thenReturn(mock(UserId.class));
124 when(writeTransaction.submit()).thenReturn(f);
125 tenantManage.addUser(registerUserInput);
127 verify(dataBroker,times(2)).newWriteOnlyTransaction();
128 verify(registerUserInput,times(4)).getUserId();
129 Assert.assertNotNull(tenantManage);