Since the group-show command doesn't return indirect members, the tabs
for group's indirect members have been reverted to call user-find with
the --in-groups parameter to get the entries.

However, this is only a temporary solution since the user-find command
returns both direct and indirect members (ticket #1273).

The Selenium test for groups has been modified to test nested groups
and verify indirect members. The verification currently will fail due
to the above issue.

--
Endi S. Dewata
From 9127c49c4bece473908425f50b3ec518db7396b0 Mon Sep 17 00:00:00 2001
From: Endi S. Dewata <edew...@redhat.com>
Date: Wed, 1 Jun 2011 13:52:38 -0500
Subject: [PATCH] Temporary fix for indirect member tabs.

Since the group-show command doesn't return indirect members, the tabs
for group's indirect members have been reverted to call user-find with
the --in-groups parameter to get the entries.

However, this is only a temporary solution since the user-find command
returns both direct and indirect members (ticket #1273).

The Selenium test for groups has been modified to test nested groups
and verify indirect members. The verification currently will fail due
to the above issue.
---
 install/ui/associate.js                            |   67 +++++++--
 install/ui/entity.js                               |   10 ++-
 install/ui/search.js                               |   14 +--
 .../test/functional/group-add-nested-groups.html   |   91 ++++++++++++
 .../functional/group-add-nested-member-groups.html |  153 ++++++++++++++++++++
 .../test/functional/group-del-nested-groups.html   |   71 +++++++++
 .../group-remove-nested-member-groups.html         |  133 +++++++++++++++++
 install/ui/test/functional/group-suite.html        |    5 +
 .../group-verify-indirect-member-groups.html       |   93 ++++++++++++
 9 files changed, 612 insertions(+), 25 deletions(-)
 create mode 100644 install/ui/test/functional/group-add-nested-groups.html
 create mode 100644 install/ui/test/functional/group-add-nested-member-groups.html
 create mode 100644 install/ui/test/functional/group-del-nested-groups.html
 create mode 100644 install/ui/test/functional/group-remove-nested-member-groups.html
 create mode 100644 install/ui/test/functional/group-verify-indirect-member-groups.html

diff --git a/install/ui/associate.js b/install/ui/associate.js
index eb4a5a0563872683c2c9d9808deb7e6f013faae4..f7ac1505ef8cd9003f7589db9a40033dcc8fe5f9 100644
--- a/install/ui/associate.js
+++ b/install/ui/associate.js
@@ -707,7 +707,7 @@ IPA.association_facet = function (spec) {
     that.columns = $.ordered_map();
     that.adder_columns = $.ordered_map();
 
-    that.page_length = 20;
+    that.page_length = spec.page_length === undefined ? 20 : spec.page_length;
 
     that.get_column = function(name) {
         return that.columns.get(name);
@@ -1107,21 +1107,62 @@ IPA.association_facet = function (spec) {
     return that;
 };
 
+IPA.indirect_association_facet = function (spec) {
 
-IPA.deleter_dialog_setup = function () {
+    spec = spec || {};
 
-    var that = this;
+    spec.page_length = 0;
+    spec.read_only = true;
 
-    var ul = $('<ul/>');
-    ul.appendTo(that.dialog);
+    var that = IPA.association_facet(spec);
 
-    for (var i=0; i<that.values.length; i++) {
-        $('<li/>',{
-            'text': that.values[i]
-        }).appendTo(ul);
-    }
+    that.refresh = function() {
 
-    $('<p/>', {
-        'text': IPA.messages.search.delete_confirm
-    }).appendTo(that.dialog);
+        function on_success(data, text_status, xhr) {
+
+            that.table.empty();
+
+            var count = data.result.count;
+            if (count === 0) {
+                that.table.summary.text(data.result.summary);
+                return;
+            }
+
+            var results = data.result.result;
+            for (var i=0; i<results.length; i++) {
+                var record = results[i];
+                that.table.add_record(record);
+            }
+
+            if (data.result.truncated) {
+                var message = IPA.messages.search.truncated;
+                message = message.replace('${counter}', data.result.count);
+                that.table.summary.text(message);
+            } else {
+                that.table.summary.text(data.result.summary);
+            }
+        }
+
+        var options = {
+            'all': true
+        };
+
+        var pkey = $.bbq.getState(that.entity_name+'-pkey');
+
+        /* TODO: make a general solution to generate this value */
+        var relationship_filter = 'in_' + that.entity_name;
+        options[relationship_filter] = pkey;
+
+        var command = IPA.command({
+            entity: that.other_entity,
+            method: 'find',
+            options: options,
+            on_success: on_success,
+            on_error: that.on_error
+        });
+
+        command.execute();
+    };
+
+    return that;
 };
diff --git a/install/ui/entity.js b/install/ui/entity.js
index 5df56b1a621c179d5ae2795d9814fcc4b639c240..da5b3ea6030cc8858714edc8c9a12ec3a80a2a68 100644
--- a/install/ui/entity.js
+++ b/install/ui/entity.js
@@ -818,7 +818,15 @@ IPA.entity_builder = function(){
             }
         }
 
-        var factory = spec.factory || IPA.association_facet;
+        var factory = spec.factory;
+        if (!factory) {
+            if (spec.facet_group == 'memberindirect') {
+                factory = IPA.indirect_association_facet;
+            } else {
+                factory = IPA.association_facet;
+            }
+        }
+
         facet = factory(spec);
         entity.add_facet(facet);
 
diff --git a/install/ui/search.js b/install/ui/search.js
index b8fa26017b40813a96fdfdad65a3de6347212304..33eb8c93c80c1c0d0d3d9e3b31a73ee1fda082cf 100644
--- a/install/ui/search.js
+++ b/install/ui/search.js
@@ -298,26 +298,18 @@ IPA.search_facet = function(spec) {
                 that.table.add_record(record);
             }
 
-            var summary = $('span[name=summary]', that.table.tfoot);
             if (data.result.truncated) {
                 var message = IPA.messages.search.truncated;
                 message = message.replace('${counter}', data.result.count);
-                summary.text(message);
+                that.table.summary.text(message);
             } else {
-                summary.text(data.result.summary);
+                that.table.summary.text(data.result.summary);
             }
 
             that.filter.focus();
             that.select_changed();
         }
 
-        function on_error(xhr, text_status, error_thrown) {
-            var summary = $('span[name=summary]', that.table.tfoot).empty();
-            summary.append('<p>Error: '+error_thrown.name+'</p>');
-            summary.append('<p>'+error_thrown.message+'</p>');
-        }
-
-
         var filter = [];
         var current_entity = entity;
         filter.unshift($.bbq.getState(current_entity.name+'-filter'));
@@ -336,7 +328,7 @@ IPA.search_facet = function(spec) {
                 all: that.search_all
             },
             on_success: on_success,
-            on_error: on_error
+            on_error: that.on_error
         });
 
         command.execute();
diff --git a/install/ui/test/functional/group-add-nested-groups.html b/install/ui/test/functional/group-add-nested-groups.html
new file mode 100644
index 0000000000000000000000000000000000000000..7d9618693a3e06a6187c01f73da779dc6ded1f8d
--- /dev/null
+++ b/install/ui/test/functional/group-add-nested-groups.html
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case";>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="https://localhost/"; />
+<title>Add Group</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Add Group</td></tr>
+</thead><tbody>
+<tr>
+	<td>open</td>
+	<td>/ipa/ui/#navigation=identity&amp;identity=group</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementNotPresent</td>
+	<td>css=.entity[name='group'] .facet[name='search'] input[value='testgroup2']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementNotPresent</td>
+	<td>css=.entity[name='group'] .facet[name='search'] input[value='testgroup3']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>link=Add</td>
+	<td></td>
+</tr>
+<tr>
+	<td>type</td>
+	<td>cn</td>
+	<td>testgroup2</td>
+</tr>
+<tr>
+	<td>type</td>
+	<td>description</td>
+	<td>Test Group 2</td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>//button[2]</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>type</td>
+	<td>cn</td>
+	<td>testgroup3</td>
+</tr>
+<tr>
+	<td>type</td>
+	<td>description</td>
+	<td>Test Group 3</td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>//button[1]</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementPresent</td>
+	<td>css=.entity[name='group'] .facet[name='search'] input[value='testgroup2']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementPresent</td>
+	<td>css=.entity[name='group'] .facet[name='search'] input[value='testgroup3']</td>
+	<td></td>
+</tr>
+</tbody></table>
+</body>
+</html>
diff --git a/install/ui/test/functional/group-add-nested-member-groups.html b/install/ui/test/functional/group-add-nested-member-groups.html
new file mode 100644
index 0000000000000000000000000000000000000000..99b5ff46db41eb1f79965e235e1f3da3811bde74
--- /dev/null
+++ b/install/ui/test/functional/group-add-nested-member-groups.html
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case";>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="https://localhost/"; />
+<title>Add Member User</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Add Member User</td></tr>
+</thead><tbody>
+<tr>
+	<td>open</td>
+	<td>/ipa/ui/#navigation=identity&amp;identity=group</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementPresent</td>
+	<td>css=.entity[name='group'] .facet[name='search'] input[value='testgroup']</td>
+	<td></td>
+</tr>
+<!--Add testgroup2 into testgroup-->
+<tr>
+	<td>click</td>
+	<td>link=testgroup</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>member_group</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>css=.entity[name='group'] .facet[name='member_group'] a[title='Enroll']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>css=.ui-dialog div[name='available'] input[value='testgroup2']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>link=&gt;&gt;</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>//button[@type='button']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementPresent</td>
+	<td>css=.entity[name='group'] .facet[name='member_group'] input[value='testgroup2']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>css=.entity[name='group'] .back-link</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<!--Add testgroup3 into testgroup2-->
+<tr>
+	<td>click</td>
+	<td>link=testgroup2</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>member_group</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>css=.entity[name='group'] .facet[name='member_group'] a[title='Enroll']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>css=.ui-dialog div[name='available'] input[value='testgroup3']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>link=&gt;&gt;</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>//button[@type='button']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementPresent</td>
+	<td>css=.entity[name='group'] .facet[name='member_group'] input[value='testgroup3']</td>
+	<td></td>
+</tr>
+</tbody></table>
+</body>
+</html>
diff --git a/install/ui/test/functional/group-del-nested-groups.html b/install/ui/test/functional/group-del-nested-groups.html
new file mode 100644
index 0000000000000000000000000000000000000000..109908f63528a436879c41415f124f6a6327b142
--- /dev/null
+++ b/install/ui/test/functional/group-del-nested-groups.html
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case";>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="https://localhost/"; />
+<title>Delete Group</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Delete Group</td></tr>
+</thead><tbody>
+<tr>
+	<td>open</td>
+	<td>/ipa/ui/#navigation=identity&amp;identity=group</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementPresent</td>
+	<td>css=.entity[name='group'] .facet[name='search'] input[value='testgroup2']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementPresent</td>
+	<td>css=.entity[name='group'] .facet[name='search'] input[value='testgroup3']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>//input[@name='select' and @value='testgroup2']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>//input[@name='select' and @value='testgroup3']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>link=Delete</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>//button[@type='button']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementNotPresent</td>
+	<td>css=.entity[name='group'] .facet[name='search'] input[value='testgroup2']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementNotPresent</td>
+	<td>css=.entity[name='group'] .facet[name='search'] input[value='testgroup3']</td>
+	<td></td>
+</tr>
+</tbody></table>
+</body>
+</html>
diff --git a/install/ui/test/functional/group-remove-nested-member-groups.html b/install/ui/test/functional/group-remove-nested-member-groups.html
new file mode 100644
index 0000000000000000000000000000000000000000..3f57bd7ced3339dc5085df46765b533cb0c38d0d
--- /dev/null
+++ b/install/ui/test/functional/group-remove-nested-member-groups.html
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case";>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="https://localhost/"; />
+<title>Delete Member User</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Delete Member User</td></tr>
+</thead><tbody>
+<tr>
+	<td>open</td>
+	<td>/ipa/ui/#navigation=identity&amp;identity=group</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementPresent</td>
+	<td>css=.entity[name='group'] .facet[name='search'] input[value='testgroup']</td>
+	<td></td>
+</tr>
+<!--Delete testgroup3 from testgroup2-->
+<tr>
+	<td>click</td>
+	<td>link=testgroup2</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>member_group</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>css=.entity[name='group'] .facet[name='member_group'] input[value='testgroup3']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>css=.entity[name='group'] .facet[name='member_group'] a[title='Delete']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>//button[1]</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementNotPresent</td>
+	<td>css=.entity[name='group'] .facet[name='member_group'] input[value='testgroup3']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>css=.entity[name='group'] .back-link</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<!--Delete testgroup2 from testgroup-->
+<tr>
+	<td>click</td>
+	<td>link=testgroup</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>member_group</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>css=.entity[name='group'] .facet[name='member_group'] input[value='testgroup2']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>css=.entity[name='group'] .facet[name='member_group'] a[title='Delete']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>//button[1]</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementNotPresent</td>
+	<td>css=.entity[name='group'] .facet[name='member_group'] input[value='testgroup2']</td>
+	<td></td>
+</tr>
+</tbody></table>
+</body>
+</html>
diff --git a/install/ui/test/functional/group-suite.html b/install/ui/test/functional/group-suite.html
index 493d909118accf2510b815d080bf38ff1742b7b6..eba014c78ae0c57a96210e23067c8df314064696 100644
--- a/install/ui/test/functional/group-suite.html
+++ b/install/ui/test/functional/group-suite.html
@@ -15,6 +15,11 @@
 <tr><td><a href="group-add-member-user.html">Add Member User</a></td></tr>
 <tr><td><a href="group-remove-member-user.html">Delete Member User</a></td></tr>
 <tr><td><a href="user-del.html">Delete User</a></td></tr>
+<tr><td><a href="group-add-nested-groups.html">Add Nested Groups</a></td></tr>
+<tr><td><a href="group-add-nested-member-groups.html">Add Nested Member Groups</a></td></tr>
+<tr><td><a href="group-verify-indirect-member-groups.html">Verify Indirect Member Goups</a></td></tr>
+<tr><td><a href="group-remove-nested-member-groups.html">Delete Nested Member Groups</a></td></tr>
+<tr><td><a href="group-del-nested-groups.html">Delete Nested Groups</a></td></tr>
 <tr><td><a href="group-del.html">Delete Group</a></td></tr>
 </tbody></table>
 </body>
diff --git a/install/ui/test/functional/group-verify-indirect-member-groups.html b/install/ui/test/functional/group-verify-indirect-member-groups.html
new file mode 100644
index 0000000000000000000000000000000000000000..a7a9d2577881a8c98214d840e3155b8213e9ee2a
--- /dev/null
+++ b/install/ui/test/functional/group-verify-indirect-member-groups.html
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case";>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="https://localhost/"; />
+<title>Add Member User</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Add Member User</td></tr>
+</thead><tbody>
+<tr>
+	<td>open</td>
+	<td>/ipa/ui/#navigation=identity&amp;identity=group</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<!--Verify indirect members in testgroup-->
+<tr>
+	<td>click</td>
+	<td>link=testgroup</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>memberindirect_group</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementNotPresent</td>
+	<td>css=.entity[name='group'] .facet[name='memberindirect_group'] input[value='testgroup2']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementPresent</td>
+	<td>css=.entity[name='group'] .facet[name='memberindirect_group'] input[value='testgroup3']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>css=.entity[name='group'] .back-link</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<!--Verify indirect members in testgroup2-->
+<tr>
+	<td>click</td>
+	<td>link=testgroup2</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>click</td>
+	<td>memberindirect_group</td>
+	<td></td>
+</tr>
+<tr>
+	<td>waitForNotVisible</td>
+	<td>//span[@id='header-network-activity-indicator']</td>
+	<td></td>
+</tr>
+<tr>
+	<td>verifyElementNotPresent</td>
+	<td>css=.entity[name='group'] .facet[name='memberindirect_group'] input[value='testgroup3']</td>
+	<td></td>
+</tr>
+</tbody></table>
+</body>
+</html>
-- 
1.7.4

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to