use of org.structr.web.entity.Site in project structr by structr.
the class HtmlServlet method isVisibleForSite.
/**
* Check if the given page is visible for the requested site defined by
* a hostname and a port.
*
* @param request
* @param page
* @return
*/
private boolean isVisibleForSite(final HttpServletRequest request, final Page page) {
final Site site = page.getSite();
if (site == null) {
return true;
}
final String serverName = request.getServerName();
final int serverPort = request.getServerPort();
if (StringUtils.isNotBlank(serverName) && !serverName.equals(site.getHostname())) {
return false;
}
final Integer sitePort = site.getPort();
if (sitePort != null && serverPort != sitePort) {
return false;
}
return true;
}
use of org.structr.web.entity.Site in project structr by structr.
the class SimpleTest method testSites.
@Test
public void testSites() {
try (final Tx tx = app.tx()) {
// setup two pages and two sites
// page one -> site one, listens on one:8875
// page two -> site two, listens on two:8875
final Page pageOne = app.create(Page.class, "page-one");
try {
final Element html = pageOne.createElement("html");
((DOMNode) html).setProperties(((DOMNode) html).getSecurityContext(), new PropertyMap(DOMNode.visibleToPublicUsers, true));
final Text textNode = pageOne.createTextNode("page-1");
((DOMNode) textNode).setProperties(((DOMNode) textNode).getSecurityContext(), new PropertyMap(DOMNode.visibleToPublicUsers, true));
pageOne.appendChild(html);
html.appendChild(textNode);
} catch (DOMException dex) {
logger.warn("", dex);
throw new FrameworkException(422, dex.getMessage());
}
final Page pageTwo = app.create(Page.class, "page-two");
try {
final Element html = pageTwo.createElement("html");
((DOMNode) html).setProperties(((DOMNode) html).getSecurityContext(), new PropertyMap(DOMNode.visibleToPublicUsers, true));
final Text textNode = pageTwo.createTextNode("page-2");
((DOMNode) textNode).setProperties(((DOMNode) textNode).getSecurityContext(), new PropertyMap(DOMNode.visibleToPublicUsers, true));
pageTwo.appendChild(html);
html.appendChild(textNode);
} catch (DOMException dex) {
logger.warn("", dex);
throw new FrameworkException(422, dex.getMessage());
}
final PropertyMap siteOneProperties = new PropertyMap();
final PropertyKey<Site> siteKey = StructrApp.key(Page.class, "site");
final PropertyKey<Integer> positionKey = StructrApp.key(Page.class, "position");
final PropertyKey<Integer> portKey = StructrApp.key(Site.class, "port");
final PropertyKey<String> hostnameKey = StructrApp.key(Site.class, "hostname");
siteOneProperties.put(Site.name, "site-one");
siteOneProperties.put(Site.visibleToPublicUsers, true);
siteOneProperties.put(hostnameKey, "localhost");
siteOneProperties.put(portKey, 8875);
final PropertyMap siteTwoProperties = new PropertyMap();
siteTwoProperties.put(Site.name, "site-two");
siteTwoProperties.put(Site.visibleToPublicUsers, true);
siteTwoProperties.put(hostnameKey, "127.0.0.1");
siteTwoProperties.put(portKey, 8875);
final Site siteOne = app.create(Site.class, siteOneProperties);
final Site siteTwo = app.create(Site.class, siteTwoProperties);
final PropertyMap pageOneProperties = new PropertyMap();
pageOneProperties.put(siteKey, siteOne);
pageOneProperties.put(Page.visibleToPublicUsers, true);
pageOneProperties.put(positionKey, 10);
pageOne.setProperties(pageOne.getSecurityContext(), pageOneProperties);
final PropertyMap pageTwoProperties = new PropertyMap();
pageTwoProperties.put(siteKey, siteTwo);
pageTwoProperties.put(Page.visibleToPublicUsers, true);
pageTwoProperties.put(positionKey, 10);
pageTwo.setProperties(pageTwo.getSecurityContext(), pageTwoProperties);
tx.success();
} catch (FrameworkException fex) {
logger.warn("", fex);
}
RestAssured.given().filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(200)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(201)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(400)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(401)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(403)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(404)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(422)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(500)).expect().response().contentType("text/html").statusCode(200).body(Matchers.containsString("page-1")).when().get("http://localhost:8875/");
RestAssured.given().filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(200)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(201)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(400)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(401)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(403)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(404)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(422)).filter(ResponseLoggingFilter.logResponseIfStatusCodeIs(500)).expect().response().contentType("text/html").statusCode(200).body(Matchers.containsString("page-2")).when().get("http://127.0.0.1:8875/");
}
use of org.structr.web.entity.Site in project structr by structr.
the class SiteTest method test01BasicSites.
@Test
public void test01BasicSites() {
try (final Tx tx = app.tx()) {
final Site site1 = createTestNode(Site.class, new NodeAttribute<>(StructrApp.key(AbstractNode.class, "name"), "site1"), new NodeAttribute<>(StructrApp.key(Site.class, "hostname"), "test1.example.com"));
final Site site2 = createTestNode(Site.class, new NodeAttribute<>(StructrApp.key(AbstractNode.class, "name"), "site2"), new NodeAttribute<>(StructrApp.key(Site.class, "hostname"), "test2.example.com"));
site1.setProperty(StructrApp.key(Site.class, "visibleToAuthenticatedUsers"), true);
site2.setProperty(StructrApp.key(Site.class, "visibleToAuthenticatedUsers"), true);
site1.setProperty(StructrApp.key(Site.class, "visibleToPublicUsers"), true);
site2.setProperty(StructrApp.key(Site.class, "visibleToPublicUsers"), true);
final Page page1 = Page.createSimplePage(securityContext, "site1page1");
final Page page2 = Page.createSimplePage(securityContext, "site1page2");
final Page page3 = Page.createSimplePage(securityContext, "site2page1");
final Page page4 = Page.createSimplePage(securityContext, "site2page2");
makePublicRecursively(page1);
makePublicRecursively(page2);
makePublicRecursively(page3);
makePublicRecursively(page4);
page1.setProperty(StructrApp.key(Page.class, "position"), 10);
page2.setProperty(StructrApp.key(Page.class, "position"), 10);
page3.setProperty(StructrApp.key(Page.class, "position"), 10);
page4.setProperty(StructrApp.key(Page.class, "position"), 10);
page1.setProperty(StructrApp.key(Page.class, "site"), site1);
page2.setProperty(StructrApp.key(Page.class, "site"), site1);
page3.setProperty(StructrApp.key(Page.class, "site"), site2);
page4.setProperty(StructrApp.key(Page.class, "site"), site2);
tx.success();
} catch (FrameworkException fex) {
fex.printStackTrace();
fail("Unexpected exception");
}
RestAssured.basePath = "";
// tests
RestAssured.given().header("Host", "test1.example.com").expect().statusCode(200).when().get("/site1page1");
RestAssured.given().header("Host", "test1.example.com").expect().statusCode(200).when().get("/site1page2");
RestAssured.given().header("Host", "test1.example.com").expect().statusCode(404).when().get("/site2page1");
RestAssured.given().header("Host", "test1.example.com").expect().statusCode(404).when().get("/site2page2");
RestAssured.given().header("Host", "test2.example.com").expect().statusCode(404).when().get("/site1page1");
RestAssured.given().header("Host", "test2.example.com").expect().statusCode(404).when().get("/site1page2");
RestAssured.given().header("Host", "test2.example.com").expect().statusCode(200).when().get("/site2page1");
RestAssured.given().header("Host", "test2.example.com").expect().statusCode(200).when().get("/site2page2");
}
use of org.structr.web.entity.Site in project structr by structr.
the class SiteTest method test02Sites.
@Test
public void test02Sites() {
try (final Tx tx = app.tx()) {
final Site site1 = createTestNode(Site.class, new NodeAttribute<>(StructrApp.key(AbstractNode.class, "name"), "site1"), new NodeAttribute<>(StructrApp.key(Site.class, "hostname"), "test1.example.com"));
final Site site2 = createTestNode(Site.class, new NodeAttribute<>(StructrApp.key(AbstractNode.class, "name"), "site2"), new NodeAttribute<>(StructrApp.key(Site.class, "hostname"), "test2.example.com"));
site1.setProperty(StructrApp.key(Site.class, "visibleToAuthenticatedUsers"), true);
site2.setProperty(StructrApp.key(Site.class, "visibleToAuthenticatedUsers"), true);
site1.setProperty(StructrApp.key(Site.class, "visibleToPublicUsers"), true);
site2.setProperty(StructrApp.key(Site.class, "visibleToPublicUsers"), true);
final Page page1 = Page.createSimplePage(securityContext, "site1page1");
final Page page2 = Page.createSimplePage(securityContext, "site1page2");
final Page page3 = Page.createSimplePage(securityContext, "site2page1");
final Page page4 = Page.createSimplePage(securityContext, "site2page2");
// makePublicRecursively(page1);
makePublicRecursively(page2);
// makePublicRecursively(page3);
makePublicRecursively(page4);
page1.setProperty(StructrApp.key(Page.class, "position"), 10);
page2.setProperty(StructrApp.key(Page.class, "position"), 10);
page3.setProperty(StructrApp.key(Page.class, "position"), 10);
page4.setProperty(StructrApp.key(Page.class, "position"), 10);
page1.setProperty(StructrApp.key(Page.class, "site"), site1);
page2.setProperty(StructrApp.key(Page.class, "site"), site1);
page3.setProperty(StructrApp.key(Page.class, "site"), site2);
page4.setProperty(StructrApp.key(Page.class, "site"), site2);
tx.success();
} catch (FrameworkException fex) {
fex.printStackTrace();
fail("Unexpected exception");
}
RestAssured.basePath = "";
// tests
RestAssured.given().header("Host", "test1.example.com").expect().statusCode(404).when().get("/site1page1");
RestAssured.given().header("Host", "test1.example.com").expect().statusCode(200).when().get("/site1page2");
RestAssured.given().header("Host", "test1.example.com").expect().statusCode(404).when().get("/site2page1");
RestAssured.given().header("Host", "test1.example.com").expect().statusCode(404).when().get("/site2page2");
RestAssured.given().header("Host", "test2.example.com").expect().statusCode(404).when().get("/site1page1");
RestAssured.given().header("Host", "test2.example.com").expect().statusCode(404).when().get("/site1page2");
RestAssured.given().header("Host", "test2.example.com").expect().statusCode(404).when().get("/site2page1");
RestAssured.given().header("Host", "test2.example.com").expect().statusCode(200).when().get("/site2page2");
}
Aggregations