Add Rapp Instances
[nonrtric/plt/rappmanager.git] / rapp-manager-application / src / test / java / com / oransc / rappmanager / service / RappServiceTest.java
1 package com.oransc.rappmanager.service;
2
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4 import static org.mockito.ArgumentMatchers.any;
5 import static org.mockito.Mockito.when;
6
7 import com.oransc.rappmanager.acm.service.AcmDeployer;
8 import com.oransc.rappmanager.models.rapp.Rapp;
9 import com.oransc.rappmanager.models.rappinstance.RappInstance;
10 import com.oransc.rappmanager.models.rappinstance.RappInstanceState;
11 import com.oransc.rappmanager.models.rapp.RappState;
12 import com.oransc.rappmanager.models.statemachine.RappInstanceStateMachine;
13 import com.oransc.rappmanager.sme.service.SmeDeployer;
14 import java.util.Map;
15 import java.util.UUID;
16 import org.junit.jupiter.api.Test;
17 import org.springframework.beans.factory.annotation.Autowired;
18 import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
19 import org.springframework.boot.test.context.SpringBootTest;
20 import org.springframework.boot.test.mock.mockito.MockBean;
21 import org.springframework.http.HttpStatus;
22
23 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
24 @AutoConfigureMockMvc
25 public class RappServiceTest {
26
27     @Autowired
28     RappService rappService;
29
30     @MockBean
31     AcmDeployer acmDeployer;
32
33     @MockBean
34     SmeDeployer smeDeployer;
35
36     @Autowired
37     RappInstanceStateMachine rappInstanceStateMachine;
38
39     String validCsarFileLocation = "src/test/resources/";
40
41     private final String validRappFile = "valid-rapp-package.csar";
42
43     private final String invalidRappFile = "invalid-rapp-package.csar";
44
45
46     @Test
47     void testPrimeRapp() {
48         Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile)
49                             .packageLocation(validCsarFileLocation).state(RappState.COMMISSIONED).build();
50         when(acmDeployer.primeRapp(any())).thenReturn(true);
51         assertEquals(HttpStatus.OK, rappService.primeRapp(rapp).getStatusCode());
52     }
53
54     @Test
55     void testPrimeRappInvalidState() {
56         Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile)
57                             .packageLocation(validCsarFileLocation).state(RappState.PRIMING).build();
58         assertEquals(HttpStatus.BAD_REQUEST, rappService.primeRapp(rapp).getStatusCode());
59     }
60
61     @Test
62     void testPrimeRappAcmFailure() {
63         Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile)
64                             .packageLocation(validCsarFileLocation).state(RappState.COMMISSIONED).build();
65         when(acmDeployer.primeRapp(any())).thenReturn(false);
66         assertEquals(HttpStatus.OK, rappService.primeRapp(rapp).getStatusCode());
67     }
68
69     @Test
70     void testDeprimeRapp() {
71         Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile)
72                             .packageLocation(validCsarFileLocation).state(RappState.PRIMED).build();
73         when(acmDeployer.deprimeRapp(any())).thenReturn(true);
74         assertEquals(HttpStatus.OK, rappService.deprimeRapp(rapp).getStatusCode());
75     }
76
77     @Test
78     void testDeprimeRappFailure() {
79         Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile)
80                             .packageLocation(validCsarFileLocation).state(RappState.PRIMED).build();
81         when(acmDeployer.deprimeRapp(any())).thenReturn(false);
82         assertEquals(HttpStatus.OK, rappService.deprimeRapp(rapp).getStatusCode());
83     }
84
85     @Test
86     void testDeprimeRappInvalidState() {
87         Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile)
88                             .packageLocation(validCsarFileLocation).state(RappState.COMMISSIONED).build();
89         assertEquals(HttpStatus.BAD_REQUEST, rappService.deprimeRapp(rapp).getStatusCode());
90     }
91
92     @Test
93     void testDeprimeRappActiveInstances() {
94         Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile)
95                             .packageLocation(validCsarFileLocation).state(RappState.COMMISSIONED)
96                             .rappInstances(Map.of(UUID.randomUUID(), new RappInstance())).build();
97         assertEquals(HttpStatus.BAD_REQUEST, rappService.deprimeRapp(rapp).getStatusCode());
98     }
99
100     @Test
101     void testDeployRappInstance() {
102         Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile)
103                             .packageLocation(validCsarFileLocation).state(RappState.PRIMED).build();
104         RappInstance rappInstance = new RappInstance();
105         rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
106         when(acmDeployer.deployRappInstance(any(), any())).thenReturn(true);
107         when(smeDeployer.deployRappInstance(any(), any())).thenReturn(true);
108         assertEquals(HttpStatus.ACCEPTED, rappService.deployRappInstance(rapp, rappInstance).getStatusCode());
109     }
110
111     @Test
112     void testDeployRappInstanceFailure() {
113         Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile)
114                             .packageLocation(validCsarFileLocation).state(RappState.PRIMED).build();
115         RappInstance rappInstance = new RappInstance();
116         rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
117         when(acmDeployer.deployRappInstance(any(), any())).thenReturn(true);
118         when(smeDeployer.deployRappInstance(any(), any())).thenReturn(false);
119         assertEquals(HttpStatus.BAD_GATEWAY, rappService.deployRappInstance(rapp, rappInstance).getStatusCode());
120     }
121
122     @Test
123     void testUndeployRappInstance() {
124         Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile)
125                             .packageLocation(validCsarFileLocation).state(RappState.PRIMED).build();
126         RappInstance rappInstance = new RappInstance();
127         rappInstance.setState(RappInstanceState.DEPLOYED);
128         rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
129         when(acmDeployer.undeployRappInstance(any(), any())).thenReturn(true);
130         when(smeDeployer.undeployRappInstance(any(), any())).thenReturn(true);
131         assertEquals(HttpStatus.ACCEPTED, rappService.undeployRappInstance(rapp, rappInstance).getStatusCode());
132     }
133
134     @Test
135     void testUndeployRappInstanceFailure() {
136         Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile)
137                             .packageLocation(validCsarFileLocation).state(RappState.PRIMED).build();
138         RappInstance rappInstance = new RappInstance();
139         rappInstance.setState(RappInstanceState.DEPLOYED);
140         rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
141         when(acmDeployer.undeployRappInstance(any(), any())).thenReturn(true);
142         when(smeDeployer.undeployRappInstance(any(), any())).thenReturn(false);
143         assertEquals(HttpStatus.BAD_GATEWAY, rappService.undeployRappInstance(rapp, rappInstance).getStatusCode());
144     }
145
146     @Test
147     void testUndeployRappInstanceInvalidStateFailure() {
148         Rapp rapp = Rapp.builder().rappId(UUID.randomUUID()).name("").packageName(validRappFile)
149                             .packageLocation(validCsarFileLocation).state(RappState.PRIMED).build();
150         RappInstance rappInstance = new RappInstance();
151         rappInstance.setState(RappInstanceState.DEPLOYING);
152         rappInstanceStateMachine.onboardRappInstance(rappInstance.getRappInstanceId());
153         when(acmDeployer.undeployRappInstance(any(), any())).thenReturn(true);
154         when(smeDeployer.undeployRappInstance(any(), any())).thenReturn(false);
155         assertEquals(HttpStatus.BAD_REQUEST, rappService.undeployRappInstance(rapp, rappInstance).getStatusCode());
156     }
157 }