<?xml version="1.0"?>
<!DOCTYPE project [
<!--

    Copyright (c) 2017, 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

-->

<!ENTITY commonSetup SYSTEM "file:./../../../config/properties.xml">
<!ENTITY commonBuild SYSTEM "file:./../../../config/common.xml">
<!ENTITY commonRun SYSTEM "file:./../../../config/run.xml">
<!ENTITY commonSecurity SYSTEM "file:./../common.xml">
<!ENTITY testProperties SYSTEM "./build.properties">
]>


<project name="security-httpMethod" basedir="." default="usage">

    &commonSetup;
    &commonBuild;
    &commonRun;
    &commonSecurity;
    &testProperties;
    
    <target name="all" depends="build, setup, deploy, run, undeploy, unsetup"/>
    <target name="clean" depends="init-common">
        <delete dir="${build.classes.dir}"/>
        <delete dir="${assemble.dir}"/>
    </target>

    <target name="compile" depends="clean">
        <antcall target="compile-common">
            <param name="src" value="web"/>
        </antcall>
    </target>

    <target name="build" depends="compile">
        <antcall target="webclient-war-common">
            <param name="hasWebclient" value="yes" /> 
        </antcall>
    </target>

    <target name="deploy" depends="init-common">
        <antcall target="deploy-war-common">
            <param name="contextroot" value="${appname}"/>
        </antcall>
    </target>

    <target name="run" depends="init-common">
        <antcall target="runweb">
            <param name="servlet" value="TestServlet"/>
            <param name="webuser" value="shingwai"/>
            <param name="webpassword" value="shingwai"/>
            <param name="httpMethod" value="FOO"/>
            <param name="goldenfile" value="goldenfiles/foo.html"/>
            <param name="testcaseid" value="user-auth-with-foo"/>
        </antcall>
        <antcall target="runweb">
            <param name="servlet" value="TestServlet"/>
            <param name="webuser" value="shingwai"/>
            <param name="webpassword" value="shingwai"/>
            <param name="httpMethod" value="GET"/>
            <param name="goldenfile" value="goldenfiles/get.html"/>
            <param name="testcaseid" value="user-auth-with-get"/>
        </antcall>
        <antcall target="runweb-403">
            <param name="servlet" value="TestServlet"/>
            <param name="webuser" value="swchan"/>
            <param name="webpassword" value="swchan"/>
            <param name="httpMethod" value="FOO"/>
            <param name="testcaseid" value="user-with-no-authorization"/>
        </antcall>
        <antcall target="runweb">
            <param name="servlet" value="TestServlet2"/>
            <param name="webuser" value="shingwai"/>
            <param name="webpassword" value="shingwai"/>
            <param name="httpMethod" value="FOO"/>
            <param name="goldenfile" value="goldenfiles/foo.html"/>
            <param name="testcaseid" value="user-auth-with-foo2"/>
        </antcall>
        <antcall target="runweb-403">
            <param name="servlet" value="TestServlet2"/>
            <param name="webuser" value="swchan"/>
            <param name="webpassword" value="swchan"/>
            <param name="httpMethod" value="FOO"/>
            <param name="testcaseid" value="user-with-no-authorization2"/>
        </antcall>
    </target>

    <target name="runweb" depends="init-common">
       <taskdef name="webtest" classname="${webtest.classname}" classpath="${webtest.classpath}" />
       <webtest request="${httpMethod} /security-httpMethod/${servlet} HTTP/1.0"
           debug="9"
           host="${http.host}"
           port="${http.port}"
           authMethod="BASIC"
           userName="${webuser}"
           password="${webpassword}"
           firstTask="true"
           lastTest="true"
           lastCase="true"
           lastTask="true"
           resultFileName="${webtest.report.dir}/security-gtest-results.xml"
           testSession="security-httpMethod"
           requestHeaders="Host:${http.host}:${http.port}"
           goldenFile="${env.APS_HOME}/devtests/security/httpMethod/${goldenfile}"
           testSuiteId="security-httpMethod"
           testSuiteName="security-httpMethod"
           testSuiteDescription="Security Test"
           testId="security-httpMethod"
           testName="security-httpMethod"
           testDescription="Basic JSR 115 test for custom Http Method: ${testcaseid}"
           testCaseId="${testcaseid}"
           testCaseName="${testcaseid}"
           testCaseDescription="Basic JSR 115 test for Http method"
           testStrategy="Basic JSR 115 test for Http method"
       />
    </target>

    <target name="runweb-403" depends="init-common">
       <taskdef name="webtest" classname="${webtest.classname}" classpath="${webtest.classpath}" />
       <webtest request="${httpMethod} /security-httpMethod/TestServlet HTTP/1.0"
           debug="9"
           host="${http.host}"
           port="${http.port}"
           authMethod="BASIC"
           userName="${webuser}"
           password="${webpassword}"
           firstTask="true"
           lastTest="true"
           lastCase="true"
           lastTask="true"
           resultFileName="${webtest.report.dir}/security-gtest-results.xml"
           testSession="security-httpMethod"
           requestHeaders="Host:${http.host}:${http.port}"
           returnCode="HTTP/1.1 403"
           testSuiteId="security-httpMethod"
           testSuiteName="security-httpMethod"
           testSuiteDescription="Security Test"
           testId="security-httpMethod"
           testName="security-httpMethod"
           testDescription="Basic JSR 115 test for custom Http Method: ${testcaseid}"
           testCaseId="${testcaseid}"
           testCaseName="${testcaseid}"
           testCaseDescription="Basic JSR 115 negative test for Http method"
           testStrategy="Basic JSR 115 negative test for Http method"
       />
    </target>

    <target name="undeploy" depends="init-common">
        <antcall target="undeploy-war-common"/>
    </target>

    <target name="usage">
        <antcall target="usage-common"/>
    </target>

    <target name="setup">
        <antcall target="create-user-common">
	    <param name="user" value="shingwai"/>
	    <param name="password" value="shingwai"/>
	    <param name="groups" value="employee"/>
       </antcall>
        <antcall target="create-user-common">
	    <param name="user" value="swchan"/>
	    <param name="password" value="swchan"/>
	    <param name="groups" value="staff"/>
       </antcall>
   <!--   <antcall target="reconfig-common"/>-->
    </target>
 
    <target name="unsetup">
      <!-- remove test users, just cleanup. -->
      <antcall target="delete-user-common">
        <param name="user" value="shingwai"/>
      </antcall>
      <antcall target="delete-user-common">
        <param name="user" value="swchan"/>
      </antcall>
    </target>
</project>
