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.vnspacemanager.languagestyle.updateintentlang;
\r
10 import junit.framework.TestCase;
\r
11 import org.junit.Assert;
\r
12 import org.junit.Before;
\r
13 import org.junit.Test;
\r
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
\r
15 import org.opendaylight.nemo.user.tenantmanager.TenantManage;
\r
16 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;
\r
17 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateTemplateInstanceLang;
\r
18 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateTemplateInstance;
\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;
\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstance;
\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstanceBuilder;
\r
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstanceKey;
\r
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameter;
\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameterBuilder;
\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameterKey;
\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValuesBuilder;
\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.*;
\r
28 import org.slf4j.Logger;
\r
29 import org.slf4j.LoggerFactory;
\r
31 import java.lang.reflect.Field;
\r
33 import static org.junit.Assert.*;
\r
34 import static org.mockito.Mockito.*;
\r
36 * Created by zhangmeng on 2015/12/29.
\r
38 public class UpdateTemplateInstanceLangTest extends TestCase {
\r
39 private DataBroker dataBroker;
\r
40 private TenantManage tenantManage;
\r
41 private UpdateTemplateInstanceLang updateTemplateInstanceLang;
\r
43 public void setUp() throws Exception {
\r
44 dataBroker = mock(DataBroker.class);
\r
45 tenantManage = mock(TenantManage.class);
\r
47 updateTemplateInstanceLang = new UpdateTemplateInstanceLang(dataBroker,tenantManage);
\r
51 public void testTemplateInstanceLang() throws Exception {
\r
52 Class<UpdateTemplateInstanceLang> class1 = UpdateTemplateInstanceLang.class;
\r
53 Field field = class1.getDeclaredField("updateTemplateInstance");
\r
54 field.setAccessible(true);
\r
56 UserId userId = mock(UserId.class);
\r
57 String nodeName = new String("nodename");
\r
58 String nodeType = new String("nodetype");
\r
59 LinkedHashMap<String, LinkedHashMap<String,String>> propertyList = new LinkedHashMap<String, LinkedHashMap<String, String>>();
\r
60 LinkedHashMap<String, String> values = new LinkedHashMap<String, String>();
\r
61 Map map = mock(Map.class);
\r
62 UpdateTemplateInstance updateTemplateInstance = mock(UpdateTemplateInstance.class);
\r
63 String parameterName = new String("parameterName");
\r
65 propertyList.put(parameterName, values);
\r
66 values.put("string", NEMOConstants.string);
\r
67 field.set(updateTemplateInstanceLang, updateTemplateInstance);
\r
69 when(tenantManage.getTemplateInstance(userId))
\r
73 when(tenantManage.getObjectId(userId, nodeName)).thenReturn("11111111-1111-1111-1111-111111111111");
\r
74 when(map.containsKey(any(TemplateInstanceId.class)))
\r
77 Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList).equals("The instance " + nodeName + " has exist."));
\r
78 verify(tenantManage,times(2)).getTemplateInstance(userId);
\r
79 Assert.assertTrue(propertyList.get(parameterName) == values);
\r
80 when(updateTemplateInstance.checkTemplateInstance(any(UserId.class), any(TemplateInstance.class)))
\r
83 .thenReturn("range");
\r
84 doNothing().when(tenantManage).setUserTemplateInstance(any(UserId.class), any(TemplateInstanceId.class), any(TemplateInstance.class));
\r
85 Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList) == null);
\r
87 values.put("11", NEMOConstants.integer);
\r
88 Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList).equals("int"));
\r
90 values.put("1,1", NEMOConstants.range);
\r
91 Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList).equals("range"));
\r
92 verify(updateTemplateInstance,times(3)).checkTemplateInstance(any(UserId.class), any(TemplateInstance.class));
\r