From 361511c01e4e51dddb6e3bfe11b6728a76dbbfd0 Mon Sep 17 00:00:00 2001
From: Piotr Borelowski 
Date: Tue, 11 Feb 2020 10:00:02 +0100
Subject: [PATCH] Fixed, simplified and tested AuthorizationHeadersProvider
 (+small changes in poms)
Ve-Vnfm (SOL002) Adapter project
Issue-ID: SO-2574
Signed-off-by: Piotr Borelowski 
Change-Id: I480ac1d5b46aae5a9d4db8249d98c186b59fd12f
---
 adapters/mso-ve-vnfm-adapter/pom.xml               |  11 +
 .../provider/AuthorizationHeadersProvider.java     |  20 +-
 .../adapters/vevnfm/service/SubscriberService.java |   2 +-
 .../provider/AuthorizationHeadersProviderTest.java |  47 +
 packages/docker/pom.xml                            | 960 +++++++++++----------
 5 files changed, 557 insertions(+), 483 deletions(-)
 create mode 100644 adapters/mso-ve-vnfm-adapter/src/test/java/org/onap/so/adapters/vevnfm/provider/AuthorizationHeadersProviderTest.java
diff --git a/adapters/mso-ve-vnfm-adapter/pom.xml b/adapters/mso-ve-vnfm-adapter/pom.xml
index 3518445b45..4472956eb7 100644
--- a/adapters/mso-ve-vnfm-adapter/pom.xml
+++ b/adapters/mso-ve-vnfm-adapter/pom.xml
@@ -59,10 +59,21 @@
   
 
   
+    ${project.artifactId}-${project.version}
     
       
         org.springframework.boot
         spring-boot-maven-plugin
+        
+          org.onap.so.adapters.vevnfm.Application
+        
+        
+          
+            
+              repackage
+            
+          
+        
       
     
   
diff --git a/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/provider/AuthorizationHeadersProvider.java b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/provider/AuthorizationHeadersProvider.java
index eca5240cb5..251e0c426b 100644
--- a/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/provider/AuthorizationHeadersProvider.java
+++ b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/provider/AuthorizationHeadersProvider.java
@@ -20,29 +20,15 @@
 
 package org.onap.so.adapters.vevnfm.provider;
 
-import java.util.List;
-import org.apache.logging.log4j.util.Strings;
 import org.onap.so.configuration.rest.BasicHttpHeadersProvider;
-import org.springframework.http.HttpHeaders;
 
 public class AuthorizationHeadersProvider extends BasicHttpHeadersProvider {
 
-    private List previousAuthorization;
-
     public void addAuthorization(final String authorization) {
-        final HttpHeaders headers = getHttpHeaders();
-        previousAuthorization = headers.get(AUTHORIZATION_HEADER);
-        headers.set(AUTHORIZATION_HEADER, authorization);
-    }
-
-    public void resetPrevious() {
-        if (!isPreviousAuthorizationBlank()) {
-            getHttpHeaders().addAll(AUTHORIZATION_HEADER, previousAuthorization);
-        }
+        getHttpHeaders().set(AUTHORIZATION_HEADER, authorization);
     }
 
-    private boolean isPreviousAuthorizationBlank() {
-        return previousAuthorization == null || previousAuthorization.isEmpty()
-                || Strings.isBlank(previousAuthorization.get(0));
+    public void removeAuthorization() {
+        getHttpHeaders().remove(AUTHORIZATION_HEADER);
     }
 }
diff --git a/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/SubscriberService.java b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/SubscriberService.java
index 0e77ce4073..eefd9ba93b 100644
--- a/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/SubscriberService.java
+++ b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/SubscriberService.java
@@ -68,7 +68,7 @@ public class SubscriberService {
             final LccnSubscriptionRequest request = createRequest();
             return sender.send(info, request);
         } finally {
-            headersProvider.resetPrevious();
+            headersProvider.removeAuthorization();
         }
     }
 
diff --git a/adapters/mso-ve-vnfm-adapter/src/test/java/org/onap/so/adapters/vevnfm/provider/AuthorizationHeadersProviderTest.java b/adapters/mso-ve-vnfm-adapter/src/test/java/org/onap/so/adapters/vevnfm/provider/AuthorizationHeadersProviderTest.java
new file mode 100644
index 0000000000..64503ddfc2
--- /dev/null
+++ b/adapters/mso-ve-vnfm-adapter/src/test/java/org/onap/so/adapters/vevnfm/provider/AuthorizationHeadersProviderTest.java
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SO
+ * ================================================================================
+ * Copyright (C) 2020 Samsung. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.adapters.vevnfm.provider;
+
+import static org.junit.Assert.*;
+import static org.onap.so.configuration.rest.BasicHttpHeadersProvider.AUTHORIZATION_HEADER;
+import org.junit.Test;
+import org.springframework.http.HttpHeaders;
+
+public class AuthorizationHeadersProviderTest {
+
+    private static final String AUTHORIZATION_EXAMPLE = "authorization";
+
+    private final AuthorizationHeadersProvider provider = new AuthorizationHeadersProvider();
+
+    @Test
+    public void testSuccessValidAuthorizationAndRemoval() {
+        final HttpHeaders headers = provider.getHttpHeaders();
+        final int size = headers.size();
+
+        provider.addAuthorization(AUTHORIZATION_EXAMPLE);
+        assertEquals(size + 1, headers.size());
+        assertTrue(headers.containsKey(AUTHORIZATION_HEADER));
+
+        provider.removeAuthorization();
+        assertEquals(size, headers.size());
+        assertFalse(headers.containsKey(AUTHORIZATION_HEADER));
+    }
+}
diff --git a/packages/docker/pom.xml b/packages/docker/pom.xml
index f29a4451f6..44d94dfdbf 100644
--- a/packages/docker/pom.xml
+++ b/packages/docker/pom.xml
@@ -1,47 +1,47 @@
 
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
-	4.0.0
+  4.0.0
 
-	
-		org.onap.so
-		packages
-		1.4.0-SNAPSHOT
-	
+  
+    org.onap.so
+    packages
+    1.4.0-SNAPSHOT
+  
 
-	pom
-	docker
-	Docker Images
-	Docker Images
+  pom
+  docker
+  Docker Images
+  Docker Images
 
-	
-		UTF-8
-		UTF-8
-		${project.version}
-		false
-		false
-		false
-		nexus3.onap.org:10001
-		nexus3.onap.org:10003
-		onap/so
-		deploy
-	
+  
+    UTF-8
+    UTF-8
+    ${project.version}
+    false
+    false
+    false
+    nexus3.onap.org:10001
+    nexus3.onap.org:10003
+    onap/so
+    deploy
+  
 
-	
-		${project.artifactId}-${project.version}
-		
-			
-				org.codehaus.groovy.maven
-				gmaven-plugin
-				1.0
-				
-					
-						validate
-						
-							execute
-						
-						
-							
+  
+    ${project.artifactId}-${project.version}
+    
+      
+        org.codehaus.groovy.maven
+        gmaven-plugin
+        1.0
+        
+          
+            validate
+            
+              execute
+            
+            
+              
 								println 'Project version: ' + project.properties['so.project.version'];
 								def versionArray;
 								if ( project.properties['so.project.version'] != null ) {
@@ -56,439 +56,469 @@
 
 								println 'New tag for docker: ' + project.properties['project.docker.latesttag.version'];
 							
-						
-					
-				
-			
+            
+          
+        
+      
 
-			
-				io.fabric8
-				docker-maven-plugin
-				0.31.0
+      
+        io.fabric8
+        docker-maven-plugin
+        0.31.0
 
-				
-					true
-					1.23
-					${docker.pull.registry}
-					${docker.push.registry}
+        
+          true
+          1.23
+          ${docker.pull.registry}
+          ${docker.push.registry}
 
-					
-						
-							${docker.image.prefix}/base-image:1.0
-							
-								try
-								docker-files
-								Dockerfile.so-base-image
-							
-						
-						
-							${docker.image.prefix}/vnfm-adapter
-							
-								try
-								docker-files
-								Dockerfile.so-app
-								
-									${project.version}
-									${project.version}-${maven.build.timestamp}
-									${project.docker.latesttag.version}
-								
-								
-									
-										
-											
-												
-													org.onap.so.adapters:mso-vnfm-etsi-adapter
-												
-												app.jar
-											
-										
-									
-								
-							
-						
-						
-							${docker.image.prefix}/catalog-db-adapter
-							
-								try
-								docker-files
-								Dockerfile.so-app
-								
-									${project.version}
-									${project.version}-${maven.build.timestamp}
-									${project.docker.latesttag.version}
-								
-								
-									
-										
-											
-												
-													org.onap.so.adapters:mso-catalog-db-adapter
-												
-												app.jar
-											
-										
-									
-								
-							
-						
-						
-							${docker.image.prefix}/request-db-adapter
-							
-								try
-								docker-files
-								Dockerfile.so-app
-								
-									${project.version}
-									${project.version}-${maven.build.timestamp}
-									${project.docker.latesttag.version}
-								
-								
-									
-										
-											
-												
-													org.onap.so.adapters:mso-requests-db-adapter
-												
-												app.jar
-											
-										
-									
-								
-							
-						
-						
-							${docker.image.prefix}/sdnc-adapter
-							
-								try
-								docker-files
-								Dockerfile.so-app
-								
-									${project.version}
-									${project.version}-${maven.build.timestamp}
-									${project.docker.latesttag.version}
-								
-								
-									
-										
-											
-												
-													org.onap.so:mso-sdnc-adapter
-												
-												app.jar
-											
-										
-									
-								
-							
-						
-						
-							${docker.image.prefix}/openstack-adapter
-							
-								try
-								docker-files
-								Dockerfile.so-app
-								
-									${project.version}
-									${project.version}-${maven.build.timestamp}
-									${project.docker.latesttag.version}
-								
-								
-									
-										
-											
-												
-													org.onap.so:mso-openstack-adapters
-												
-												app.jar
-											
-										
-									
-								
-							
-						
-						
-							${docker.image.prefix}/vfc-adapter
-							
-								try
-								docker-files
-								Dockerfile.so-app
-								
-									${project.version}
-									${project.version}-${maven.build.timestamp}
-									${project.docker.latesttag.version}
-								
-								
-									
-										
-											
-												
-													org.onap.so.adapters:mso-vfc-adapter
-												
-												app.jar
-											
-										
-									
-								
-							
-						
-												
-							${docker.image.prefix}/so-appc-orchestrator
-							
-								try
-								docker-files
-								Dockerfile.so-app
-								
-									${project.version}
-									${project.version}-${maven.build.timestamp}
-									${project.docker.latesttag.version}
-								
-								
-									
-										
-											
-												
-													org.onap.so.adapters:so-appc-orchestrator
-												
-												app.jar
-											
-										
-									
-								
-							
-						
-						
-							${docker.image.prefix}/sdc-controller
-							
-								try
-								docker-files
-								Dockerfile.so-app
-								
-									${project.version}
-									${project.version}-${maven.build.timestamp}
-									${project.docker.latesttag.version}
-								
-								
-									
-										
-											
-												
-													org.onap.so:asdc-controller
-												
-												app.jar
-											
-										
-									
-								
-							
-						
-						
-							${docker.image.prefix}/bpmn-infra
-							
-								try
-								docker-files
-								Dockerfile.so-app
-								
-									${project.version}
-									${project.version}-${maven.build.timestamp}
-									${project.docker.latesttag.version}
-								
-								
-									
-										
-											
-												
-													org.onap.so:mso-infrastructure-bpmn
-												
-												app.jar
-											
-										
-									
-								
-							
-						
-						
-							${docker.image.prefix}/api-handler-infra
-							
-								try
-								docker-files
-								Dockerfile.so-app
-								
-									${project.version}
-									${project.version}-${maven.build.timestamp}
-									${project.docker.latesttag.version}
-								
-								
-									
-										
-											
-												
-													org.onap.so:mso-api-handler-infra
-												
-												app.jar
-											
-										
-									
-								
-							
-						
-						
-							${docker.image.prefix}/so-monitoring
-							
-								try
-								docker-files
-								Dockerfile.so-app
-								
-									${project.version}
-									${project.version}-${maven.build.timestamp}
-									${project.docker.latesttag.version}
-								
-								
-									
-										
-											
-												
-													org.onap.so.monitoring:so-monitoring-service
-												
-												app.jar
-											
-										
-									
-								
-							
-						
-						
-							${docker.image.prefix}/so-simulator
-							
-								try
-								docker-files
-								Dockerfile.so-app
-								
-									${project.version}
-									${project.version}-${maven.build.timestamp}
-									${project.docker.latesttag.version}
-								
-								
-									
-										
-											
-												
-													org.onap.so:so-simulator
-												
-												app.jar
-											
-										
-									
-								
-							
-						
-					
-				
+          
+            
+              ${docker.image.prefix}/base-image:1.0
+              
+                try
+                docker-files
+                Dockerfile.so-base-image
+              
+            
+            
+              ${docker.image.prefix}/vnfm-adapter
+              
+                try
+                docker-files
+                Dockerfile.so-app
+                
+                  ${project.version}
+                  ${project.version}-${maven.build.timestamp}
+                  ${project.docker.latesttag.version}
+                
+                
+                  
+                    
+                      
+                        
+                          org.onap.so.adapters:mso-vnfm-etsi-adapter
+                        
+                        app.jar
+                      
+                    
+                  
+                
+              
+            
+            
+              ${docker.image.prefix}/ve-vnfm-adapter
+              
+                try
+                docker-files
+                Dockerfile.so-app
+                
+                  ${project.version}
+                  ${project.version}-${maven.build.timestamp}
+                  ${project.docker.latesttag.version}
+                
+                
+                  
+                    
+                      
+                        
+                          org.onap.so.adapters:mso-ve-vnfm-adapter
+                        
+                        app.jar
+                      
+                    
+                  
+                
+              
+            
+            
+              ${docker.image.prefix}/catalog-db-adapter
+              
+                try
+                docker-files
+                Dockerfile.so-app
+                
+                  ${project.version}
+                  ${project.version}-${maven.build.timestamp}
+                  ${project.docker.latesttag.version}
+                
+                
+                  
+                    
+                      
+                        
+                          org.onap.so.adapters:mso-catalog-db-adapter
+                        
+                        app.jar
+                      
+                    
+                  
+                
+              
+            
+            
+              ${docker.image.prefix}/request-db-adapter
+              
+                try
+                docker-files
+                Dockerfile.so-app
+                
+                  ${project.version}
+                  ${project.version}-${maven.build.timestamp}
+                  ${project.docker.latesttag.version}
+                
+                
+                  
+                    
+                      
+                        
+                          org.onap.so.adapters:mso-requests-db-adapter
+                        
+                        app.jar
+                      
+                    
+                  
+                
+              
+            
+            
+              ${docker.image.prefix}/sdnc-adapter
+              
+                try
+                docker-files
+                Dockerfile.so-app
+                
+                  ${project.version}
+                  ${project.version}-${maven.build.timestamp}
+                  ${project.docker.latesttag.version}
+                
+                
+                  
+                    
+                      
+                        
+                          org.onap.so:mso-sdnc-adapter
+                        
+                        app.jar
+                      
+                    
+                  
+                
+              
+            
+            
+              ${docker.image.prefix}/openstack-adapter
+              
+                try
+                docker-files
+                Dockerfile.so-app
+                
+                  ${project.version}
+                  ${project.version}-${maven.build.timestamp}
+                  ${project.docker.latesttag.version}
+                
+                
+                  
+                    
+                      
+                        
+                          org.onap.so:mso-openstack-adapters
+                        
+                        app.jar
+                      
+                    
+                  
+                
+              
+            
+            
+              ${docker.image.prefix}/vfc-adapter
+              
+                try
+                docker-files
+                Dockerfile.so-app
+                
+                  ${project.version}
+                  ${project.version}-${maven.build.timestamp}
+                  ${project.docker.latesttag.version}
+                
+                
+                  
+                    
+                      
+                        
+                          org.onap.so.adapters:mso-vfc-adapter
+                        
+                        app.jar
+                      
+                    
+                  
+                
+              
+            
+            
+              ${docker.image.prefix}/so-appc-orchestrator
+              
+                try
+                docker-files
+                Dockerfile.so-app
+                
+                  ${project.version}
+                  ${project.version}-${maven.build.timestamp}
+                  ${project.docker.latesttag.version}
+                
+                
+                  
+                    
+                      
+                        
+                          org.onap.so.adapters:so-appc-orchestrator
+                        
+                        app.jar
+                      
+                    
+                  
+                
+              
+            
+            
+              ${docker.image.prefix}/sdc-controller
+              
+                try
+                docker-files
+                Dockerfile.so-app
+                
+                  ${project.version}
+                  ${project.version}-${maven.build.timestamp}
+                  ${project.docker.latesttag.version}
+                
+                
+                  
+                    
+                      
+                        
+                          org.onap.so:asdc-controller
+                        
+                        app.jar
+                      
+                    
+                  
+                
+              
+            
+            
+              ${docker.image.prefix}/bpmn-infra
+              
+                try
+                docker-files
+                Dockerfile.so-app
+                
+                  ${project.version}
+                  ${project.version}-${maven.build.timestamp}
+                  ${project.docker.latesttag.version}
+                
+                
+                  
+                    
+                      
+                        
+                          org.onap.so:mso-infrastructure-bpmn
+                        
+                        app.jar
+                      
+                    
+                  
+                
+              
+            
+            
+              ${docker.image.prefix}/api-handler-infra
+              
+                try
+                docker-files
+                Dockerfile.so-app
+                
+                  ${project.version}
+                  ${project.version}-${maven.build.timestamp}
+                  ${project.docker.latesttag.version}
+                
+                
+                  
+                    
+                      
+                        
+                          org.onap.so:mso-api-handler-infra
+                        
+                        app.jar
+                      
+                    
+                  
+                
+              
+            
+            
+              ${docker.image.prefix}/so-monitoring
+              
+                try
+                docker-files
+                Dockerfile.so-app
+                
+                  ${project.version}
+                  ${project.version}-${maven.build.timestamp}
+                  ${project.docker.latesttag.version}
+                
+                
+                  
+                    
+                      
+                        
+                          org.onap.so.monitoring:so-monitoring-service
+                        
+                        app.jar
+                      
+                    
+                  
+                
+              
+            
+            
+              ${docker.image.prefix}/so-simulator
+              
+                try
+                docker-files
+                Dockerfile.so-app
+                
+                  ${project.version}
+                  ${project.version}-${maven.build.timestamp}
+                  ${project.docker.latesttag.version}
+                
+                
+                  
+                    
+                      
+                        
+                          org.onap.so:so-simulator
+                        
+                        app.jar
+                      
+                    
+                  
+                
+              
+            
+          
+        
 
-				
-					
-						clean-images
-						pre-clean
-						
-							remove
-						
-						
-							true
-						
-					
+        
+          
+            clean-images
+            pre-clean
+            
+              remove
+            
+            
+              true
+            
+          
 
-					
-						generate-images
-						generate-sources
-						
-							build
-						
-					
+          
+            generate-images
+            generate-sources
+            
+              build
+            
+          
 
-					
-						push-images
-						${docker.push.phase}
-						
-							build
-							push
-						
-						
- 						    ${docker.image.prefix}/catalog-db-adapter,${docker.image.prefix}/request-db-adapter,${docker.image.prefix}/sdnc-adapter,${docker.image.prefix}/openstack-adapter,${docker.image.prefix}/vfc-adapter,${docker.image.prefix}/sdc-controller,${docker.image.prefix}/bpmn-infra,${docker.image.prefix}/api-handler-infra,${docker.image.prefix}/so-monitoring,${docker.image.prefix}/so-simulator
-						
-					
-				
-			
+          
+            push-images
+            ${docker.push.phase}
+            
+              build
+              push
+            
+            
+              ${docker.image.prefix}/catalog-db-adapter,${docker.image.prefix}/request-db-adapter,${docker.image.prefix}/sdnc-adapter,${docker.image.prefix}/openstack-adapter,${docker.image.prefix}/vfc-adapter,${docker.image.prefix}/sdc-controller,${docker.image.prefix}/bpmn-infra,${docker.image.prefix}/api-handler-infra,${docker.image.prefix}/so-monitoring,${docker.image.prefix}/so-simulator
+            
+          
+        
+      
 
-			
-				org.apache.maven.plugins
-				maven-deploy-plugin
-				2.8
-				
-					true
-				
-			
-		
-	
+      
+        org.apache.maven.plugins
+        maven-deploy-plugin
+        2.8
+        
+          true
+        
+      
+    
+  
 
-	
-		
-			org.onap.so.adapters
-			mso-vnfm-etsi-adapter
-			${project.version}
-		
-		
-			org.onap.so.adapters
-			mso-catalog-db-adapter
-			${project.version}
-		
-		
-			org.onap.so.adapters
-			mso-requests-db-adapter
-			${project.version}
-		
-		
-			org.onap.so
-			mso-sdnc-adapter
-			${project.version}
-		
-		
-			org.onap.so
-			mso-openstack-adapters
-			${project.version}
-		
-		
-			org.onap.so.adapters
-			mso-vfc-adapter
-			${project.version}
-		
-		
-			org.onap.so.adapters
-			so-appc-orchestrator
-			${project.version}
-		
-		
-			org.onap.so
-			asdc-controller
-			${project.version}
-		
-		
-			org.onap.so
-			mso-infrastructure-bpmn
-			${project.version}
-		
-		
-			org.onap.so
-			mso-api-handler-infra
-			${project.version}
-		
-		
-			org.onap.so.monitoring
-			so-monitoring-service
-			${project.version}
-		
-	    
-			org.onap.so
-			so-simulator
-			${project.version}
-		
-	
+  
+    
+      org.onap.so.adapters
+      mso-vnfm-etsi-adapter
+      ${project.version}
+    
+    
+      org.onap.so.adapters
+      mso-ve-vnfm-adapter
+      ${project.version}
+    
+    
+      org.onap.so.adapters
+      mso-catalog-db-adapter
+      ${project.version}
+    
+    
+      org.onap.so.adapters
+      mso-requests-db-adapter
+      ${project.version}
+    
+    
+      org.onap.so
+      mso-sdnc-adapter
+      ${project.version}
+    
+    
+      org.onap.so
+      mso-openstack-adapters
+      ${project.version}
+    
+    
+      org.onap.so.adapters
+      mso-vfc-adapter
+      ${project.version}
+    
+    
+      org.onap.so.adapters
+      so-appc-orchestrator
+      ${project.version}
+    
+    
+      org.onap.so
+      asdc-controller
+      ${project.version}
+    
+    
+      org.onap.so
+      mso-infrastructure-bpmn
+      ${project.version}
+    
+    
+      org.onap.so
+      mso-api-handler-infra
+      ${project.version}
+    
+    
+      org.onap.so.monitoring
+      so-monitoring-service
+      ${project.version}
+    
+    
+      org.onap.so
+      so-simulator
+      ${project.version}
+    
+  
 
-- 
2.16.6