9805b77eb8901e1d5fb792cd0e668cf729a4a99a
[sdc.git] /
1 package org.openecomp.sdcrests.vsp.rest.services;
2
3 import org.apache.http.HttpStatus;
4 import org.junit.Assert;
5 import org.junit.Before;
6 import org.junit.Test;
7 import org.junit.runner.RunWith;
8 import org.mockito.ArgumentMatchers;
9 import org.mockito.Mock;
10 import org.openecomp.sdc.logging.api.Logger;
11 import org.openecomp.sdc.logging.api.LoggerFactory;
12 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManager;
13 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManagerFactory;
14 import org.openecomp.sdc.vendorsoftwareproduct.ImageManager;
15 import org.openecomp.sdc.vendorsoftwareproduct.ImageManagerFactory;
16 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ImageEntity;
17 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
18 import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse;
19 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityType;
20 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
21 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Image;
22 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ImageCreationDto;
23 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ImageDto;
24 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ImageRequestDto;
25 import org.openecomp.sdcrests.vendorsoftwareproducts.types.QuestionnaireResponseDto;
26 import org.openecomp.sdcrests.wrappers.GenericCollectionWrapper;
27 import org.powermock.core.classloader.annotations.PrepareForTest;
28 import org.powermock.modules.junit4.PowerMockRunner;
29
30 import javax.ws.rs.core.Response;
31 import java.util.Collection;
32 import java.util.Collections;
33 import java.util.UUID;
34
35 import static org.mockito.MockitoAnnotations.initMocks;
36 import static org.powermock.api.mockito.PowerMockito.mockStatic;
37 import static org.powermock.api.mockito.PowerMockito.when;
38
39 @RunWith(PowerMockRunner.class)
40 @PrepareForTest({ComputeImpl.class, ComponentManagerFactory.class, ImageManagerFactory.class})
41 public class ImagesImplTest {
42
43   private Logger logger = LoggerFactory.getLogger(ImagesImplTest.class);
44
45   @Mock
46   private ImageManagerFactory imageManagerFactory;
47
48   @Mock
49   private ImageManager imageManager;
50
51   @Mock
52   private ComponentManagerFactory componentManagerFactory;
53
54   @Mock
55   private ComponentManager componentManager;
56
57   private final String vspId = UUID.randomUUID().toString();
58   private final String versionId = UUID.randomUUID().toString();
59   private final String componentId = "" + System.currentTimeMillis();
60   private final String imageId = "" + System.currentTimeMillis();
61   private final String user = "cs0008";
62
63   @Before
64   public void setUp() {
65     try {
66       initMocks(this);
67
68       mockStatic(ComponentManagerFactory.class);
69       when(ComponentManagerFactory.getInstance()).thenReturn(componentManagerFactory);
70       when(componentManagerFactory.createInterface()).thenReturn(componentManager);
71
72       mockStatic(ImageManagerFactory.class);
73       when(ImageManagerFactory.getInstance()).thenReturn(imageManagerFactory);
74       when(imageManagerFactory.createInterface()).thenReturn(imageManager);
75
76
77
78       ImageEntity ie = new ImageEntity();
79       ie.setComponentId(componentId);
80       ie.setId(imageId);
81       ie.setCompositionData("{\"name\":\"nm\",\"description\":\"d\"}");
82
83
84       Collection<ImageEntity> cList = Collections.singletonList(ie);
85       when(imageManager.listImages(
86               ArgumentMatchers.eq(vspId),
87               ArgumentMatchers.any(),
88               ArgumentMatchers.eq(componentId))).thenReturn(cList);
89
90       when(imageManager.createImage(
91               ArgumentMatchers.any())).thenReturn(ie);
92
93       CompositionEntityResponse<Image> r = new CompositionEntityResponse<>();
94       r.setId(vspId);
95       when(imageManager.getImage(
96               ArgumentMatchers.eq(vspId),
97               ArgumentMatchers.any(),
98               ArgumentMatchers.eq(componentId),
99               ArgumentMatchers.eq(imageId))).thenReturn(r);
100
101       CompositionEntityType tpe = CompositionEntityType.component;
102       CompositionEntityValidationData data = new CompositionEntityValidationData(tpe, vspId);
103       when(imageManager.updateImage(
104               ArgumentMatchers.any())).thenReturn(data);
105
106
107       QuestionnaireResponse qr = new QuestionnaireResponse();
108       qr.setData("helloworld");
109       when(imageManager.getImageQuestionnaire(
110               ArgumentMatchers.eq(vspId),
111               ArgumentMatchers.any(),
112               ArgumentMatchers.eq(componentId),
113               ArgumentMatchers.eq(imageId))).thenReturn(qr);
114
115
116     } catch (Exception e) {
117       logger.error(e.getMessage(), e);
118     }
119   }
120
121   @Test
122   public void testList() {
123     ImagesImpl ii = new ImagesImpl();
124
125     Response rsp = ii.list(vspId, versionId, componentId, user);
126     Assert.assertEquals("Response should be 200", HttpStatus.SC_OK, rsp.getStatus());
127     Object e = rsp.getEntity();
128     Assert.assertNotNull(e);
129     @SuppressWarnings("unchecked")
130     GenericCollectionWrapper<ImageDto> results = (GenericCollectionWrapper<ImageDto>)e;
131     Assert.assertEquals("result length", 1, results.getListCount());
132   }
133
134
135   @Test
136   public void testCreate() {
137
138     ImageRequestDto dto = new ImageRequestDto();
139     dto.setDescription("hello");
140     dto.setFileName("name");
141
142     ImagesImpl ii = new ImagesImpl();
143     Response rsp = ii.create(dto, vspId, versionId, componentId, user);
144     Assert.assertEquals("Response should be 200", HttpStatus.SC_OK, rsp.getStatus());
145     Object e = rsp.getEntity();
146     Assert.assertNotNull(e);
147     try {
148       ImageCreationDto creationDto = (ImageCreationDto)e;
149       Assert.assertEquals(imageId, creationDto.getId());
150     } catch (ClassCastException ex) {
151       Assert.fail("unexpected class for DTO " + e.getClass().getName());
152     }
153   }
154
155
156   @Test
157   public void testDelete() {
158     ImagesImpl ii = new ImagesImpl();
159     Response rsp = ii.delete(vspId, versionId, componentId, imageId, user);
160     Assert.assertEquals("Response should be 200", HttpStatus.SC_OK, rsp.getStatus());
161     Assert.assertNull(rsp.getEntity());
162   }
163
164
165   @Test
166   public void testGet() {
167     ImagesImpl ii = new ImagesImpl();
168     Response rsp = ii.get(vspId, versionId, componentId, imageId, user);
169     Assert.assertEquals("Response should be 200", HttpStatus.SC_OK, rsp.getStatus());
170     Assert.assertNotNull(rsp.getEntity());
171   }
172
173   @Test
174   public void testUpdate() {
175     ImagesImpl ii = new ImagesImpl();
176     ImageRequestDto dto = new ImageRequestDto();
177     Response rsp = ii.update(dto, vspId, versionId, componentId, imageId, user);
178     Assert.assertEquals("Response should be 200", HttpStatus.SC_OK, rsp.getStatus());
179     Assert.assertNull(rsp.getEntity());
180   }
181
182   @Test
183   public void testGetQuestionaire() {
184     ImagesImpl ii = new ImagesImpl();
185     Response rsp = ii.getQuestionnaire(vspId, versionId, componentId, imageId, user);
186     Assert.assertEquals("Response should be 200", HttpStatus.SC_OK, rsp.getStatus());
187     try {
188       QuestionnaireResponseDto dto = (QuestionnaireResponseDto)rsp.getEntity();
189       Assert.assertEquals("helloworld", dto.getData());
190     }
191     catch (Exception ex) {
192       logger.error("caught exception", ex);
193       Assert.fail(ex.getMessage());
194     }
195   }
196
197
198   @Test
199   public void testUpdateQuestionaire() {
200     ImagesImpl ii = new ImagesImpl();
201     Response rsp = ii.updateQuestionnaire("helloworld", vspId, versionId, componentId, imageId, user);
202     Assert.assertEquals("Response should be 200", HttpStatus.SC_OK, rsp.getStatus());
203     Assert.assertNull(rsp.getEntity());
204   }
205 }