Modify user test files
[nemo.git] / nemo-impl / src / test / java / org / opendaylight / nemo / user / tenantmanager / TenantManageTest.java
1 /*
2
3 * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
4
5 *
6
7 * This program and the accompanying materials are made available under the
8
9 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
10
11 * and is available at http://www.eclipse.org/legal/epl-v10.html
12
13 */
14 package org.opendaylight.nemo.user.tenantmanager;
15
16 import junit.framework.TestCase;
17 import org.junit.Assert;
18 import org.junit.Before;
19 import org.junit.Test;
20
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;
44
45 import java.util.LinkedList;
46 import java.util.List;
47 import static org.mockito.Mockito.*;
48 /**
49  * Created by zhangmeng on 2015/11/20.
50  */
51 public class TenantManageTest extends TestCase {
52     private TenantManage tenantManage;
53     private DataBroker dataBroker;
54     private List<UserRole> userRoleList;
55     private List<User> usersList ;
56     private User user;
57     @Before
58     public void setUp() throws Exception {
59         userRoleList = new LinkedList<UserRole>();
60         usersList = new LinkedList<User>();
61         user = mock(User.class);
62
63         dataBroker = mock(DataBroker.class);
64         tenantManage = new TenantManage(dataBroker);
65     }
66
67     @Test
68     public void testGetUserRoleList() throws Exception {
69         Assert.assertNotNull(userRoleList);
70         userRoleList = tenantManage.getUserRoleList();
71         Assert.assertNotEquals(new LinkedList<UserRole>(),userRoleList);
72     }
73
74     @Test
75     public void testGetUsersList() throws Exception {
76         Assert.assertNotNull(usersList);
77         usersList = tenantManage.getUsersList();
78         Assert.assertNotEquals(new LinkedList<User>(),usersList);
79     }
80
81     @Test
82     public void testGetUser() throws Exception {
83         user = tenantManage.getUser();
84         Assert.assertNotEquals(mock(User.class),user);
85     }
86
87     @Test
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);
100     }
101
102     @Test
103     public void testFetchUsers() throws Exception {
104         CheckedFuture usersFuture = mock(CheckedFuture.class);
105         ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
106
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);
113     }
114
115     @Test
116     public void testFetchVNSpace() throws Exception {
117         CheckedFuture usersFuture = mock(CheckedFuture.class);
118         ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
119
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);
126     }
127
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);
132
133         when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
134         when(registerUserInput.getUserId()).thenReturn(null);
135         tenantManage.addUser(registerUserInput);
136
137         CheckedFuture f = mock(CheckedFuture.class);
138         when(registerUserInput.getUserId()).thenReturn(mock(UserId.class));
139         when(writeTransaction.submit()).thenReturn(f);
140         tenantManage.addUser(registerUserInput);
141
142         verify(dataBroker,times(2)).newWriteOnlyTransaction();
143         verify(registerUserInput,times(4)).getUserId();
144         Assert.assertNotNull(tenantManage);
145     }
146 }