@Test // KG-2250/KG-2251 public void testWrongTruststoreType() throws Exception { boolean sawExpectedEx = false; String expectedLogMessage = "Exception .* caught loading file .*truststore-JCEKS.db.* you may need to specify " + "\"<type>JCEKS</type>\" in the gateway configuration file"; String expected = "Invalid keystore format"; LogMessageInspector inspector = LogMessageInspector.create(Gateway.class); try { configFile = createTempFileFromResource( "org/kaazing/gateway/server/config/parse/data/gateway-config-wrong-truststore" + "-type.xml"); GatewayConfigDocument doc = parser.parse(configFile); Assert.assertNotNull(doc); resolver.resolve(doc); } catch (IOException e) { if (e.getMessage().contains(expected)) { sawExpectedEx = true; } final List<LoggingEvent> grepResult = inspector.grep(org.apache.log4j.Level.ERROR, expectedLogMessage); Assert.assertEquals("Expected to find a matching error message", 1, grepResult.size()); } Assert.assertTrue( String.format("Did not see expected IllegalArgumentException with message '%s'", expected), sawExpectedEx); }
@Test public void testLowerCaseOfResolvedServices() throws Exception { configFile = createTempFileFromResource( "org/kaazing/gateway/server/context/parse/data/gateway-config-mixedcase.xml"); GatewayConfigDocument doc = parser.parse(configFile); GatewayContext ctx = resolver.resolve(doc); Collection<? extends ServiceContext> services = ctx.getServices(); for (ServiceContext service : services) { // validate that the accepts have lower-case host names Collection<String> acceptURIs = service.getAccepts(); for (String acceptURI : acceptURIs) { Assert.assertTrue( URIUtils.getHost(acceptURI).equals(URIUtils.getHost(acceptURI).toLowerCase())); } // validate that the cross-site-constraints have lower-case host names Map<String, ? extends Map<String, ? extends CrossSiteConstraintContext>> crossSiteConstraints = service.getCrossSiteConstraints(); for (String key : crossSiteConstraints.keySet()) { Map<String, ? extends CrossSiteConstraintContext> crossSiteConstraintsByURI = crossSiteConstraints.get(key); for (CrossSiteConstraintContext crossSiteConstraint : crossSiteConstraintsByURI.values()) { String allowOrigin = crossSiteConstraint.getAllowOrigin(); if (!"*".equals(allowOrigin)) { URI originURI = URI.create(allowOrigin); Assert.assertTrue(originURI.getHost().equals(originURI.getHost().toLowerCase())); } } } } }
// See http://jira.kaazing.wan/browse/KG-7237 @Test(expected = RuntimeException.class) public void shouldNotResolveDuplicateRealms() throws Exception { configFile = createTempFileFromResource( "org/kaazing/gateway/server/context/parse/data/gateway-config-duplicate-realms.xml"); GatewayConfigDocument doc = parser.parse(configFile); Assert.assertNotNull(doc); resolver.resolve(doc); }
@Test // KG-5510 public void shouldAcceptTrustStoreFileAbsolutePath() throws Exception { configFile = createTempFileFromResource( "org/kaazing/gateway/server/context/parse/data/gateway-config-abs-path-security" + "-files.xml", "keystore.db", "keystore.pw", trustStoreFile.getAbsolutePath()); GatewayConfigDocument doc = parser.parse(configFile); Assert.assertNotNull(doc); resolver.resolve(doc); }
// NOTE: this relies on org.kaazing.gateway.transport.ws.extension.WebSocketExtensionFactorySpi // and org.kaazing.gateway.transport.TransportFactorySpi in src/test/META-INF/services @Test public void shouldInjectResourcesIntoTransportExtensions() throws Exception { configFile = createTempFileFromResource("gateway/conf/gateway-config-test-transport.xml"); GatewayConfigDocument doc = parser.parse(configFile); GatewayContext ctx = resolver.resolve(doc); DefaultTransportContext transport = ctx.getTransportForScheme("ws"); TestAcceptor acceptor = (TestAcceptor) transport.getAcceptor(); TestTransportExtension extension = (TestTransportExtension) acceptor.extensions.iterator().next(); assertNotNull(extension.getTransportFactory()); assertNotNull(extension.getResourceAddressFactory()); assertTrue(extension.getTransportFactory() instanceof TransportFactory); assertTrue(extension.getResourceAddressFactory() instanceof ResourceAddressFactory); }