summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2011-06-01 13:52:38 -0500
committerAdam Young <ayoung@redhat.com>2011-06-02 20:09:07 -0400
commit34c5d996d760abeaede782253931ed7bc36320cc (patch)
tree27d4556fbafab47fb40f0f893d28f784d7cf6410
parent7486a332211ed13318c0a689657cb4ff7e7d25a3 (diff)
downloadfreeipa-34c5d996d760abeaede782253931ed7bc36320cc.tar.gz
freeipa-34c5d996d760abeaede782253931ed7bc36320cc.tar.xz
freeipa-34c5d996d760abeaede782253931ed7bc36320cc.zip
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.
-rw-r--r--install/ui/associate.js67
-rw-r--r--install/ui/entity.js10
-rw-r--r--install/ui/search.js14
-rw-r--r--install/ui/test/functional/group-add-nested-groups.html91
-rw-r--r--install/ui/test/functional/group-add-nested-member-groups.html153
-rw-r--r--install/ui/test/functional/group-del-nested-groups.html71
-rw-r--r--install/ui/test/functional/group-remove-nested-member-groups.html133
-rw-r--r--install/ui/test/functional/group-suite.html5
-rw-r--r--install/ui/test/functional/group-verify-indirect-member-groups.html93
9 files changed, 612 insertions, 25 deletions
diff --git a/install/ui/associate.js b/install/ui/associate.js
index eb4a5a056..f7ac1505e 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() {
+
+ 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
+ });
- $('<p/>', {
- 'text': IPA.messages.search.delete_confirm
- }).appendTo(that.dialog);
+ command.execute();
+ };
+
+ return that;
};
diff --git a/install/ui/entity.js b/install/ui/entity.js
index 5df56b1a6..da5b3ea60 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 b8fa26017..33eb8c93c 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 000000000..7d9618693
--- /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 000000000..99b5ff46d
--- /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 000000000..109908f63
--- /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 000000000..3f57bd7ce
--- /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 493d90911..eba014c78 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 000000000..a7a9d2577
--- /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>