This is an automated email from the ASF dual-hosted git repository.

rohit pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/main by this push:
     new 24dc3178a39 Testcases Added (#9116)
24dc3178a39 is described below

commit 24dc3178a39d5cc4833539264abae07c1a618683
Author: Alain-Christian Courtines 
<[email protected]>
AuthorDate: Tue Sep 3 23:39:47 2024 -0700

    Testcases Added (#9116)
    
    * added a news tester file and directory for GsonHelper.java. Also created 
a new test in OVAProcessorTest.java
    
    * added testcase to PasswordPolicyImplTest.java
    
    * added proper imports for GsonHelperTest.java
    
    * expected changed based on commit response
    
    * adhere to checkstyle ruleset
---
 .../java/com/cloud/serializer/GsonHelperTest.java  | 81 ++++++++++++++++++++++
 .../cloud/storage/template/OVAProcessorTest.java   | 20 ++++++
 .../com/cloud/user/PasswordPolicyImplTest.java     | 18 +++++
 3 files changed, 119 insertions(+)

diff --git a/core/src/test/java/com/cloud/serializer/GsonHelperTest.java 
b/core/src/test/java/com/cloud/serializer/GsonHelperTest.java
new file mode 100644
index 00000000000..e8b0b373060
--- /dev/null
+++ b/core/src/test/java/com/cloud/serializer/GsonHelperTest.java
@@ -0,0 +1,81 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you 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.
+
+package com.cloud.serializer;
+
+import com.cloud.agent.api.to.NfsTO;
+import com.cloud.storage.DataStoreRole;
+import com.google.gson.Gson;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Test cases to verify working order of GsonHelper.java
+ * with regards to a concrete implementation of the DataStoreTO
+ * interface
+ */
+public class GsonHelperTest {
+
+    private Gson gson;
+    private Gson gsonLogger;
+    private NfsTO nfsTO;
+
+    @Before
+    public void setUp() {
+        gson = GsonHelper.getGson();
+        gsonLogger = GsonHelper.getGsonLogger();
+        nfsTO = new NfsTO("http://example.com";, DataStoreRole.Primary);
+    }
+
+    @Test
+    public void testGsonSerialization() {
+        String json = gson.toJson(nfsTO);
+        assertNotNull(json);
+        assertTrue(json.contains("\"_url\":\"http://example.com\"";));
+        assertTrue(json.contains("\"_role\":\"Primary\""));
+    }
+
+    @Test
+    public void testGsonDeserialization() {
+        String json = 
"{\"_url\":\"http://example.com\",\"_role\":\"Primary\"}";;
+        NfsTO deserializedNfsTO = gson.fromJson(json, NfsTO.class);
+        assertNotNull(deserializedNfsTO);
+        assertEquals("http://example.com";, deserializedNfsTO.getUrl());
+        assertEquals(DataStoreRole.Primary, deserializedNfsTO.getRole());
+    }
+
+    @Test
+    public void testGsonLoggerSerialization() {
+        String json = gsonLogger.toJson(nfsTO);
+        assertNotNull(json);
+        assertTrue(json.contains("\"_url\":\"http://example.com\"";));
+        assertTrue(json.contains("\"_role\":\"Primary\""));
+    }
+
+    @Test
+    public void testGsonLoggerDeserialization() {
+        String json ="{\"_url\":\"http://example.com\",\"_role\":\"Primary\"}";;
+        NfsTO deserializedNfsTO = gsonLogger.fromJson(json, NfsTO.class);
+        assertNotNull(deserializedNfsTO);
+        assertEquals("http://example.com";, deserializedNfsTO.getUrl());
+        assertEquals(DataStoreRole.Primary, deserializedNfsTO.getRole());
+    }
+}
diff --git 
a/core/src/test/java/com/cloud/storage/template/OVAProcessorTest.java 
b/core/src/test/java/com/cloud/storage/template/OVAProcessorTest.java
index 8ab54644718..8674a8df286 100644
--- a/core/src/test/java/com/cloud/storage/template/OVAProcessorTest.java
+++ b/core/src/test/java/com/cloud/storage/template/OVAProcessorTest.java
@@ -131,5 +131,25 @@ public class OVAProcessorTest {
         Assert.assertEquals(virtualSize, processor.getVirtualSize(mockFile));
         Mockito.verify(mockFile, Mockito.times(0)).length();
     }
+    @Test
+    public void testProcessWithLargeFileSize() throws Exception {
+        String templatePath = "/tmp";
+        String templateName = "large_template";
+        long virtualSize = 10_000_000_000L;
+        long actualSize = 5_000_000_000L;
+
+        
Mockito.when(mockStorageLayer.exists(Mockito.anyString())).thenReturn(true);
+        
Mockito.when(mockStorageLayer.getSize(Mockito.anyString())).thenReturn(actualSize);
+        
Mockito.doReturn(virtualSize).when(processor).getTemplateVirtualSize(Mockito.anyString(),
 Mockito.anyString());
 
+        try (MockedConstruction<Script> ignored = 
Mockito.mockConstruction(Script.class, (mock, context) -> {
+            Mockito.when(mock.execute()).thenReturn(null);
+        })) {
+            Processor.FormatInfo info = processor.process(templatePath, null, 
templateName);
+            Assert.assertEquals(Storage.ImageFormat.OVA, info.format);
+            Assert.assertEquals("actual size:", actualSize, info.size);
+            Assert.assertEquals("virtual size:", virtualSize, 
info.virtualSize);
+            Assert.assertEquals("template name:", templateName + ".ova", 
info.filename);
+        }
+    }
 }
diff --git a/server/src/test/java/com/cloud/user/PasswordPolicyImplTest.java 
b/server/src/test/java/com/cloud/user/PasswordPolicyImplTest.java
index dc3b7624fc4..561627a361a 100644
--- a/server/src/test/java/com/cloud/user/PasswordPolicyImplTest.java
+++ b/server/src/test/java/com/cloud/user/PasswordPolicyImplTest.java
@@ -160,4 +160,22 @@ public class PasswordPolicyImplTest {
         passwordPolicySpy.validateIfPasswordMatchesRegex("abcd123", "user", 
null);
     }
 
+    @Test
+    public void validateCombinationOfPolicies() {
+        
Mockito.doReturn(2).when(passwordPolicySpy).getPasswordPolicyMinimumSpecialCharacters(null);
+        
Mockito.doReturn(1).when(passwordPolicySpy).getPasswordPolicyMinimumUpperCaseLetters(null);
+        
Mockito.doReturn(1).when(passwordPolicySpy).getPasswordPolicyMinimumLowerCaseLetters(null);
+        
Mockito.doReturn(1).when(passwordPolicySpy).getPasswordPolicyMinimumDigits(null);
+        
Mockito.doReturn(8).when(passwordPolicySpy).getPasswordPolicyMinimumLength(null);
+        
Mockito.doReturn(false).when(passwordPolicySpy).getPasswordPolicyAllowPasswordToContainUsername(null);
+
+        String password = "Ab1!@#cd";
+        
passwordPolicySpy.validateIfPasswordContainsTheMinimumNumberOfSpecialCharacters(2,
 password, null);
+        
passwordPolicySpy.validateIfPasswordContainsTheMinimumNumberOfUpperCaseLetters(1,
 password, null);
+        
passwordPolicySpy.validateIfPasswordContainsTheMinimumNumberOfLowerCaseLetters(1,
 password, null);
+        
passwordPolicySpy.validateIfPasswordContainsTheMinimumNumberOfDigits(1, 
password, null);
+        passwordPolicySpy.validateIfPasswordContainsTheMinimumLength(password, 
"user", null);
+        passwordPolicySpy.validateIfPasswordContainsTheUsername(password, 
"user", null);
+    }
+
 }

Reply via email to