Merge "Added missing authorization header to DataJobService"
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/datajobs/DataJobService.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/datajobs/DataJobService.java
index 6ff79a9..255b384 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/datajobs/DataJobService.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/datajobs/DataJobService.java
@@ -31,20 +31,27 @@
     /**
      * process read data job operations.
      *
-     * @param dataJobId          Unique identifier of the job within the request
+     * @param authorization      the authorization header from the REST request
+     * @param dataJobId          unique identifier of the job within the request
      * @param dataJobMetadata    data job request headers
      * @param dataJobReadRequest read data job request
      */
-    void readDataJob(String dataJobId, DataJobMetadata dataJobMetadata, DataJobReadRequest dataJobReadRequest);
+    void readDataJob(String authorization,
+                     String dataJobId,
+                     DataJobMetadata dataJobMetadata,
+                     DataJobReadRequest dataJobReadRequest);
 
     /**
      * process write data job operations.
      *
-     * @param dataJobId           Unique identifier of the job within the request
+     * @param authorization       the authorization header from the REST request
+     * @param dataJobId           unique identifier of the job within the request
      * @param dataJobMetadata     data job request headers
      * @param dataJobWriteRequest write data job request
      * @return a list of sub-job write responses
      */
-    List<SubJobWriteResponse> writeDataJob(String dataJobId, DataJobMetadata dataJobMetadata,
+    List<SubJobWriteResponse> writeDataJob(String authorization,
+                                           String dataJobId,
+                                           DataJobMetadata dataJobMetadata,
                                            DataJobWriteRequest dataJobWriteRequest);
 }
\ No newline at end of file
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/datajobs/DataJobServiceImpl.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/datajobs/DataJobServiceImpl.java
index 56ed6e3..04c3ad2 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/datajobs/DataJobServiceImpl.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/datajobs/DataJobServiceImpl.java
@@ -42,19 +42,26 @@
     private final WriteRequestExaminer writeRequestExaminer;
 
     @Override
-    public void readDataJob(final String dataJobId, final DataJobMetadata dataJobMetadata,
+    public void readDataJob(final String authorization,
+                            final String dataJobId,
+                            final DataJobMetadata dataJobMetadata,
                             final DataJobReadRequest dataJobReadRequest) {
         log.info("data job id for read operation is: {}", dataJobId);
     }
 
     @Override
-    public List<SubJobWriteResponse> writeDataJob(final String dataJobId, final DataJobMetadata dataJobMetadata,
+    public List<SubJobWriteResponse> writeDataJob(final String authorization,
+                                                  final String dataJobId,
+                                                  final DataJobMetadata dataJobMetadata,
                                                   final DataJobWriteRequest dataJobWriteRequest) {
         log.info("data job id for write operation is: {}", dataJobId);
 
         final Map<ProducerKey, List<DmiWriteOperation>> dmiWriteOperationsPerProducerKey =
                 writeRequestExaminer.splitDmiWriteOperationsFromRequest(dataJobId, dataJobWriteRequest);
 
-        return dmiSubJobClient.sendRequestsToDmi(dataJobId, dataJobMetadata, dmiWriteOperationsPerProducerKey);
+        return dmiSubJobClient.sendRequestsToDmi(authorization,
+                                                 dataJobId,
+                                                 dataJobMetadata,
+                                                 dmiWriteOperationsPerProducerKey);
     }
 }
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/datajobs/DmiSubJobRequestHandler.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/datajobs/DmiSubJobRequestHandler.java
index 1624ce8..c93709c 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/datajobs/DmiSubJobRequestHandler.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/datajobs/DmiSubJobRequestHandler.java
@@ -48,17 +48,19 @@
     private final DmiRestClient dmiRestClient;
     private final DmiProperties dmiProperties;
     private final JsonObjectMapper jsonObjectMapper;
-    static final String NO_AUTH_HEADER = null;
 
     /**
      * Sends sub-job write requests to the DMI Plugin.
      *
-     * @param dataJobId                        data ojb identifier
+     * @param authorization                    the authorization header from the REST request
+     * @param dataJobId                        data job identifier
      * @param dataJobMetadata                  the data job's metadata
-     * @param dmiWriteOperationsPerProducerKey a collection of write requests per producer key.
+     * @param dmiWriteOperationsPerProducerKey a collection of write requests per producer key
      * @return a list of sub-job write responses
      */
-    public List<SubJobWriteResponse> sendRequestsToDmi(final String dataJobId, final DataJobMetadata dataJobMetadata,
+    public List<SubJobWriteResponse> sendRequestsToDmi(final String authorization,
+                                                       final String dataJobId,
+                                                       final DataJobMetadata dataJobMetadata,
                                      final Map<ProducerKey, List<DmiWriteOperation>> dmiWriteOperationsPerProducerKey) {
         final List<SubJobWriteResponse> subJobWriteResponses = new ArrayList<>(dmiWriteOperationsPerProducerKey.size());
         dmiWriteOperationsPerProducerKey.forEach((producerKey, dmi3ggpWriteOperations) -> {
@@ -71,7 +73,7 @@
                     urlTemplateParameters,
                     jsonObjectMapper.asJsonString(subJobWriteRequest),
                     OperationType.CREATE,
-                    NO_AUTH_HEADER);
+                    authorization);
             final SubJobWriteResponse subJobWriteResponse = jsonObjectMapper
                                             .convertToValueType(responseEntity.getBody(), SubJobWriteResponse.class);
             log.debug("Sub job write response: {}", subJobWriteResponse);
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/datajobs/DataJobServiceImplSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/datajobs/DataJobServiceImplSpec.groovy
index 94c490a..4b536b9 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/datajobs/DataJobServiceImplSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/datajobs/DataJobServiceImplSpec.groovy
@@ -40,6 +40,7 @@
     def objectUnderTest = new DataJobServiceImpl(mockDmiSubJobRequestHandler, mockWriteRequestExaminer)
 
     def myDataJobMetadata = new DataJobMetadata('', '', '')
+    def authorization = 'my authorization header'
 
     def logger = Spy(ListAppender<ILoggingEvent>)
 
@@ -54,7 +55,7 @@
     def 'Read data job request.'() {
         when: 'read data job request is processed'
             def readOperation = new ReadOperation('', '', '', [], [], '', '', 1)
-            objectUnderTest.readDataJob('my-job-id', myDataJobMetadata, new DataJobReadRequest([readOperation]))
+            objectUnderTest.readDataJob(authorization, 'my-job-id', myDataJobMetadata, new DataJobReadRequest([readOperation]))
         then: 'the data job id is correctly logged'
             def loggingEvent = logger.list[0]
             assert loggingEvent.level == Level.INFO
@@ -67,11 +68,11 @@
         and: 'a map of producer key and dmi 3gpp write operation'
             def dmiWriteOperationsPerProducerKey = [:]
         when: 'write data job request is processed'
-            objectUnderTest.writeDataJob('my-job-id', myDataJobMetadata, dataJobWriteRequest)
+            objectUnderTest.writeDataJob(authorization, 'my-job-id', myDataJobMetadata, dataJobWriteRequest)
         then: 'the examiner service is called and a map is returned'
             1 * mockWriteRequestExaminer.splitDmiWriteOperationsFromRequest('my-job-id', dataJobWriteRequest) >> dmiWriteOperationsPerProducerKey
         and: 'the dmi request handler is called with the result from the examiner'
-            1 * mockDmiSubJobRequestHandler.sendRequestsToDmi('my-job-id', myDataJobMetadata, dmiWriteOperationsPerProducerKey)
+            1 * mockDmiSubJobRequestHandler.sendRequestsToDmi(authorization, 'my-job-id', myDataJobMetadata, dmiWriteOperationsPerProducerKey)
     }
 
     def setupLogger() {
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/datajobs/DmiSubJobRequestHandlerSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/datajobs/DmiSubJobRequestHandlerSpec.groovy
index 7005cc6..b3dd02d 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/datajobs/DmiSubJobRequestHandlerSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/datajobs/DmiSubJobRequestHandlerSpec.groovy
@@ -19,7 +19,6 @@
     def mockDmiRestClient = Mock(DmiRestClient)
     def jsonObjectMapper = new JsonObjectMapper(new ObjectMapper())
     def mockDmiProperties = Mock(DmiProperties)
-    def static NO_AUTH = null
     def objectUnderTest = new DmiSubJobRequestHandler(mockDmiRestClient, mockDmiProperties, jsonObjectMapper)
 
     def 'Send a sub-job request to the DMI Plugin.'() {
@@ -28,12 +27,13 @@
             def dataJobMetadata = new DataJobMetadata('d1', 't1', 't2')
             def dmiWriteOperation = new DmiWriteOperation('p', 'operation', 'tag', null, 'o1', [:])
             def dmiWriteOperationsPerProducerKey = [new ProducerKey('dmi1', 'prod1'): [dmiWriteOperation]]
+            def authorization = 'my authorization header'
         and: 'the dmi rest client will return a response (for the correct parameters)'
             def responseEntity = new ResponseEntity<>(new SubJobWriteResponse('my-sub-job-id', 'dmi1', 'prod1'), HttpStatus.OK)
             def expectedJson = '{"dataAcceptType":"t1","dataContentType":"t2","dataProducerId":"prod1","data":[{"path":"p","op":"operation","moduleSetTag":"tag","value":null,"operationId":"o1","privateProperties":{}}]}'
-            mockDmiRestClient.synchronousPostOperationWithJsonData(RequiredDmiService.DATA, _, expectedJson, OperationType.CREATE, NO_AUTH) >> responseEntity
+            mockDmiRestClient.synchronousPostOperationWithJsonData(RequiredDmiService.DATA, _, expectedJson, OperationType.CREATE, authorization) >> responseEntity
         when: 'sending request to DMI invoked'
-            objectUnderTest.sendRequestsToDmi(dataJobId, dataJobMetadata, dmiWriteOperationsPerProducerKey)
+            objectUnderTest.sendRequestsToDmi(authorization, dataJobId, dataJobMetadata, dmiWriteOperationsPerProducerKey)
         then: 'the result contains the expected sub-job id'
             assert responseEntity.body.subJobId == 'my-sub-job-id'
     }
diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/functional/ncmp/WriteSubJobSpec.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/functional/ncmp/WriteSubJobSpec.groovy
index 0999bda..b73634f 100644
--- a/integration-test/src/test/groovy/org/onap/cps/integration/functional/ncmp/WriteSubJobSpec.groovy
+++ b/integration-test/src/test/groovy/org/onap/cps/integration/functional/ncmp/WriteSubJobSpec.groovy
@@ -50,11 +50,12 @@
 
     def 'Create a sub-job write request.'() {
         given: 'the required input data for the write job'
+            def authorization = 'my authorization header'
             def dataJobWriteRequest = new DataJobWriteRequest([new WriteOperation('p1', '', '', null), new WriteOperation('p2', '', '', null), new WriteOperation('p3', '', '', null)])
             def myDataJobMetadata = new DataJobMetadata('', '', '')
             def dataJobId = 'my-data-job-id'
         when: 'sending a write job to NCMP with 2 sub-jobs for DMI 1 and 1 sub-job for DMI 2'
-            def response = dataJobService.writeDataJob(dataJobId, myDataJobMetadata, dataJobWriteRequest)
+            def response = dataJobService.writeDataJob(authorization, dataJobId, myDataJobMetadata, dataJobWriteRequest)
         then: 'each DMI received the expected sub-jobs and the response has the expected values'
             assert response.size() == 2
             assert response[0].class == SubJobWriteResponse.class