/*
 * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */

/*
 * $Id: URLClient.java 62525 2011-04-15 12:14:31Z dougd $
 */
package com.sun.ts.tests.jsf.api.javax_faces.factoryfinder.service;

import com.sun.javatest.Status;
import com.sun.ts.tests.common.webclient.http.HttpRequest;
import com.sun.ts.tests.common.webclient.http.HttpResponse;
import com.sun.ts.tests.jsf.common.client.AbstractUrlClient;

import java.io.IOException;
import java.io.PrintWriter;

public class URLClient extends AbstractUrlClient {

    private static final String CONTEXT_ROOT = "/jsf_service_web";

    public static void main(String[] args) {
        URLClient theTests = new URLClient();
        Status s = theTests.run(args,
                new PrintWriter(System.out),
                new PrintWriter(System.err));
        s.exit();
    }

    public Status run(String args[], PrintWriter out, PrintWriter err) {
        setContextRoot(CONTEXT_ROOT);
        setServletName(DEFAULT_SERVLET_NAME);
        return super.run(args, out, err);
    }

    /*
     *   @class.setup_props: webServerHost; webServerPort; ts_home;
     */
    /*
     *   @testName:  getFactoryServiceTest
     *   @assertion_ids: JSF:JAVADOC:7; JSF:JAVADOC:14
     *   @test_Strategy: Validate that if a Factory is stored in the 
     *                   META-INF/services/{factory-class-name} resource is 
     *                   visible to the web application class loader for the 
     *                   calling application.
     * 
     */
    public void getFactoryServiceTest() throws Fault {

        String request = GET + CONTEXT_ROOT +
                "/TestServlet?testname=getFactoryServiceTest " + HTTP10;

        System.out.println("REQUEST LINE: " + request);

        HttpRequest req = new HttpRequest(request, _hostname, _port);
        HttpResponse res;

        try {
            res = req.execute();
            if (!res.getResponseBodyAsString().contains("PASSED")) {
                System.out.println("RESPONSE: " +
                        res.getResponseBodyAsString());
                throw new Fault("[BaseUrlClient] getFactoryServiceTest" +
                        " failed!  Check output for cause of failure.");
            } else {
                System.out.println("RESPONSE: " + 
                        res.getResponseBodyAsString());
            }

        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }
}