/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.cxf.javascript; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.nio.charset.Charset; import java.util.logging.Logger; import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.endpoint.Endpoint; import org.apache.cxf.frontend.ServerFactoryBean; import org.apache.cxf.test.AbstractCXFSpringTest; import org.apache.cxf.testutil.common.TestUtil; import org.junit.Before; import org.junit.Test; import org.springframework.context.support.GenericApplicationContext; /** * */ public class QueryHandlerTest extends AbstractCXFSpringTest { private static final Charset UTF8 = Charset.forName("utf-8"); private static final Logger LOG = LogUtils.getL7dLogger(QueryHandlerTest.class); private Endpoint hwEndpoint; private Endpoint dlbEndpoint; private Endpoint hwgEndpoint; public QueryHandlerTest() throws Exception { super(); } /** {@inheritDoc}*/ @Override protected void additionalSpringConfiguration(GenericApplicationContext context) throws Exception { // we don't need any. } /** {@inheritDoc}*/ @Override protected String[] getConfigLocations() { TestUtil.getNewPortNumber("TestPort"); return new String[] {"classpath:HelloWorldDocLitBeans.xml", "classpath:DocLitBareClientTestBeans.xml", "classpath:HelloWorldGreeterBeans.xml"}; } @Before public void before() { ServerFactoryBean serverFactoryBean = getBean(ServerFactoryBean.class, "hw-service-endpoint"); hwEndpoint = serverFactoryBean.create().getEndpoint(); serverFactoryBean = getBean(ServerFactoryBean.class, "hwg-service-endpoint"); hwgEndpoint = serverFactoryBean.create().getEndpoint(); serverFactoryBean = getBean(ServerFactoryBean.class, "dlb-service-endpoint"); dlbEndpoint = serverFactoryBean.create().getEndpoint(); } private String getStringFromURL(URL url) throws IOException { InputStream jsStream = url.openStream(); return readStringFromStream(jsStream); } private String readStringFromStream(InputStream jsStream) throws IOException { InputStreamReader isr = new InputStreamReader(jsStream, UTF8); BufferedReader in = new BufferedReader(isr); String line = in.readLine(); StringBuilder js = new StringBuilder(); while (line != null) { String[] tok = line.split("\\s"); for (int x = 0; x < tok.length; x++) { String token = tok[x]; js.append(" " + token); } line = in.readLine(); } return js.toString(); } @Test public void hwQueryTest() throws Exception { URL endpointURL = new URL(hwEndpoint.getEndpointInfo().getAddress() + "?js"); String js = getStringFromURL(endpointURL); assertNotSame(0, js.length()); } @Test public void dlbQueryTest() throws Exception { LOG.finest("logged to avoid warning on LOG"); URL endpointURL = new URL(dlbEndpoint.getEndpointInfo().getAddress() + "?js"); URLConnection connection = endpointURL.openConnection(); assertEquals("application/javascript;charset=UTF-8", connection.getContentType()); InputStream jsStream = connection.getInputStream(); String js = readStringFromStream(jsStream); assertNotSame("", js); } @Test public void utilsTest() throws Exception { URL endpointURL = new URL(dlbEndpoint.getEndpointInfo().getAddress() + "?js&nojsutils"); URLConnection connection = endpointURL.openConnection(); assertEquals("application/javascript;charset=UTF-8", connection.getContentType()); InputStream jsStream = connection.getInputStream(); String jsString = readStringFromStream(jsStream); assertFalse(jsString.contains("function CxfApacheOrgUtil")); } // this is in here since we need to use the query handler to perform the test. @org.junit.Ignore @Test public void namespacePrefixTest() throws Exception { URL endpointURL = new URL(hwgEndpoint.getEndpointInfo().getAddress() + "?js"); String js = getStringFromURL(endpointURL); assertTrue(js.contains("hg_Greeter")); } }