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);
+ }
+
}