2 * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
8 package org.opendaylight.nemo.user;
\r
10 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
\r
11 import org.opendaylight.nemo.intent.IntentResolutionException;
\r
12 import org.opendaylight.nemo.intent.IntentResolver;
\r
13 import org.opendaylight.nemo.intent.computation.VNMappingException;
\r
14 import org.opendaylight.nemo.user.advancedquery.AdvancedQuery;
\r
15 import org.opendaylight.nemo.user.tenantmanager.AAA;
\r
16 import org.opendaylight.nemo.user.tenantmanager.RegisterUser;
\r
17 import org.opendaylight.nemo.user.tenantmanager.TenantManage;
\r
18 import org.opendaylight.nemo.user.transactionmanager.TransactionBegin;
\r
19 import org.opendaylight.nemo.user.transactionmanager.TransactionEnd;
\r
20 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.LanguageIntent;
\r
21 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;
\r
22 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse.ParseException;
\r
23 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse.SimpleCharStream;
\r
24 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse.NEMOparserTokenManager;
\r
25 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteIntent;
\r
26 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateIntent;
\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.*;
\r
28 import org.opendaylight.yangtools.yang.common.RpcResult;
\r
29 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.advanced.nemo.query.input.QueryCondition;
\r
31 import java.util.concurrent.Future;
\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
\r
35 import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Error;
\r
36 import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Ok;
\r
37 import org.junit.Assert;
\r
38 import org.junit.Before;
\r
39 import org.junit.Test;
\r
40 import java.util.List;
\r
42 import java.util.Map;
\r
43 import java.lang.reflect.Field;
\r
44 import java.lang.reflect.Method;
\r
45 import com.google.common.base.Function;
\r
46 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse.NEMOparser;
\r
47 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
\r
48 import com.google.common.base.Optional;
\r
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.UserRoles;
\r
50 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
\r
51 import com.google.common.util.concurrent.CheckedFuture;
\r
52 import com.google.common.util.concurrent.FutureCallback;
\r
53 import com.google.common.util.concurrent.Futures;
\r
54 import com.google.common.util.concurrent.ListenableFuture;
\r
55 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
\r
56 import static org.mockito.Mockito.*;
\r
57 public class UserManagerTest{
\r
58 private DataBroker dataBroker;
\r
59 private LanguageIntent languageIntent;
\r
60 private TenantManage tenantManage;
\r
61 private IntentResolver intentResolver;
\r
62 UserManager usermanager1;
\r
64 public void setUp()throws Exception{
\r
65 dataBroker=mock(DataBroker.class);
\r
66 intentResolver=mock(IntentResolver.class);
\r
67 tenantManage=mock(TenantManage.class);
\r
69 Class<NEMOparser> class1 = NEMOparser.class;
\r
70 Field field = class1.getDeclaredField("jj_initialized_once");
\r
71 field.setAccessible(true);
\r
72 field.set(usermanager1,false);
\r
74 Class<SimpleCharStream> class2=SimpleCharStream.class;
\r
75 Field field1=class2.getDeclaredField("inputStream");
\r
76 field1.setAccessible(true);
\r
77 field1.set(usermanager1,null);
\r
79 Class<NEMOparserTokenManager> class3=NEMOparserTokenManager.class;
\r
80 Field field2=class3.getDeclaredField("input_stream");
\r
81 field2.setAccessible(true);
\r
82 field2.set(usermanager1,null);
\r
83 usermanager1=new UserManager(dataBroker,intentResolver);
\r
87 public void advancedNemoQueryTest()throws Exception{
\r
89 AdvancedNemoQueryInput input =mock(AdvancedNemoQueryInput.class);
\r
90 Map<UserId, User> result=new HashMap<UserId, User>();
\r
91 Users users = mock(Users.class);
\r
92 User user = mock(User.class);
\r
93 UserId userId = mock(UserId.class);
\r
94 UserId userId1 = mock(UserId.class);
\r
95 result.put(userId,user);
\r
96 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
\r
97 CheckedFuture checkedFuture = mock(CheckedFuture.class);
\r
98 Optional<Users> usersOpt = Optional.of(users);
\r
99 List<User> userList = new ArrayList<User>();
\r
102 userList.add(user);
\r
104 when(input.getUserId()).thenReturn(userId1);
\r
105 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
\r
106 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
\r
107 when(checkedFuture.get()).thenReturn(usersOpt);
\r
108 when(users.getUser()).thenReturn(userList);
\r
109 when(user.getUserId()).thenReturn(userId);
\r
110 AdvancedNemoQueryOutputBuilder outputBuilder = new AdvancedNemoQueryOutputBuilder();
\r
111 outputBuilder.setResultCode(Error).setMessage("The user is not exist.");
\r
112 Assert.assertNotNull(usermanager1.advancedNemoQuery(input));
\r
117 public void beginTransactionTest()throws Exception{
\r
118 IntentResolver intentResolver1=mock(IntentResolver.class);
\r
119 BeginTransactionInput input=mock(BeginTransactionInput.class);
\r
120 BeginTransactionOutputBuilder outputBuilder = new BeginTransactionOutputBuilder();
\r
121 Map<UserId, User> result;
\r
122 Users users = mock(Users.class);
\r
123 User user = mock(User.class);
\r
124 UserId userId = mock(UserId.class);
\r
125 UserId userId1 = mock(UserId.class);
\r
126 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
\r
127 CheckedFuture checkedFuture = mock(CheckedFuture.class);
\r
128 Optional<Users> usersOpt = Optional.of(users);
\r
129 List<User> userList = new ArrayList<User>();
\r
132 userList.add(user);
\r
134 when(input.getUserId()).thenReturn(userId1);
\r
135 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
\r
136 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
\r
137 when(checkedFuture.get()).thenReturn(usersOpt);
\r
138 when(users.getUser()).thenReturn(userList);
\r
139 when(user.getUserId()).thenReturn(userId);
\r
140 Assert.assertNotNull(usermanager1.beginTransaction(input));
\r
143 public void endTransactionTest() throws Exception{
\r
144 usermanager1.transaction=false;
\r
145 EndTransactionInput input=mock(EndTransactionInput.class);
\r
146 Assert.assertNotNull(usermanager1.endTransaction(input));
\r
149 usermanager1.transaction=true;
\r
150 Map<UserId, User> result;
\r
151 Users users = mock(Users.class);
\r
152 User user = mock(User.class);
\r
153 UserId userId = mock(UserId.class);
\r
154 UserId userId1 = mock(UserId.class);
\r
155 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
\r
156 CheckedFuture checkedFuture = mock(CheckedFuture.class);
\r
157 Optional<Users> usersOpt = Optional.of(users);
\r
158 List<User> userList = new ArrayList<User>();
\r
161 userList.add(user);
\r
163 when(input.getUserId()).thenReturn(userId1);
\r
164 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
\r
165 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
\r
166 when(checkedFuture.get()).thenReturn(usersOpt);
\r
167 when(users.getUser()).thenReturn(userList);
\r
168 when(user.getUserId()).thenReturn(userId);
\r
169 usermanager1.informresolver=false;
\r
170 Assert.assertNotNull(usermanager1.endTransaction(input));
\r
173 public void languageStyleNemoRequestTest() throws Exception{
\r
174 LanguageStyleNemoRequestInput input=mock(LanguageStyleNemoRequestInput.class);
\r
175 Map<UserId, User> result;
\r
176 Users users = mock(Users.class);
\r
177 User user = mock(User.class);
\r
178 UserId userId = mock(UserId.class);
\r
179 UserId userId1 = mock(UserId.class);
\r
180 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
\r
181 CheckedFuture checkedFuture = mock(CheckedFuture.class);
\r
182 Optional<Users> usersOpt = Optional.of(users);
\r
183 List<User> userList = new ArrayList<User>();
\r
186 userList.add(user);
\r
188 when(input.getUserId()).thenReturn(userId1);
\r
189 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
\r
190 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
\r
191 when(checkedFuture.get()).thenReturn(usersOpt);
\r
192 when(users.getUser()).thenReturn(userList);
\r
193 when(user.getUserId()).thenReturn(userId);
\r
194 Assert.assertNotNull(usermanager1.languageStyleNemoRequest(input));
\r
197 public void registerUserTest() throws Exception{
\r
198 RegisterUserInput input=mock(RegisterUserInput.class);
\r
199 Map<UserId, User> result=new HashMap<UserId, User>();
\r
200 Users users = mock(Users.class);
\r
201 UserRoles userRoles = mock(UserRoles.class);
\r
202 User user = mock(User.class);
\r
203 UserId userId = mock(UserId.class);
\r
205 result.put(userId,user);
\r
206 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
\r
207 CheckedFuture checkedFuture = mock(CheckedFuture.class);
\r
208 Optional<Users> usersOpt = Optional.of(users);
\r
209 List<User> userList = new ArrayList<User>();
\r
210 Optional<UserRoles> userrolesOpt = Optional.of(userRoles);
\r
212 userList.add(user);
\r
214 when(input.getUserId()).thenReturn(userId).thenReturn(userId);
\r
215 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction).thenReturn(readOnlyTransaction);
\r
216 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture).thenReturn(checkedFuture);
\r
217 when(checkedFuture.get()).thenReturn(userrolesOpt).thenReturn(usersOpt);
\r
218 when(users.getUser()).thenReturn(userList);
\r
219 when(user.getUserId()).thenReturn(userId);
\r
220 Assert.assertNotNull(usermanager1.registerUser(input));
\r
223 public void structureStyleNemoDeleteTest() throws Exception{
\r
224 StructureStyleNemoDeleteInput input=mock(StructureStyleNemoDeleteInput.class);
\r
225 Map<UserId, User> result=new HashMap<UserId, User>();
\r
226 Users users = mock(Users.class);
\r
227 User user = mock(User.class);
\r
228 UserId userId = mock(UserId.class);
\r
229 UserId userId1 = mock(UserId.class);
\r
230 result.put(userId,user);
\r
231 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
\r
232 CheckedFuture checkedFuture = mock(CheckedFuture.class);
\r
233 Optional<Users> usersOpt = Optional.of(users);
\r
234 List<User> userList = new ArrayList<User>();
\r
237 userList.add(user);
\r
239 when(input.getUserId()).thenReturn(userId1);
\r
240 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
\r
241 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
\r
242 when(checkedFuture.get()).thenReturn(usersOpt);
\r
243 when(users.getUser()).thenReturn(userList);
\r
244 when(user.getUserId()).thenReturn(userId);
\r
245 AdvancedNemoQueryOutputBuilder outputBuilder = new AdvancedNemoQueryOutputBuilder();
\r
246 outputBuilder.setResultCode(Error).setMessage("The user is not exist.");
\r
247 Assert.assertNotNull(usermanager1.structureStyleNemoDelete(input));
\r
249 public void structureStyleNemoUpdateTest() throws Exception{
\r
250 StructureStyleNemoUpdateInput input=mock(StructureStyleNemoUpdateInput.class);
\r
251 Map<UserId, User> result=new HashMap<UserId, User>();
\r
252 Users users = mock(Users.class);
\r
253 User user = mock(User.class);
\r
254 UserId userId = mock(UserId.class);
\r
255 UserId userId1 = mock(UserId.class);
\r
256 result.put(userId,user);
\r
257 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
\r
258 CheckedFuture checkedFuture = mock(CheckedFuture.class);
\r
259 Optional<Users> usersOpt = Optional.of(users);
\r
260 List<User> userList = new ArrayList<User>();
\r
263 userList.add(user);
\r
265 when(input.getUserId()).thenReturn(userId1);
\r
266 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
\r
267 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
\r
268 when(checkedFuture.get()).thenReturn(usersOpt);
\r
269 when(users.getUser()).thenReturn(userList);
\r
270 when(user.getUserId()).thenReturn(userId);
\r
271 AdvancedNemoQueryOutputBuilder outputBuilder = new AdvancedNemoQueryOutputBuilder();
\r
272 outputBuilder.setResultCode(Error).setMessage("The user is not exist.");
\r
273 Assert.assertNotNull(usermanager1.structureStyleNemoUpdate(input));
\r