Skip to content

Commit

Permalink
Verify, that dev ui page can be updated via "browser" and HTTPS
Browse files Browse the repository at this point in the history
  • Loading branch information
fedinskiy committed Jan 13, 2023
1 parent f731da1 commit 475eb46
Show file tree
Hide file tree
Showing 3 changed files with 107 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,5 @@ pl-container-request-filter.enabled=false
# Register MultipartFormDataReader as provider (used by io.quarkus.ts.http.advanced.reactive.MultipartResource.multipartFormData)
quarkus.index-dependency.resteasy-multipart.group-id=org.jboss.resteasy
quarkus.index-dependency.resteasy-multipart.artifact-id=resteasy-multipart-provider

quarkus.qe.test.value=42
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
package io.quarkus.ts.http.advanced.reactive;

import static org.junit.jupiter.api.Assertions.assertEquals;

import java.io.IOException;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.DomElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

import io.quarkus.test.bootstrap.DevModeQuarkusService;
import io.quarkus.test.bootstrap.Protocol;
import io.quarkus.test.bootstrap.RestService;
import io.quarkus.test.scenarios.QuarkusScenario;
import io.quarkus.test.services.DevModeQuarkusApplication;
import io.quarkus.test.services.URILike;
import io.quarkus.test.utils.AwaitilityUtils;

@QuarkusScenario
public class DevModeHttpsIT {
private static final String PROPERTY = "quarkus.qe.test.value";

@DevModeQuarkusApplication(ssl = true)
static RestService app = new DevModeQuarkusService()
.withProperty("quarkus.oidc.enabled", "false")
.withProperty("quarkus.keycloak.policy-enforcer.enable", "false")
.withProperty("quarkus.keycloak.devservices.enabled", "false");

private WebClient webClient;

@BeforeEach
void setUp() {
webClient = new WebClient();

webClient.getOptions().setRedirectEnabled(true); //required for the test case
//The execution breaks without the two options below
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setWebSocketEnabled(false);

//make sure, that the cache doesn't affect us
webClient.getCookieManager().clearCookies();
webClient.getCookieManager().setCookiesEnabled(false);
webClient.getCache().clear();
webClient.getCache().setMaxSize(0);

//disable everything, that we don't need
webClient.getOptions().setDownloadImages(false);
webClient.getOptions().setGeolocationEnabled(false);
webClient.getOptions().setAppletEnabled(false);
webClient.getOptions().setCssEnabled(false);
}

@AfterEach
void tearDown() {
webClient.close();
}

@Test
public void uiChange() throws IOException {
URILike uri = app.getURI(Protocol.HTTPS);

HtmlPage before = webClient.getPage(uri.withPath("/q/dev/io.quarkus.quarkus-vertx-http/config").toString());
QuarkusUIField field = new QuarkusUIField(before.getElementById(PROPERTY));
assertEquals("42", field.getValue());
assertEquals("42", app.getProperty(PROPERTY, ""));

field.setValue("23");
HtmlPage saved = field.getSaveButton().click();
QuarkusUIField updated = new QuarkusUIField(saved.getElementById(PROPERTY));
assertEquals("23", updated.getValue());

AwaitilityUtils.untilIsTrue(() -> app.getLogs().stream().anyMatch(log -> log.contains("File change detected")));
assertEquals("23", app.getProperty(PROPERTY, ""));
}
}

class QuarkusUIField {
private final DomElement element;

QuarkusUIField(DomElement element) {
this.element = element;
}

public String getValue() {
return element.getAttribute("value");
}

public void setValue(String newValue) {
element.setAttribute("value", newValue);
}

public DomElement getSaveButton() {
for (DomElement sibling : element.getParentNode().getDomElementDescendants()) {
if (sibling.getAttribute("class").equals("input-group-text formInputButton")) {
return sibling;
}
}
throw new IllegalStateException("Save button was not found!");
}
}
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
<quarkus.platform.version>999-SNAPSHOT</quarkus.platform.version>
<quarkus.qe.framework.version>1.3.0.Beta1</quarkus.qe.framework.version>
<quarkus.qe.framework.version>1.3.0.Beta3</quarkus.qe.framework.version>
<quarkus-qpid-jms.version>0.40.0</quarkus-qpid-jms.version>
<quarkus-ide-config.version>2.12.1.Final</quarkus-ide-config.version>
<apache-httpclient-fluent.version>4.5.14</apache-httpclient-fluent.version>
Expand Down

0 comments on commit 475eb46

Please sign in to comment.