<?xml version="1.0" encoding="UTF-8"?>
<!--
 *   Licensed to the Apache Software Foundation (ASF) under one
 *   or more contributor license agreements.  See the NOTICE file
 *   distributed with this work for additional information
 *   regarding copyright ownership.  The ASF licenses this file
 *   to you under the Apache License, Version 2.0 (the
 *   "License"); you may not use this file except in compliance
 *   with the License.  You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing,
 *   software distributed under the License is distributed on an
 *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 *   KIND, either express or implied.  See the License for the
 *   specific language governing permissions and limitations
 *   under the License.
-->
<project basedir="../../../../../../../ldap/setup" default="all" name="Fortress LDAP Group Test 001 Data">
    <taskdef classname="org.apache.directory.fortress.core.ant.FortressAntTask" name="GroupTest" >
        <classpath path="${java.class.path}"/>
    </taskdef>

    <target name="all">
        <GroupTest>

            <addgroup>
                <group name="test301" protocol="test1"  description="Test Group 001" members="guser11" properties="key1=value1, key2=val 2, key3='VAL 3'" />
                <group name="test302" protocol="test2"  description="Test Group 002" members="guser11,guser12" properties="key1=value1, key2=val 2, key3='VAL 3'" />
            </addgroup>

            <delgroup>
                <group name="test301"/>
                <group name="test302"/>
            </delgroup>

        </GroupTest>
    </target>
</project>
