|
25 | 25 | import org.mockito.Mockito; |
26 | 26 | import org.mockito.junit.MockitoJUnitRunner; |
27 | 27 |
|
| 28 | +import com.cloud.agent.api.VMSnapshotTO; |
28 | 29 | import com.cloud.utils.Pair; |
29 | 30 |
|
30 | 31 | import junit.framework.TestCase; |
@@ -75,4 +76,30 @@ public void validateIsLibvirtVersionEqualOrHigherThanVersionInParameterLibvirtVe |
75 | 76 | Assert.assertEquals(String.valueOf(libvirtVersion), result.first()); |
76 | 77 | Assert.assertTrue(result.second()); |
77 | 78 | } |
| 79 | + |
| 80 | + @Test |
| 81 | + public void generateVMSnapshotXMLEscapesSnapshotName() { |
| 82 | + VMSnapshotTO snapshot = Mockito.mock(VMSnapshotTO.class); |
| 83 | + Mockito.doReturn("i-2-3-VM_VS_</name><disks><disk name='vda'/></disks><name>x").when(snapshot).getSnapshotName(); |
| 84 | + Mockito.doReturn(1000L).when(snapshot).getCreateTime(); |
| 85 | + |
| 86 | + String xml = libvirtUtilitiesHelperSpy.generateVMSnapshotXML(snapshot, null, "<domain/>"); |
| 87 | + |
| 88 | + Assert.assertTrue(xml.contains("<name>i-2-3-VM_VS_</name><disks><disk name='vda'/></disks><name>x</name>")); |
| 89 | + Assert.assertFalse(xml.contains("<disks>")); |
| 90 | + } |
| 91 | + |
| 92 | + @Test |
| 93 | + public void generateVMSnapshotXMLEscapesParentSnapshotName() { |
| 94 | + VMSnapshotTO snapshot = Mockito.mock(VMSnapshotTO.class); |
| 95 | + Mockito.doReturn("child").when(snapshot).getSnapshotName(); |
| 96 | + Mockito.doReturn(1000L).when(snapshot).getCreateTime(); |
| 97 | + VMSnapshotTO parent = Mockito.mock(VMSnapshotTO.class); |
| 98 | + Mockito.doReturn("parent</name><disks/>").when(parent).getSnapshotName(); |
| 99 | + |
| 100 | + String xml = libvirtUtilitiesHelperSpy.generateVMSnapshotXML(snapshot, parent, "<domain/>"); |
| 101 | + |
| 102 | + Assert.assertTrue(xml.contains("<parent><name>parent</name><disks/></name></parent>")); |
| 103 | + Assert.assertFalse(xml.contains("<disks/>")); |
| 104 | + } |
78 | 105 | } |
0 commit comments