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
This commit is contained in:
Alain-Christian Courtines 2024-09-03 23:39:47 -07:00 committed by GitHub
parent f2a1ee57ca
commit 24dc3178a3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 119 additions and 0 deletions

View File

@ -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());
}
}

View File

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

View File

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