1 package com.oransc.rappmanager.service;
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4 import static org.mockito.ArgumentMatchers.any;
5 import static org.mockito.Mockito.when;
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;
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;
23 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
25 public class RappServiceTest {
28 RappService rappService;
31 AcmDeployer acmDeployer;
34 SmeDeployer smeDeployer;
37 RappInstanceStateMachine rappInstanceStateMachine;
39 String validCsarFileLocation = "src/test/resources/";
41 private final String validRappFile = "valid-rapp-package.csar";
43 private final String invalidRappFile = "invalid-rapp-package.csar";
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());
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());
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());
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());
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());
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());
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());
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());
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());
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());
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());
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());