| /* |
| * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0, which is available at |
| * http://www.eclipse.org/legal/epl-2.0. |
| * |
| * This Source Code may also be made available under the following Secondary |
| * Licenses when the conditions for such availability set forth in the |
| * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, |
| * version 2 with the GNU Classpath Exception, which is available at |
| * https://www.gnu.org/software/classpath/license.html. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 |
| */ |
| |
| package test.web.jsfinjection; |
| import org.testng.annotations.Configuration; |
| import org.testng.annotations.ExpectedExceptions; |
| import org.testng.annotations.Test; |
| import org.testng.annotations.*; |
| import org.testng.Assert; |
| |
| import java.io.*; |
| import java.net.*; |
| import java.util.*; |
| |
| /** |
| * Simple TestNG client for basic WAR containing JSF page with injectited values. |
| * Client checks for two values: injected string and injected number. |
| * If both values are as expected test passes. |
| */ |
| public class JSFInjectionTestNG { |
| |
| private static final String TEST_NAME = |
| "simple-webapp-jsf-injection"; |
| |
| private String strContextRoot="jsfinjection"; |
| |
| static String result = ""; |
| String host=System.getProperty("http.host"); |
| String port=System.getProperty("http.port"); |
| |
| /* |
| *If two asserts are mentioned in one method, then last assert is taken in |
| *to account. |
| *Each method can act as one test within one test suite |
| */ |
| |
| |
| //@Parameters({ "host", "port", "contextroot" }) |
| @Test(groups ={ "pulse"} ) // test method |
| public void injectedValuesTestPage() throws Exception { |
| |
| try { |
| |
| String errorText = ""; |
| boolean testPass = false; |
| |
| String testUrl = "http://" + host + ":" + port + "/"+ strContextRoot + "/jsfHello.jsf"; |
| //echo("URL is: " + testUrl); |
| URL url = new URL(testUrl); |
| //echo("Connecting to: " + url.toString()); |
| HttpURLConnection conn = (HttpURLConnection) url.openConnection(); |
| conn.connect(); |
| int responseCode = conn.getResponseCode(); |
| if ( responseCode != 200 ) { |
| //echo("ERROR: http response code is " + responseCode); |
| errorText = errorText + "ERROR: http response code is " + responseCode + ".\n"; |
| } else { |
| //echo("Connected: " + responseCode); |
| } |
| |
| InputStream is = conn.getInputStream(); |
| BufferedReader input = new BufferedReader(new InputStreamReader(is)); |
| |
| String line = null; |
| String line2 = null; |
| String line3 = null; |
| boolean result=false; |
| String EXPECTED_RESPONSE = "Injected entry"; |
| String DIVIDER = "==="; |
| String PC = "Postconstruct"; |
| while ((line = input.readLine()) != null) { |
| //echo ("LINE:"+line); |
| if (line.indexOf(EXPECTED_RESPONSE)!= -1) { |
| testPass = true; |
| //echo("Received line: " + line); |
| } |
| if (line.indexOf(DIVIDER)!= -1) { |
| line2 = line; |
| //echo("Received line2: " + line2); |
| } |
| if (line.indexOf(PC)!= -1) { |
| line3 = line; |
| //echo("Received line3: " + line3); |
| } |
| } |
| |
| if (! testPass) { |
| echo("ERROR: injection 1 not found"); |
| errorText = errorText + "ERROR: injection 1 not found\n"; |
| } |
| |
| if (line2 != null) { |
| String [] injection2Array = line2.split(DIVIDER); |
| String injectedNumber = injection2Array[1].trim(); |
| //echo("injectedNumber = " + injectedNumber); |
| int num = Integer.parseInt(injectedNumber); |
| |
| if ( num < 0 ) { |
| echo("ERROR: injection 2 is less than zero."); |
| errorText = errorText + "ERROR: injection 2 is less than zero"; |
| testPass = false; |
| } else { |
| echo("Injection2 matched."); |
| } |
| } else { |
| echo("ERROR: line with " + DIVIDER + " not found."); |
| errorText = errorText + "ERROR: line with " + DIVIDER + " not found"; |
| testPass = false; |
| } |
| |
| if (line3 != null) { |
| if (line3.contains("true")) { |
| echo("@PostConstruct worked"); |
| } else { |
| echo("ERROR:@PostConstruct failed"); |
| errorText = errorText + "ERROR: @PostConstruct failed"; |
| testPass = false; |
| } |
| } else { |
| echo("ERROR: line with " + PC + " not found."); |
| errorText = errorText + "ERROR: line with " + PC + " not found"; |
| testPass = false; |
| } |
| |
| Assert.assertEquals(testPass, true, errorText); |
| |
| }catch(Exception e){ |
| echo("ERROR: caught exception!"); |
| e.printStackTrace(); |
| throw new Exception(e); |
| } |
| } |
| |
| public static void echo(String msg) { |
| System.out.println(msg); |
| } |
| } |