From 094f270d8661f5ea997ec0b965b5573a80587625 Mon Sep 17 00:00:00 2001
From: Stanislav Riabokon <stanislav_riabokon@epam.com>
Date: Wed, 23 Sep 2020 10:30:51 +0400
Subject: [PATCH] Added a property 'ENABLE_FULL_BUCKET_NAME'. Added unit tests.
 Changed int tests.

---
 .../legal-gcp/src/main/appengine/app.yaml     |  1 +
 .../countries/StorageReaderFactoryImpl.java   |  6 +++-
 .../legal/countries/StorageReaderImpl.java    | 18 +++++++---
 .../src/main/resources/application.properties |  2 ++
 .../countries/StorageReaderImplTests.java     | 34 +++++++++++++++++++
 .../src/test/resources/application.properties |  3 ++
 .../osdu/legal/util/GCPLegalTagUtils.java     | 16 +++++++--
 7 files changed, 72 insertions(+), 8 deletions(-)
 create mode 100644 provider/legal-gcp/src/test/resources/application.properties

diff --git a/provider/legal-gcp/src/main/appengine/app.yaml b/provider/legal-gcp/src/main/appengine/app.yaml
index 22df4b203..6be9a6e8e 100644
--- a/provider/legal-gcp/src/main/appengine/app.yaml
+++ b/provider/legal-gcp/src/main/appengine/app.yaml
@@ -34,4 +34,5 @@ handlers:
 
 env_variables:
    SPRING_PROFILES_ACTIVE: "ENVIRONMENT"
+   ENABLE_FULL_BUCKET_NAME: 'ENABLE_FULL_BUCKET_NAME_VAR'
    
\ No newline at end of file
diff --git a/provider/legal-gcp/src/main/java/org/opengroup/osdu/legal/countries/StorageReaderFactoryImpl.java b/provider/legal-gcp/src/main/java/org/opengroup/osdu/legal/countries/StorageReaderFactoryImpl.java
index 150829919..8c0147e18 100644
--- a/provider/legal-gcp/src/main/java/org/opengroup/osdu/legal/countries/StorageReaderFactoryImpl.java
+++ b/provider/legal-gcp/src/main/java/org/opengroup/osdu/legal/countries/StorageReaderFactoryImpl.java
@@ -4,13 +4,17 @@ import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
 
 import org.opengroup.osdu.legal.provider.interfaces.IStorageReader;
 import org.opengroup.osdu.legal.provider.interfaces.IStorageReaderFactory;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 @Component
 public class StorageReaderFactoryImpl implements IStorageReaderFactory {
 
+  @Value("#{new Boolean('${enable.full.bucket.name}')}")
+  private Boolean isFullBucketName;
+
 	@Override
     public IStorageReader getReader(TenantInfo tenant, String projectRegion) {
-        return new StorageReaderImpl(tenant, projectRegion);
+        return new StorageReaderImpl(tenant, projectRegion, isFullBucketName);
     }
 }
diff --git a/provider/legal-gcp/src/main/java/org/opengroup/osdu/legal/countries/StorageReaderImpl.java b/provider/legal-gcp/src/main/java/org/opengroup/osdu/legal/countries/StorageReaderImpl.java
index d6b2602f2..68a5ec702 100644
--- a/provider/legal-gcp/src/main/java/org/opengroup/osdu/legal/countries/StorageReaderImpl.java
+++ b/provider/legal-gcp/src/main/java/org/opengroup/osdu/legal/countries/StorageReaderImpl.java
@@ -2,6 +2,7 @@ package org.opengroup.osdu.legal.countries;
 
 import com.google.cloud.storage.*;
 
+import java.util.Objects;
 import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
 import org.opengroup.osdu.legal.provider.interfaces.IStorageReader;
 import org.springframework.http.MediaType;
@@ -14,16 +15,22 @@ public class StorageReaderImpl implements IStorageReader {
     private String        projectRegion;
     private Storage       storage;
 
-    private static final String BUCKET_NAME = "legal-service-configuration";
+    protected static final String BUCKET_NAME = "legal-service-configuration";
     private static final String FILE_NAME = "Legal_COO.json";
+    private Boolean isFullBucketName = false;
 
     public StorageReaderImpl(TenantInfo tenantInfo, String projectRegion) {
+      new StorageReaderImpl(tenantInfo, projectRegion, false);
+    }
+
+  public StorageReaderImpl(TenantInfo tenantInfo, String projectRegion, Boolean isFullBucketName) {
         this.tenantInfo = tenantInfo;
         this.projectRegion = projectRegion;
         this.storage = getStorage();
-    }
+        this.isFullBucketName = isFullBucketName;
+  }
 
-    @Override
+  @Override
     public byte[] readAllBytes() {
         BlobId blobId = getBlobId();
         byte[] content = null;
@@ -67,8 +74,11 @@ public class StorageReaderImpl implements IStorageReader {
         this.storage.create(blobInfo, "".getBytes(UTF_8));
     }
 
-    private String getTenantBucketName() {
+  protected String getTenantBucketName() {
+      if (Objects.nonNull(isFullBucketName) && isFullBucketName) {
         return this.tenantInfo.getProjectId() + "-" + this.tenantInfo.getName() + "-" + BUCKET_NAME;
+      }
+      return this.tenantInfo.getName() + "-" + BUCKET_NAME;
     }
 
 }
diff --git a/provider/legal-gcp/src/main/resources/application.properties b/provider/legal-gcp/src/main/resources/application.properties
index a9ffebdae..17e15708f 100644
--- a/provider/legal-gcp/src/main/resources/application.properties
+++ b/provider/legal-gcp/src/main/resources/application.properties
@@ -8,4 +8,6 @@ server.port=8080
 JAVA_HEAP_OPTS=-Xms4096M -Xmx4096M
 JAVA_GC_OPTS=-XX:+UseG1GC -XX:+UseStringDeduplication -XX:InitiatingHeapOccupancyPercent=45
 
+enable.full.bucket.name=${ENABLE_FULL_BUCKET_NAME}
+
 
diff --git a/provider/legal-gcp/src/test/java/org/opengroup/osdu/legal/countries/StorageReaderImplTests.java b/provider/legal-gcp/src/test/java/org/opengroup/osdu/legal/countries/StorageReaderImplTests.java
index 83d923847..5ddca787a 100644
--- a/provider/legal-gcp/src/test/java/org/opengroup/osdu/legal/countries/StorageReaderImplTests.java
+++ b/provider/legal-gcp/src/test/java/org/opengroup/osdu/legal/countries/StorageReaderImplTests.java
@@ -13,6 +13,7 @@ import org.opengroup.osdu.core.common.model.tenant.TenantInfo;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.*;
+import static org.opengroup.osdu.legal.countries.StorageReaderImpl.BUCKET_NAME;
 import static org.powermock.api.mockito.PowerMockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
@@ -74,4 +75,37 @@ public class StorageReaderImplTests {
         byte[] bytes = sut.readAllBytes();
         assertEquals(expectedBytes, bytes);
     }
+
+  @Test
+  public void should_returnFullBucketName_when_IsFullBucketName_is_true() {
+      when(tenantInfo.getName()).thenReturn("tenant1");
+      when(tenantInfo.getProjectId()).thenReturn("projectId1");
+      String bucketName = tenantInfo.getProjectId() + "-" + tenantInfo.getName() + "-" + BUCKET_NAME;
+      StorageReaderImpl storageReader = new StorageReaderImpl(tenantInfo, null,
+          true);
+      String resultBucketName = storageReader.getTenantBucketName();
+      assertEquals(bucketName, resultBucketName);
+  }
+
+  @Test
+  public void should_returnBucketName_when_IsFullBucketName_is_false() {
+    when(tenantInfo.getName()).thenReturn("tenant1");
+    when(tenantInfo.getProjectId()).thenReturn("projectId1");
+    String bucketName = tenantInfo.getName() + "-" + BUCKET_NAME;
+    StorageReaderImpl storageReader = new StorageReaderImpl(tenantInfo, null,
+        false);
+    String resultBucketName = storageReader.getTenantBucketName();
+    assertEquals(bucketName, resultBucketName);
+  }
+
+  @Test
+  public void should_returnBucketName_when_IsFullBucketName_is_null() {
+    when(tenantInfo.getName()).thenReturn("tenant1");
+    when(tenantInfo.getProjectId()).thenReturn("projectId1");
+    String bucketName = tenantInfo.getName() + "-" + BUCKET_NAME;
+    StorageReaderImpl storageReader = new StorageReaderImpl(tenantInfo, null,
+        null);
+    String resultBucketName = storageReader.getTenantBucketName();
+    assertEquals(bucketName, resultBucketName);
+  }
 }
\ No newline at end of file
diff --git a/provider/legal-gcp/src/test/resources/application.properties b/provider/legal-gcp/src/test/resources/application.properties
new file mode 100644
index 000000000..f8c687e1b
--- /dev/null
+++ b/provider/legal-gcp/src/test/resources/application.properties
@@ -0,0 +1,3 @@
+enable.full.bucket.name=false
+
+
diff --git a/testing/legal-test-gcp/src/test/java/org/opengroup/osdu/legal/util/GCPLegalTagUtils.java b/testing/legal-test-gcp/src/test/java/org/opengroup/osdu/legal/util/GCPLegalTagUtils.java
index c1d1eafe3..b8202bb63 100644
--- a/testing/legal-test-gcp/src/test/java/org/opengroup/osdu/legal/util/GCPLegalTagUtils.java
+++ b/testing/legal-test-gcp/src/test/java/org/opengroup/osdu/legal/util/GCPLegalTagUtils.java
@@ -12,6 +12,7 @@ import com.google.cloud.storage.BlobInfo;
 import com.google.cloud.storage.Storage;
 import com.google.cloud.storage.StorageOptions;
 import com.google.common.collect.Lists;
+import java.util.Objects;
 
 public class GCPLegalTagUtils extends LegalTagUtils {
     private static final String BUCKET_NAME = "legal-service-configuration";
@@ -38,10 +39,19 @@ public class GCPLegalTagUtils extends LegalTagUtils {
         }
     }
 
-    private static String getTenantBucketName() {
-        String tenantName = System.getProperty("MY_TENANT_PROJECT", System.getenv("MY_TENANT_PROJECT")).toLowerCase();
-        return tenantName + "-" +BUCKET_NAME;
+  private static String getTenantBucketName() {
+    String tenantName = System
+        .getProperty("MY_TENANT_PROJECT", System.getenv("MY_TENANT_PROJECT")).toLowerCase();
+    String projectName = System.getProperty("GCLOUD_PROJECT", System.getenv("GCLOUD_PROJECT"))
+        .toLowerCase();
+    String enableFullBucketName = System.getProperty("ENABLE_FULL_BUCKET_NAME",
+        System.getenv("ENABLE_FULL_BUCKET_NAME")).toLowerCase();
+
+    if (Objects.nonNull(enableFullBucketName) && Boolean.valueOf(enableFullBucketName)) {
+      return projectName + "-" + tenantName + "-" + BUCKET_NAME;
     }
+    return tenantName + "-" + BUCKET_NAME;
+  }
 
     @Override
     public synchronized String accessToken() throws Exception {
-- 
GitLab