Merge from ecomp 718fd196 - Integration Tests
[vid.git] / vid-automation / src / main / java / org / onap / simulator / presetGenerator / presets / mso / PresetMSOOrchestrationRequestGet.java
1 package org.onap.simulator.presetGenerator.presets.mso;
2
3 import com.google.common.collect.ImmutableMap;
4 import org.apache.commons.lang3.StringUtils;
5 import org.apache.logging.log4j.LogManager;
6 import org.apache.logging.log4j.Logger;
7 import org.onap.simulator.presetGenerator.presets.BasePresets.BaseMSOPreset;
8 import org.springframework.http.HttpMethod;
9 import vid.automation.test.infra.Features;
10
11 import java.time.Instant;
12 import java.time.ZoneOffset;
13 import java.time.ZonedDateTime;
14 import java.time.format.DateTimeFormatter;
15 import java.time.temporal.ChronoUnit;
16 import java.util.Collections;
17 import java.util.List;
18 import java.util.Map;
19
20 import static java.util.Collections.singletonList;
21
22 /**
23  * Created by itzikliderman on 13/12/2017.
24  */
25 public class PresetMSOOrchestrationRequestGet extends BaseMSOPreset {
26     private static final Logger logger = LogManager.getLogger(PresetMSOOrchestrationRequestGet.class);
27
28     public static final String COMPLETE = "COMPLETE";
29     public static final String DEFAULT_REQUEST_ID = "c0011670-0e1a-4b74-945d-8bf5aede1d9c";
30     public static final String DEFAULT_SERVICE_INSTANCE_ID = BaseMSOPreset.DEFAULT_INSTANCE_ID;
31
32     private final String requestId;
33     private String statusMessage;
34     private String requestState;
35     private int startedHoursAgo = 1;
36     private boolean isDetailed = true;
37
38
39     public PresetMSOOrchestrationRequestGet() {
40         requestState = COMPLETE;
41         this.requestId = DEFAULT_REQUEST_ID;
42     }
43
44     public PresetMSOOrchestrationRequestGet(String requestState) {
45         this.requestState = requestState;
46         this.requestId = DEFAULT_REQUEST_ID;
47     }
48
49     /**
50      * @param requestState
51      * @param isDetailed   - is expect to query param format=detail. Angular1 flows dont' expect it
52      */
53     public PresetMSOOrchestrationRequestGet(String requestState, boolean isDetailed) {
54         this.requestState = requestState;
55         this.requestId = DEFAULT_REQUEST_ID;
56         this.isDetailed = isDetailed;
57     }
58
59     public PresetMSOOrchestrationRequestGet(String requestState, String overrideRequestId) {
60         this.requestState = requestState;
61         this.requestId = overrideRequestId;
62     }
63
64     public PresetMSOOrchestrationRequestGet(String requestState, String overrideRequestId, String statusMessage) {
65         this.requestState = requestState;
66         this.requestId = overrideRequestId;
67         this.statusMessage = statusMessage;
68     }
69
70     /**
71      * @param isDetailed - is expect to query param format=detail. Angular1 flows dont' expect it
72      */
73     public PresetMSOOrchestrationRequestGet(String requestState, String overrideRequestId, String statusMessage, boolean isDetailed) {
74         this.requestState = requestState;
75         this.requestId = overrideRequestId;
76         this.statusMessage = statusMessage;
77         this.isDetailed = isDetailed;
78     }
79
80     public PresetMSOOrchestrationRequestGet(String requestState, String overrideRequestId, String statusMessage, int startedHoursAgo) {
81         this.requestState = requestState;
82         this.requestId = overrideRequestId;
83         this.statusMessage = statusMessage;
84         this.startedHoursAgo = startedHoursAgo;
85     }
86
87     public PresetMSOOrchestrationRequestGet(String requestState, int startedHoursAgo) {
88         this.requestState = requestState;
89         this.requestId = DEFAULT_REQUEST_ID;
90         this.startedHoursAgo = startedHoursAgo;
91     }
92
93     @Override
94     public HttpMethod getReqMethod() {
95         return HttpMethod.GET;
96     }
97
98     public String getReqPath() {
99         return getRootPath() + "/orchestrationRequests/v./" + requestId;
100     }
101
102     @Override
103     public Map<String, List> getQueryParams() {
104         return (isDetailed && Features.FLAG_1908_RESUME_MACRO_SERVICE.isActive()) ?
105                 ImmutableMap.of("format", singletonList("detail")) :
106                 Collections.emptyMap();
107     }
108
109     @Override
110     public Object getResponseBody() {
111          String body = "{" +
112                 "  \"request\": {" +
113                 "    \"requestId\": \"" + requestId + "\"," +
114                 "    \"startTime\": \"" + getTimeHoursAgo(startedHoursAgo) + "\"," +
115                 "    \"requestScope\": \"service\"," +
116                 "    \"requestType\": \"createInstance\"," +
117                 "    \"instanceReferences\": {" +
118                 "      \"serviceInstanceId\": \"" + DEFAULT_SERVICE_INSTANCE_ID + "\"," +
119                 "      \"serviceInstanceName\": \"asdfasdf234234asdf\"," +
120                 "      \"requestorId\": \"il883e\"" +
121                 "    }," +
122                 "    \"requestStatus\": {" +
123                 "      \"requestState\": \"" + requestState + "\"," +
124                 "      \"statusMessage\": \"" + getStatusMessage() + "\"," +
125                 "      \"percentProgress\": 100," +
126                 "      \"timestamp\": \"" + getTimeNow() + "\"" +
127                 "    }" +
128                 "  }" +
129                 "}";
130         logger.info(body);
131         return body;
132     }
133
134     private String getStatusMessage() {
135         return StringUtils.defaultIfEmpty(statusMessage,
136                 "COMPLETE".equals(requestState) ?
137                         "Service Instance was created successfully." :
138                         ("Service Instance was " + requestState.toLowerCase() + " successfully."));
139     }
140
141     private String getTimeNow() {
142         return getTimeHoursAgo(0);
143     }
144
145     private String getTimeHoursAgo(int delta) {
146         Instant instant = Instant.now();
147         Instant instantMinus = instant.minus(delta, ChronoUnit.HOURS);
148         ZonedDateTime dateDayAgo = ZonedDateTime.ofInstant(instantMinus, ZoneOffset.UTC);
149         DateTimeFormatter formatter = DateTimeFormatter.RFC_1123_DATE_TIME;
150         return formatter.format(dateDayAgo);
151     }
152 }