<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2019, 2021 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,
    or the Eclipse Distribution License v. 1.0 which is available at
    http://www.eclipse.org/org/documents/edl-v10.php.

    SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause

-->

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>

    <name>EclipseLink Oracle Extension Test</name>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.oracle.test</artifactId>
    <packaging>jar</packaging>

    <parent>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.parent</artifactId>
        <version>4.0.0-SNAPSHOT</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>

    <properties>
        <!--Properties used for test resources filtering/replacement-->
        <pa.connection.user>PAS_CONN</pa.connection.user>
        <pa.connection.password>${db.pwd}2</pa.connection.password>
        <pa.proxyuser>PAS_PROXY</pa.proxyuser>
        <pa.proxyuser.password>password</pa.proxyuser.password>
        <pa.proxyuser2>${pa.proxyuser}2</pa.proxyuser2>
        <pa.proxyuser2.password>${pa.proxyuser.password}2</pa.proxyuser2.password>

        <test-skip-oracle-extension>${skipTests}</test-skip-oracle-extension>
    </properties>

    <dependencies>
        <!--Other modules-->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.oracle</artifactId>
            <scope>test</scope>
        </dependency>
        <!--API dependecies-->
        <dependency>
            <groupId>jakarta.transaction</groupId>
            <artifactId>jakarta.transaction-api</artifactId>
            <optional>true</optional>
            <scope>test</scope>
        </dependency>
        <!--Other libraries dependencies-->
        <!--Oracle proprietary dependencies-->
        <!--JDBC driver dependencies-->
        <dependency>
            <groupId>com.oracle.ojdbc</groupId>
            <artifactId>ojdbc8</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.oracle.ojdbc</groupId>
            <artifactId>xmlparserv2</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.oracle.ojdbc</groupId>
            <artifactId>ucp</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.oracle.ojdbc</groupId>
            <artifactId>xdb</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.oracle.ojdbc</groupId>
            <artifactId>dms</artifactId>
            <scope>test</scope>
        </dependency>
        <!--Test dependencies-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <!--API dependecies-->
        <dependency>
            <groupId>javax.transaction</groupId>
            <artifactId>javax.transaction-api</artifactId>
            <version>1.3</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.jms</groupId>
            <artifactId>javax.jms-api</artifactId>
            <version>2.0.1</version>
            <scope>test</scope>
        </dependency>
        <!--Oracle proprietary dependencies-->
        <dependency>
            <groupId>com.oracle.database.messaging</groupId>
            <artifactId>aqapi</artifactId>
            <scope>test</scope>
        </dependency>
        <!--Other modules-->
        <!--EclipseLink JPA-->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa</artifactId>
            <scope>test</scope>
        </dependency>
        <!--EclipseLink Core test framework-->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.core.test.framework</artifactId>
            <scope>test</scope>
        </dependency>
        <!--EclipseLink Core test classes-->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.core.test</artifactId>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>
        <!--EclipseLink JPA test framework-->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa.test.framework</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
            <!--Pack test classes due dependency to other modules (Oracle Spatial Test)-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <executions>
                    <execution>
                        <id>jar-tests</id>
                        <phase>package</phase>
                        <goals>
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>jar-test-sources</id>
                        <phase>package</phase>
                        <goals>
                            <goal>test-jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-to-distribution-module</id>
                        <phase>install</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <artifactItems>
                        <artifactItem>
                            <groupId>${project.groupId}</groupId>
                            <artifactId>${project.artifactId}</artifactId>
                            <version>${project.version}</version>
                            <type>test-jar</type>
                            <classifier>tests</classifier>
                            <destFileName>${project.artifactId}-tests.jar</destFileName>
                        </artifactItem>
                        <artifactItem>
                            <groupId>${project.groupId}</groupId>
                            <artifactId>${project.artifactId}</artifactId>
                            <version>${project.version}</version>
                            <type>test-jar</type>
                            <classifier>test-sources</classifier>
                            <destFileName>${project.artifactId}-test-sources.jar</destFileName>
                        </artifactItem>
                    </artifactItems>
                    <outputDirectory>${distribution.directory}</outputDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <!--Oracle Extension related profiles-->
        <profile>
            <id>oracle</id>
            <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <configuration>
                        <dependenciesToScan>
                            <dependency>org.eclipse.persistence:org.eclipse.persistence.core.test.framework</dependency>
                        </dependenciesToScan>
                        <!--Set system properties required for tests-->
                        <systemPropertiesFile>${test.properties.file}</systemPropertiesFile>
                        <workingDirectory>${project.build.directory}/test-run</workingDirectory>
                    </configuration>
                    <executions>
                        <execution>
                            <id>clear-database</id>
                            <phase>process-test-resources</phase>
                            <goals>
                                <goal>integration-test</goal>
                            </goals>
                            <configuration>
                                <skipTests>${test-skip-oracle-extension}</skipTests>
                                <reportNameSuffix>clear-database</reportNameSuffix>
                                <includes>
                                    <test>org.eclipse.persistence.testing.tests.ClearDatabaseSchemaTest</test>
                                </includes>
                            </configuration>
                        </execution>
                        <execution>
                            <id>test-oracle-extension</id>
                            <goals>
                                <goal>integration-test</goal>
                            </goals>
                            <configuration>
                                <skipTests>${test-skip-oracle-extension}</skipTests>
                                <reportNameSuffix>test-oracle-extension</reportNameSuffix>
                                <argLine>-Djava.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory</argLine>
                                <systemPropertyVariables>
                                    <pa.connection.user>${pa.connection.user}</pa.connection.user>
                                    <pa.connection.password>${pa.connection.password}</pa.connection.password>
                                    <pa.proxyuser>${pa.proxyuser}</pa.proxyuser>
                                    <pa.proxyuser.password>${pa.proxyuser.password}</pa.proxyuser.password>
                                    <pa.proxyuser2>${pa.proxyuser2}</pa.proxyuser2>
                                    <pa.proxyuser2.password>${pa.proxyuser2.password}</pa.proxyuser2.password>
                                    <!--Override db.platform system property loaded from file.
                                    For Oracle DB Extension tests is required: org.eclipse.persistence.platform.database.oracle.Oracle12Platform
                                    instead of: org.eclipse.persistence.platform.database.Oracle12Platform-->
                                    <db.platform>${db.platform.oracle.ext}</db.platform>
                                </systemPropertyVariables>
                                <includes>
                                    <include>org.eclipse.persistence.testing.tests.OracleTestModel</include>
                                    <include>org.eclipse.persistence.testing.tests.xdb.XDBTestModel</include>
                                    <include>org.eclipse.persistence.testing.tests.xdb.XDBTestModelMWIntegration</include>
                                    <include>org.eclipse.persistence.testing.tests.unwrappedconnection.UnwrapConnectionXDBTestModel</include>
                                </includes>
                            </configuration>
                        </execution>
                        <execution>
                            <id>verify-integration-tests</id>
                            <goals>
                                <goal>verify</goal>
                            </goals>
                            <configuration>
                                <skip>${integration.test.skip.verify}</skip>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <!--This plugin sql-maven-plugin must be after maven-surefire-plugin to call dbteardown*.sql scripts after tests-->
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>sql-maven-plugin</artifactId>
                    <!-- common configuration shared by all executions -->
                    <configuration>
                        <username>${db.sys.user} as sysdba</username>
                        <password>${db.sys.pwd}</password>
                        <autocommit>true</autocommit>
                        <onError>continue</onError>
                        <!--all executions are ignored if -Dmaven.test.skip=true-->
                        <skip>${test-skip-oracle-extension}</skip>
                    </configuration>
                    <executions>
                        <!-- create proxy user and grant permissions -->
                        <execution>
                            <id>setup-connuser</id>
                            <phase>process-test-resources</phase>
                            <goals>
                                <goal>execute</goal>
                            </goals>
                            <configuration>
                                <sqlCommand>
                                    DROP USER ${pa.connection.user} CASCADE;

                                    CREATE USER ${pa.connection.user} IDENTIFIED BY ${pa.connection.password} ACCOUNT UNLOCK;
                                    GRANT CONNECT TO ${pa.connection.user};
                                    GRANT RESOURCE TO ${pa.connection.user};
                                    GRANT CREATE SESSION TO ${pa.connection.user};
                                    GRANT UNLIMITED TABLESPACE TO ${pa.connection.user};
                                    GRANT CREATE ANY VIEW TO ${pa.connection.user};
                                    GRANT CREATE ANY context TO ${pa.connection.user};
                                    GRANT DROP ANY context TO ${pa.connection.user};
                                    GRANT EXECUTE ON dbms_flashback TO ${pa.connection.user};
                                    GRANT EXECUTE ON dbms_rls TO ${pa.connection.user};
                                    GRANT EXECUTE ON dbms_session TO ${pa.connection.user};
                                    GRANT change notification TO ${pa.connection.user};
                                    GRANT CREATE ANY directory TO ${pa.connection.user};
                                    GRANT DROP ANY directory TO ${pa.connection.user};
                                </sqlCommand>
                            </configuration>
                        </execution>
                        <execution>
                            <id>setup-proxy-authentication</id>
                            <phase>process-test-resources</phase>
                            <goals>
                                <goal>execute</goal>
                            </goals>
                            <configuration>
                                <sqlCommand>
                                    DROP USER ${pa.proxyuser} CASCADE;
                                    DROP USER ${pa.proxyuser2} CASCADE;

                                    CREATE USER ${pa.proxyuser} IDENTIFIED BY ${pa.proxyuser.password} ACCOUNT UNLOCK;
                                    CREATE USER ${pa.proxyuser2} IDENTIFIED BY ${pa.proxyuser2.password} ACCOUNT UNLOCK;
                                    GRANT UNLIMITED TABLESPACE TO ${pa.proxyuser};
                                    GRANT UNLIMITED TABLESPACE TO ${pa.proxyuser2};
                                    GRANT CONNECT TO ${pa.proxyuser};
                                    GRANT CONNECT TO ${pa.proxyuser2};
                                    GRANT RESOURCE TO ${pa.proxyuser};
                                    GRANT CREATE SESSION TO ${pa.proxyuser};
                                    ALTER USER ${pa.proxyuser} GRANT CONNECT THROUGH ${pa.connection.user};
                                    ALTER USER ${pa.proxyuser2} GRANT CONNECT THROUGH ${pa.connection.user};
                                </sqlCommand>
                            </configuration>
                        </execution>
                        <execution>
                            <id>setup-proxy-authentication-create-employee-table</id>
                            <phase>process-test-resources</phase>
                            <goals>
                                <goal>execute</goal>
                            </goals>
                            <configuration>
                                <username>${pa.connection.user}</username>
                                <password>${pa.connection.password}</password>
                                <sqlCommand>
                                    CREATE TABLE JPA_PROXY_EMPLOYEE (
                                                                        EMP_ID NUMBER (15) NOT NULL,
                                                                        F_NAME VARCHAR2 (40) NULL,
                                                                        L_NAME VARCHAR2 (40) NULL,
                                                                        PRIMARY KEY (EMP_ID)
                                    );
                                    CREATE TABLE PROXY_EMPLOYEE_SEQ (
                                                                        SEQ_NAME  VARCHAR2 (50) NOT NULL,
                                                                        SEQ_COUNT NUMBER (38) NULL,
                                                                        PRIMARY KEY (SEQ_NAME)
                                    );
                                    INSERT INTO PROXY_EMPLOYEE_SEQ (SEQ_NAME, SEQ_COUNT) VALUES ('PROXY_EMPLOYEE_SEQ', 1);
                                </sqlCommand>
                            </configuration>
                        </execution>
                        <execution>
                            <id>setup-proxy-authentication-create-phonenumber-table</id>
                            <phase>process-test-resources</phase>
                            <goals>
                                <goal>execute</goal>
                            </goals>
                            <configuration>
                                <username>${pa.proxyuser}</username>
                                <password>${pa.proxyuser.password}</password>
                                <sqlCommand>
                                    CREATE TABLE PROXY_PHONENUMBER (
                                                                       OWNER_ID  NUMBER (15) NOT NULL,
                                                                       TYPE      VARCHAR2 (15) NOT NULL,
                                                                       AREA_CODE VARCHAR2 (3) NULL,
                                                                       NUMB      VARCHAR2 (8) NULL,
                                                                       PRIMARY KEY (OWNER_ID, TYPE)
                                    );
                                </sqlCommand>
                            </configuration>
                        </execution>
                        <execution>
                            <id>grant-permissions-to-proxyuser</id>
                            <phase>process-test-resources</phase>
                            <goals>
                                <goal>execute</goal>
                            </goals>
                            <configuration>
                                <sqlCommand>
                                    GRANT ALTER ON ${pa.connection.user}.JPA_PROXY_EMPLOYEE TO ${pa.proxyuser};
                                    GRANT DELETE ON ${pa.connection.user}.JPA_PROXY_EMPLOYEE TO ${pa.proxyuser};
                                    GRANT INSERT ON ${pa.connection.user}.JPA_PROXY_EMPLOYEE TO ${pa.proxyuser};
                                    GRANT SELECT ON ${pa.connection.user}.JPA_PROXY_EMPLOYEE TO ${pa.proxyuser};
                                    GRANT UPDATE ON ${pa.connection.user}.JPA_PROXY_EMPLOYEE TO ${pa.proxyuser};
                                    GRANT INDEX ON ${pa.connection.user}.JPA_PROXY_EMPLOYEE TO ${pa.proxyuser};

                                    GRANT ALTER ON ${pa.connection.user}.PROXY_EMPLOYEE_SEQ TO ${pa.proxyuser};
                                    GRANT DELETE ON ${pa.connection.user}.PROXY_EMPLOYEE_SEQ TO ${pa.proxyuser};
                                    GRANT INSERT ON ${pa.connection.user}.PROXY_EMPLOYEE_SEQ TO ${pa.proxyuser};
                                    GRANT SELECT ON ${pa.connection.user}.PROXY_EMPLOYEE_SEQ TO ${pa.proxyuser};
                                    GRANT UPDATE ON ${pa.connection.user}.PROXY_EMPLOYEE_SEQ TO ${pa.proxyuser};
                                    GRANT INDEX ON ${pa.connection.user}.PROXY_EMPLOYEE_SEQ TO ${pa.proxyuser};
                                </sqlCommand>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
            </build>
        </profile>
        <profile>
            <id>test-oracle-extension</id>
            <properties>
                <test-skip-oracle-extension>false</test-skip-oracle-extension>
            </properties>
        </profile>
    </profiles>
</project>
