2018-11-25 18:11:24 +01:00
|
|
|
package com.djrapitops.plan.system.webserver;
|
|
|
|
|
|
|
|
import com.djrapitops.plan.data.container.Session;
|
|
|
|
import com.djrapitops.plan.system.PlanSystem;
|
|
|
|
import com.djrapitops.plan.system.database.DBSystem;
|
|
|
|
import com.djrapitops.plan.system.database.databases.operation.SaveOperations;
|
|
|
|
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
2018-12-08 10:44:10 +01:00
|
|
|
import com.djrapitops.plan.system.settings.paths.WebserverSettings;
|
2018-11-25 18:11:24 +01:00
|
|
|
import com.djrapitops.plan.system.webserver.cache.PageId;
|
|
|
|
import com.djrapitops.plan.system.webserver.cache.ResponseCache;
|
|
|
|
import com.jayway.awaitility.Awaitility;
|
|
|
|
import org.junit.*;
|
|
|
|
import org.junit.rules.TemporaryFolder;
|
|
|
|
import org.junit.runner.RunWith;
|
|
|
|
import org.mockito.junit.MockitoJUnitRunner;
|
|
|
|
import org.openqa.selenium.WebDriver;
|
2018-11-26 10:02:18 +01:00
|
|
|
import rules.ComponentMocker;
|
2018-11-28 09:32:36 +01:00
|
|
|
import rules.PluginComponentMocker;
|
2018-11-25 18:11:24 +01:00
|
|
|
import rules.SeleniumDriver;
|
2018-12-18 16:16:33 +01:00
|
|
|
import utilities.RandomData;
|
2018-11-25 18:11:24 +01:00
|
|
|
import utilities.TestConstants;
|
|
|
|
|
|
|
|
import java.util.UUID;
|
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
|
|
import static org.junit.Assert.assertFalse;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This test class is for catching any JavaScript errors.
|
|
|
|
* <p>
|
|
|
|
* Errors may have been caused by:
|
|
|
|
* - Missing placeholders {@code ${placeholder}} inside {@code <script>} tags.
|
|
|
|
* - Automatic formatting of plugin javascript (See https://github.com/Rsl1122/Plan-PlayerAnalytics/issues/820)
|
2018-12-18 11:50:12 +01:00
|
|
|
* - Missing file definition in Mocker
|
2018-11-25 18:11:24 +01:00
|
|
|
*/
|
|
|
|
@RunWith(MockitoJUnitRunner.Silent.class)
|
|
|
|
public class JSErrorRegressionTest {
|
|
|
|
|
2018-12-18 16:16:33 +01:00
|
|
|
private static final int TEST_PORT_NUMBER = RandomData.randomInt(9005, 9500);
|
|
|
|
|
2018-11-25 18:11:24 +01:00
|
|
|
@ClassRule
|
|
|
|
public static TemporaryFolder temporaryFolder = new TemporaryFolder();
|
|
|
|
@ClassRule
|
2018-11-28 09:32:36 +01:00
|
|
|
public static ComponentMocker component = new PluginComponentMocker(temporaryFolder);
|
2018-11-26 10:02:18 +01:00
|
|
|
@ClassRule
|
2018-11-25 18:11:24 +01:00
|
|
|
public static SeleniumDriver seleniumDriver = new SeleniumDriver();
|
|
|
|
|
|
|
|
private static PlanSystem bukkitSystem;
|
|
|
|
|
|
|
|
@BeforeClass
|
|
|
|
public static void setUpClass() throws Exception {
|
2018-11-26 10:02:18 +01:00
|
|
|
bukkitSystem = component.getPlanSystem();
|
2018-11-25 18:11:24 +01:00
|
|
|
|
|
|
|
PlanConfig config = bukkitSystem.getConfigSystem().getConfig();
|
2018-12-18 16:16:33 +01:00
|
|
|
config.set(WebserverSettings.PORT, TEST_PORT_NUMBER);
|
2018-11-25 18:11:24 +01:00
|
|
|
|
|
|
|
bukkitSystem.enable();
|
|
|
|
savePlayerData();
|
|
|
|
}
|
|
|
|
|
|
|
|
private static void savePlayerData() {
|
|
|
|
DBSystem dbSystem = bukkitSystem.getDatabaseSystem();
|
|
|
|
SaveOperations save = dbSystem.getDatabase().save();
|
|
|
|
UUID uuid = TestConstants.PLAYER_ONE_UUID;
|
|
|
|
save.registerNewUser(uuid, 1000L, "TestPlayer");
|
|
|
|
Session session = new Session(uuid, TestConstants.SERVER_UUID, 1000L, "world", "SURVIVAL");
|
|
|
|
session.endSession(11000L);
|
|
|
|
save.session(uuid, session);
|
|
|
|
}
|
|
|
|
|
|
|
|
@After
|
|
|
|
public void tearDownTest() {
|
|
|
|
seleniumDriver.newTab();
|
|
|
|
}
|
|
|
|
|
|
|
|
@AfterClass
|
|
|
|
public static void tearDownClass() {
|
|
|
|
if (bukkitSystem != null) {
|
|
|
|
bukkitSystem.disable();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
public void playerPageDoesNotHaveJavascriptErrors() {
|
|
|
|
System.out.println("Testing Player Page");
|
|
|
|
WebDriver driver = seleniumDriver.getDriver();
|
2018-12-18 16:16:33 +01:00
|
|
|
driver.get("http://localhost:" + TEST_PORT_NUMBER + "/player/TestPlayer");
|
2018-11-25 18:11:24 +01:00
|
|
|
assertFalse(driver.getPageSource(), driver.getPageSource().contains("500 Internal Error occurred"));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2018-11-28 09:32:36 +01:00
|
|
|
@Ignore("PlanPluginMocker displays network page for some reason. Investigate")
|
2018-11-25 18:11:24 +01:00
|
|
|
public void serverPageDoesNotHaveJavascriptErrors() {
|
|
|
|
System.out.println("Testing Server Page");
|
|
|
|
WebDriver driver = seleniumDriver.getDriver();
|
|
|
|
// Open the page that has refreshing info
|
2018-12-18 16:16:33 +01:00
|
|
|
driver.get("http://localhost:" + TEST_PORT_NUMBER + "/server");
|
2018-11-25 18:11:24 +01:00
|
|
|
assertFalse(driver.getPageSource(), driver.getPageSource().contains("500 Internal Error occurred"));
|
|
|
|
|
|
|
|
// Wait until Plan caches analysis results
|
|
|
|
Awaitility.await()
|
2018-11-28 09:32:36 +01:00
|
|
|
.atMost(10, TimeUnit.SECONDS)
|
2018-11-25 18:11:24 +01:00
|
|
|
.until(() -> ResponseCache.isCached(PageId.SERVER.of(TestConstants.SERVER_UUID)));
|
|
|
|
|
|
|
|
// Open the page with analysis stuff
|
|
|
|
seleniumDriver.newTab();
|
2018-12-18 16:16:33 +01:00
|
|
|
driver.get("http://localhost:" + TEST_PORT_NUMBER + "/server");
|
2018-11-25 18:11:24 +01:00
|
|
|
assertFalse(driver.getPageSource(), driver.getPageSource().contains("500 Internal Error occurred"));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2018-12-18 11:50:12 +01:00
|
|
|
@Ignore("PlanPluginMocker displays network page for some reason. Investigate")
|
2018-11-25 18:11:24 +01:00
|
|
|
public void playersPageDoesNotHaveJavascriptErrors() {
|
|
|
|
System.out.println("Testing Players Page");
|
|
|
|
WebDriver driver = seleniumDriver.getDriver();
|
2018-12-18 16:16:33 +01:00
|
|
|
driver.get("http://localhost:" + TEST_PORT_NUMBER + "/players");
|
2018-11-25 18:11:24 +01:00
|
|
|
assertFalse(driver.getPageSource(), driver.getPageSource().contains("500 Internal Error occurred"));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
public void debugPageDoesNotHaveJavascriptErrors() {
|
|
|
|
System.out.println("Testing Debug Page");
|
|
|
|
WebDriver driver = seleniumDriver.getDriver();
|
2018-12-18 16:16:33 +01:00
|
|
|
driver.get("http://localhost:" + TEST_PORT_NUMBER + "/debug");
|
2018-11-25 18:11:24 +01:00
|
|
|
assertFalse(driver.getPageSource(), driver.getPageSource().contains("500 Internal Error occurred"));
|
|
|
|
}
|
|
|
|
}
|