Skip to content

Commit 36ae0d4

Browse files
added unit test with different date format
1 parent 8a451a4 commit 36ae0d4

1 file changed

Lines changed: 59 additions & 1 deletion

File tree

‎core/src/test/java/com/cloud/serializer/GsonHelperTest.java‎

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.cloud.storage.DataStoreRole;
2222
import com.cloud.utils.DateUtil;
2323
import com.google.gson.Gson;
24+
import com.google.gson.JsonSyntaxException;
2425
import org.junit.Before;
2526
import org.junit.Test;
2627

@@ -96,7 +97,7 @@ public void testGsonDateFormatSerialization() {
9697
}
9798

9899
@Test
99-
public void testGsonDateFormatDeserialization() throws Exception {
100+
public void testGsonDateFormatDeserializationWithSameDateFormat() throws Exception {
100101
String json = "{\"str\":\"TestString\",\"num\":999,\"date\":\"2025-08-22T15:39:43+0000\"}";
101102
TestClass testObj = gson.fromJson(json, TestClass.class);
102103

@@ -106,6 +107,63 @@ public void testGsonDateFormatDeserialization() throws Exception {
106107
assertEquals(expectedDate, testObj.getDate());
107108
}
108109

110+
@Test (expected = JsonSyntaxException.class)
111+
public void testGsonDateFormatDeserializationWithDifferentDateFormat() throws Exception {
112+
String json = "{\"str\":\"TestString\",\"num\":999,\"date\":\"22/08/2025T15:39:43+0000\"}";
113+
gson.fromJson(json, TestClass.class);
114+
/* Deserialization throws the below exception:
115+
com.google.gson.JsonSyntaxException: 22/08/2025T15:39:43+0000
116+
117+
at com.google.gson.DefaultTypeAdapters$DefaultDateTypeAdapter.deserializeToDate(DefaultTypeAdapters.java:376)
118+
at com.google.gson.DefaultTypeAdapters$DefaultDateTypeAdapter.deserialize(DefaultTypeAdapters.java:351)
119+
at com.google.gson.DefaultTypeAdapters$DefaultDateTypeAdapter.deserialize(DefaultTypeAdapters.java:307)
120+
at com.google.gson.JsonDeserializationVisitor.invokeCustomDeserializer(JsonDeserializationVisitor.java:92)
121+
at com.google.gson.JsonObjectDeserializationVisitor.visitFieldUsingCustomHandler(JsonObjectDeserializationVisitor.java:117)
122+
at com.google.gson.ReflectingFieldNavigator.visitFieldsReflectively(ReflectingFieldNavigator.java:63)
123+
at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:120)
124+
at com.google.gson.JsonDeserializationContextDefault.fromJsonObject(JsonDeserializationContextDefault.java:76)
125+
at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:54)
126+
at com.google.gson.Gson.fromJson(Gson.java:551)
127+
at com.google.gson.Gson.fromJson(Gson.java:498)
128+
at com.google.gson.Gson.fromJson(Gson.java:467)
129+
at com.google.gson.Gson.fromJson(Gson.java:417)
130+
at com.google.gson.Gson.fromJson(Gson.java:389)
131+
at com.cloud.serializer.GsonHelperTest.testGsonDateFormatDeserializationWithDifferentDateFormat(GsonHelperTest.java:113)
132+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
133+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
134+
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
135+
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
136+
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
137+
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
138+
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
139+
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
140+
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
141+
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
142+
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
143+
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
144+
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
145+
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
146+
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
147+
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
148+
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
149+
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
150+
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
151+
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
152+
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
153+
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
154+
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
155+
at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
156+
at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
157+
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
158+
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:231)
159+
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
160+
Caused by: java.text.ParseException: Unparseable date: "22/08/2025T15:39:43+0000"
161+
at java.base/java.text.DateFormat.parse(DateFormat.java:395)
162+
at com.google.gson.DefaultTypeAdapters$DefaultDateTypeAdapter.deserializeToDate(DefaultTypeAdapters.java:374)
163+
... 42 more
164+
*/
165+
}
166+
109167
private static class TestClass {
110168
private String str;
111169
private int num;

0 commit comments

Comments
 (0)