<?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"> -->
]>

<!-- This version only tests that the auth.conf file is not
    changed at startup. Issue: 3033. If changed to test an
    end to end scenario, please change this message. -->
<project name="security-authConf" basedir="." default="usage">
  
  &commonSetup;
  &commonBuild;
  &commonRun;
  &commonSecurity;
  <!-- &testProperties; -->

  <property name="provider.jar"
      value="${env.S1AS_HOME}/lib/test-jmac-provider.jar"/>

  <target name="all" depends="init-common">
    <!-- stop server -->
    <antcall target="stopDomain"/>
    <sleep seconds="15"/>
    
    <!-- add auth.conf file and provider jar -->
    <copy file="conffile/auth.conf"
        todir="${admin.domain.dir}/${admin.domain}/config"/>
    <antcall target="build-provider-jar"/>
    
    <!-- start server -->
    <antcall target="startDomain"/>
    
    <!-- quick diff of auth conf file -->
    <length file="conffile/auth.conf" property="length.original"/>
    <length file="${admin.domain.dir}/${admin.domain}/config/auth.conf"
        property="length.new"/>
    <echo message="original auth.conf length: ${length.original}"/>
    <echo message="new auth.conf length: ${length.new}"/>
    <!-- i don't know how to report failure without ending test run. TBD! -->
    <fail>
      <condition>
        <not>
          <length file="${admin.domain.dir}/${admin.domain}/config/auth.conf"
              when="equal"
              length="${length.original}"/>
        </not>
      </condition>
    </fail>
    <echo message="files are of same length. OK"/>
    
    <!-- stop server, clean up, and restart -->
    <antcall target="stopDomain"/>
    <sleep seconds="15"/>
    <delete file="${admin.domain.dir}/${admin.domain}/config/auth.conf"/>
    <delete file="${provider.jar}"/>
    <antcall target="startDomain"/>
  </target>
  
  <!-- build and copy the provider jar file to GF/lib -->
  <target name="build-provider-jar" depends="clean">
    <antcall target="compile-common">
      <param name="src" value="provider"/>
    </antcall>
    <jar destfile="${provider.jar}" basedir="${build.classes.dir}"/>
  </target>
  
  <target name="clean" depends="init-common">
    <delete dir="${build.classes.dir}"/>
    <delete dir="${assemble.dir}"/>
  </target>
  
</project>
