1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
package org.openecomp.appc.sdc.artifacts.impl;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.openecomp.appc.adapter.message.EventSender;
import org.openecomp.appc.sdc.artifacts.object.SDCArtifact;
import org.openecomp.sdc.api.IDistributionClient;
import org.openecomp.sdc.api.notification.IArtifactInfo;
import org.openecomp.sdc.api.notification.INotificationData;
import org.openecomp.sdc.api.notification.IResourceInstance;
import org.powermock.api.mockito.PowerMockito;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class TestArtifactProcessor {
AbstractArtifactProcessor abstractArtifactProcessor;
@Before
public void setup() throws Exception{
IDistributionClient client = PowerMockito.mock(IDistributionClient.class);
EventSender eventSender = PowerMockito.mock(EventSender.class);
abstractArtifactProcessor = Mockito.spy(new ToscaCsarArtifactProcessor(client,eventSender,getNotificationData(),getResources().get(0)
,getServiceArtifacts().get(0),null));
}
@Test
public void testGetArtifactObject(){
SDCArtifact artifact=abstractArtifactProcessor.getArtifactObject("test");
Assert.assertEquals("abcd-efgh-ijkl",artifact.getArtifactUUID());
Assert.assertEquals("VF_LICENSE",artifact.getArtifactType());
Assert.assertEquals("Vnf",artifact.getResourceName());
Assert.assertEquals("1.0",artifact.getResourceVersion());
Assert.assertEquals("test",artifact.getArtifactContent());
}
@Test
public void testFactoryForLicense() throws Exception{
IDistributionClient client = PowerMockito.mock(IDistributionClient.class);
EventSender eventSender = PowerMockito.mock(EventSender.class);
ArtifactProcessorFactory factory=new ArtifactProcessorFactory();
Assert.assertTrue(factory.getArtifactProcessor(client,eventSender,getNotificationData(),getResources().get(0)
,getServiceArtifacts().get(0),null) instanceof LicenseArtifactProcessor);
}
@Test
public void testFactoryForConfig() throws Exception{
IDistributionClient client = PowerMockito.mock(IDistributionClient.class);
EventSender eventSender = PowerMockito.mock(EventSender.class);
ArtifactProcessorFactory factory=new ArtifactProcessorFactory();
Assert.assertTrue(factory.getArtifactProcessor(client,eventSender,getNotificationData(),getResources().get(0)
,getServiceArtifactsForConfig().get(0),null) instanceof ConfigArtifactProcessor);
}
private INotificationData getNotificationData() throws ClassNotFoundException, IllegalAccessException,
InstantiationException, InvocationTargetException {
INotificationData notificationData = (INotificationData)getObject("org.openecomp.sdc.impl.NotificationDataImpl");
List<IArtifactInfo> serviceArtifacts = getServiceArtifacts();
invokeMethod(notificationData, "setServiceArtifacts", serviceArtifacts);
return notificationData;
}
private List<IResourceInstance> getResources() throws ClassNotFoundException, InvocationTargetException,
InstantiationException, IllegalAccessException {
List<IResourceInstance> resources = new ArrayList<>();
IResourceInstance resource = (IResourceInstance)getObject("org.openecomp.sdc.impl.JsonContainerResourceInstance");
List<IArtifactInfo> serviceArtifacts = getServiceArtifacts();
invokeMethod(resource,"setArtifacts",serviceArtifacts);
invokeMethod(resource,"setResourceName","Vnf");
invokeMethod(resource,"setResourceVersion","1.0");
resources.add(resource);
return resources;
}
private void invokeMethod(Object object, String methodName,Object... arguments) throws IllegalAccessException, InvocationTargetException {
Method[] methods = object.getClass().getDeclaredMethods();
for(Method method:methods){
if(methodName.equalsIgnoreCase(method.getName())){
method.setAccessible(true);
method.invoke(object,arguments);
}
}
}
private Object getObject(String fqcn) throws ClassNotFoundException, InstantiationException, IllegalAccessException, InvocationTargetException {
Constructor constructor = Arrays.asList(Class.forName(fqcn).getDeclaredConstructors())
.stream()
.filter(constructor1 -> constructor1.getParameterCount()==0)
.collect(Collectors.toList())
.get(0);
constructor.setAccessible(true);
return constructor.newInstance();
}
private List<IArtifactInfo> getServiceArtifacts() throws ClassNotFoundException, InvocationTargetException,
InstantiationException, IllegalAccessException {
List<IArtifactInfo> serviceArtifacts = new ArrayList<>();
IArtifactInfo artifactInfo = (IArtifactInfo)getObject("org.openecomp.sdc.impl.ArtifactInfoImpl");
invokeMethod(artifactInfo,"setArtifactType","VF_LICENSE");
invokeMethod(artifactInfo,"setArtifactUUID","abcd-efgh-ijkl");
serviceArtifacts.add(artifactInfo);
return serviceArtifacts;
}
private List<IArtifactInfo> getServiceArtifactsForConfig() throws ClassNotFoundException, InvocationTargetException,
InstantiationException, IllegalAccessException {
List<IArtifactInfo> serviceArtifacts = new ArrayList<>();
IArtifactInfo artifactInfo = (IArtifactInfo)getObject("org.openecomp.sdc.impl.ArtifactInfoImpl");
invokeMethod(artifactInfo,"setArtifactType","APPC_CONFIG");
invokeMethod(artifactInfo,"setArtifactUUID","abcd-efgh-ijkl");
serviceArtifacts.add(artifactInfo);
return serviceArtifacts;
}
}
|