TESTS WebUI: Vaults management

Bunch of tests for WebUI Vault Management.

Covers:
Adding vaults
Modifying vaults
Adding members and owners to all types of vaults

https://fedorahosted.org/freeipa/ticket/5426

Reviewed-By: Martin Basti <mbasti@redhat.com>
Reviewed-By: Petr Vobornik <pvoborni@redhat.com>
This commit is contained in:
Pavel Vomacka
2016-10-25 13:40:24 +02:00
committed by Martin Basti
parent 0808504ba1
commit f952757484
3 changed files with 273 additions and 1 deletions

View File

@@ -614,6 +614,7 @@ vault.custom_adder_dialog = function(spec) {
var facet_name = that.entity.facet.name;
facet_name = facet_name.substr(0, facet_name.indexOf('_'));
if (facet_name === "") facet_name = 'user';
var type_f = that.fields.get_field('type');
type_f.set_pristine_value([facet_name]);
@@ -621,6 +622,27 @@ vault.custom_adder_dialog = function(spec) {
if (IPA.is_selfservice) type_f.set_writable(false);
};
that.on_success = function(data) {
var result = data.result.result;
var my_vaults = that.entity.get_facet('search');
function update_facet(name) {
var fa = that.entity.get_facet(name);
fa.set_expired_flag();
}
if (result.service) {
update_facet('service_search');
} else if (result.shared) {
update_facet('shared_search');
} else {
update_facet('user_search');
my_vaults.set_expired_flag();
}
};
that.added.attach(that.on_success);
return that;
};
@@ -746,7 +768,10 @@ var make_vaultconfig_spec = function() {
check_rights: false,
no_update: true,
fields: [
'kra_server_server',
{
$type: "multivalued",
name: 'kra_server_server'
},
{
$type: 'textarea',
name: 'transport_cert',

View File

@@ -0,0 +1,63 @@
# Authors:
# Pavel Vomacka <pvomacka@redhat.com>
#
# Copyright (C) 2016 Red Hat
# see file 'COPYING' for use and warranty information
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
ENTITY = 'vault'
PKEY = 'itest-user-vault'
DATA = {
'pkey': PKEY,
'facet': 'user_search',
'add': [
('radio', 'type', 'user'),
('textbox', 'cn', PKEY),
('textbox', 'description', 'test-desc')
],
'mod': [
('textbox', 'description', 'test-desc-mod'),
],
}
PKEY2 = 'itest-service-vault'
DATA2 = {
'pkey': PKEY2,
'facet': 'service_search',
'add': [
('radio', 'type', 'service'),
# service
('textbox', 'cn', PKEY2),
('textbox', 'description', 'test-desc')
],
'mod': [
('textbox', 'description', 'test-desc-mod'),
],
}
PKEY3 = 'itest-shared-vault'
DATA3 = {
'pkey': PKEY3,
'facet': 'shared_search',
'add': [
('radio', 'type', 'shared'),
('textbox', 'cn', PKEY3),
('textbox', 'description', 'test-desc')
],
'mod': [
('textbox', 'description', 'test-desc-mod'),
],
}

View File

@@ -0,0 +1,184 @@
# Authors:
# Pavel Vomacka <pvomacka@redhat.com>
#
# Copyright (C) 2013 Red Hat
# see file 'COPYING' for use and warranty information
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
Vault tests
"""
from ipatests.test_webui.ui_driver import UI_driver
from ipatests.test_webui.ui_driver import screenshot
import ipatests.test_webui.data_vault as vault
import ipatests.test_webui.data_user as user
import ipatests.test_webui.data_group as group
import pytest
@pytest.mark.tier1
class vault_tasks(UI_driver):
def prep_service_data(self):
host = self.config.get('ipa_server')
realm = self.config.get('ipa_realm')
pkey = 'itest'
return {
'entity': 'service',
'pkey': '%s/%s@%s' % (pkey, host, realm),
'add': [
('textbox', 'service', pkey),
('combobox', 'host', host)
]
}
def prepare_vault_service_data(self, data):
s_data = self.prep_service_data()
service = s_data['pkey']
serv_field = [('combobox', 'service', service)]
data['add'].extend(serv_field)
def prepare_vault_user_data(self, data, user='admin'):
user_field = [('combobox', 'username', user)]
data['add'].extend(user_field)
@pytest.mark.tier1
class test_vault(vault_tasks):
def setup(self, *args, **kwargs):
super(test_vault, self).setup(*args, **kwargs)
if not self.has_kra():
self.skip('KRA not configured')
@screenshot
def test_crud(self):
"""
Basic basic CRUD: user vault
"""
self.init_app()
self.prepare_vault_user_data(vault.DATA)
self.basic_crud(vault.ENTITY, vault.DATA)
@screenshot
def test_add_service_vault(self):
"""
Add Service vault
"""
self.init_app()
# Add itest service
s_data = self.prep_service_data()
self.add_record(s_data['entity'], s_data)
self.prepare_vault_service_data(vault.DATA2)
# Add and remove service vault
self.add_record(vault.ENTITY, vault.DATA2, facet=vault.DATA2['facet'],
delete=True)
# Remove test service
self.navigate_to_entity(s_data['entity'])
self.delete_record(s_data['pkey'])
@screenshot
def test_add_shared_vault(self):
"""
Add Shared vault
"""
self.init_app()
# Add shared vault
self.add_record(vault.ENTITY, vault.DATA3, facet=vault.DATA3['facet'],
delete=True)
@screenshot
def test_member_owner_vault(self):
"""
Add User Vault and try to add member and owner
"""
def fill_tables():
self.add_table_associations('member_user', [user.PKEY])
self.add_table_associations('member_group', [group.PKEY])
self.add_table_associations('member_service', [s_data['pkey']])
self.add_table_associations('owner_user', [user.PKEY])
self.add_table_associations('owner_group', [group.PKEY])
self.add_table_associations('owner_service', [s_data['pkey']])
# Add user
self.init_app()
self.add_record(user.ENTITY, user.DATA)
# Prepare items - user already exists
s_data = self.prep_service_data()
self.add_record(s_data['entity'], s_data)
self.add_record(group.ENTITY, group.DATA)
# USER
# Add user vault
self.add_record(vault.ENTITY, vault.DATA, facet='user_search')
# Navigate to record
self.navigate_to_record(vault.DATA['pkey'])
# Try add values into table
fill_tables()
# Remove user vault record
self.navigate_to_entity(vault.ENTITY, vault.DATA['facet'])
self.delete_record(vault.PKEY)
# SERVICE
# Add service vault
self.prepare_vault_service_data(vault.DATA2)
self.add_record(vault.ENTITY, vault.DATA2, facet=vault.DATA2['facet'])
# Navigate to record
self.navigate_to_record(vault.DATA2['pkey'])
# Try add values into table
fill_tables()
# Remove service vault record
self.navigate_to_entity(vault.ENTITY, vault.DATA2['facet'])
self.delete_record(vault.DATA2['pkey'])
# SHARED
# Add shared vault
self.add_record(vault.ENTITY, vault.DATA3, facet=vault.DATA3['facet'])
# Navigate to record
self.navigate_to_record(vault.DATA3['pkey'])
# Try add values into table
fill_tables()
# Remove shared vault record
self.navigate_to_entity(vault.ENTITY, vault.DATA3['facet'])
self.delete_record(vault.DATA3['pkey'])
# Clean up
self.navigate_to_entity(s_data['entity'])
self.delete_record(s_data['pkey'])
self.navigate_to_entity(user.ENTITY)
self.delete_record(user.PKEY)
self.navigate_to_entity(group.ENTITY)
self.delete_record(group.PKEY)