package com.shootoff.gui.controller; import static org.junit.Assert.*; import java.util.Optional; import java.util.Set; import org.junit.Test; import com.shootoff.gui.controller.PluginManagerController.PluginMetadata; public class TestPluginManagerController { @Test public void testGetPluginMetadataXMLValidXML() { PluginManagerController pmc = new PluginManagerController(); String validXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<plugins>\n" + " <plugin name=\"Pistol Isometrics\" version=\"1.0\" minShootOFFVersion=\"3.7\" maxShootOFFVersion=\"4.0\"\n" + " creator=\"phrack\" download=\"https://github.com/phrack/ShootOFF-Pistol-Isometrics/releases/download/v1.0-FINAL/ShootOFF-Pistol-Isometrics.jar\"\n" + " description=\"Walk through a series of shoot and hold exercises to strenghten muscles activated when accurately shooting a firearm.\" />'n" + " <plugin name=\"Something Cool\" version=\"9.0\" minShootOFFVersion=\"4.0\" maxShootOFFVersion=\"5.0\"\n" + " creator=\"someone\" download=\"https://example.com/plugin.jar\"\n" + " description=\"This does something neat.\" />'n" + "</plugins>"; Set<PluginMetadata> pluginMetadata = pmc.parsePluginMetadata(validXML); assertEquals(2, pluginMetadata.size()); for (PluginMetadata pm : pluginMetadata) { if ("phrack".equals(pm.getCreator())) { assertEquals("Pistol Isometrics", pm.getName()); assertEquals("1.0", pm.getVersion()); assertEquals("3.7", pm.getMinShootOFFVersion()); assertEquals("4.0", pm.getMaxShootOFFVersion()); assertEquals("phrack", pm.getCreator()); assertEquals( "https://github.com/phrack/ShootOFF-Pistol-Isometrics/releases/download/v1.0-FINAL/ShootOFF-Pistol-Isometrics.jar", pm.getDownload()); assertEquals( "Walk through a series of shoot and hold exercises to strenghten muscles activated when accurately shooting a firearm.", pm.getDescription()); } else { assertEquals("Something Cool", pm.getName()); assertEquals("9.0", pm.getVersion()); assertEquals("4.0", pm.getMinShootOFFVersion()); assertEquals("5.0", pm.getMaxShootOFFVersion()); assertEquals("someone", pm.getCreator()); assertEquals("https://example.com/plugin.jar", pm.getDownload()); assertEquals("This does something neat.", pm.getDescription()); } } } @Test public void testGetPluginMetadataXMLEmptyXML() { PluginManagerController pmc = new PluginManagerController(); Set<PluginMetadata> pluginMetadata = pmc.parsePluginMetadata(""); assertEquals(0, pluginMetadata.size()); } @Test public void testIsPluginCompatibleTrue() { PluginManagerController pmc = new PluginManagerController(); assertTrue(pmc.isPluginCompatible(Optional.of("3.0"), "2.9", "3.1")); assertTrue(pmc.isPluginCompatible(Optional.of("2.9"), "2.9", "3.1")); assertTrue(pmc.isPluginCompatible(Optional.of("2.10"), "2.9", "3.1")); assertTrue(pmc.isPluginCompatible(Optional.of("2.89"), "2.9", "3.1")); assertTrue(pmc.isPluginCompatible(Optional.of("3.1"), "2.9", "3.1")); assertTrue(pmc.isPluginCompatible(Optional.of("3"), "2.9", "3.1")); } @Test public void testIsPluginCompatibleFalse() { PluginManagerController pmc = new PluginManagerController(); assertFalse(pmc.isPluginCompatible(Optional.empty(), "2.9", "3.1")); assertFalse(pmc.isPluginCompatible(Optional.of("4.0"), "2.9", "3.1")); assertFalse(pmc.isPluginCompatible(Optional.of("3.2"), "2.9", "3.1")); assertFalse(pmc.isPluginCompatible(Optional.of("2.8"), "2.9", "3.1")); } }