From aab861142d3aec503ebae4779fbfa1858e20f451 Mon Sep 17 00:00:00 2001 From: Lenka Doudova Date: Wed, 15 Jun 2016 13:45:59 +0200 Subject: [PATCH] Tests: Authentication indicators integration tests https://fedorahosted.org/freeipa/ticket/433 Reviewed-By: Milan Kubik --- .../test_service_permissions.py | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/ipatests/test_integration/test_service_permissions.py b/ipatests/test_integration/test_service_permissions.py index 3d4a50d32..59f469713 100644 --- a/ipatests/test_integration/test_service_permissions.py +++ b/ipatests/test_integration/test_service_permissions.py @@ -80,3 +80,59 @@ class TestServicePermissions(IntegrationTest): self.master.run_command(['ipa', 'service-del', service_name]) self.master.run_command(['ipa', 'user-del', 'tuser']) + + +class TestServiceAuthenticationIndicators(IntegrationTest): + topology = 'star' + + def test_service_access(self): + """ Test that user is granted access when authenticated using + credentials that are sufficient for a service, and denied access + when using insufficient credentials""" + + service_name = 'testservice/%s@%s' % (self.master.hostname, + self.master.domain.realm) + + keytab_file = os.path.join(self.master.config.test_dir, + 'testservice_keytab') + + # Prepare a service without authentication indicator + self.master.run_command(['ipa', 'service-add', service_name]) + + self.master.run_command(['ipa-getkeytab', + '-p', service_name, + '-k', keytab_file]) + + # Set authentication-type for admin user + self.master.run_command(['ipa', 'user-mod', 'admin', + '--user-auth-type=password', + '--user-auth-type=otp']) + + # Authenticate + self.master.run_command(['kinit', '-k', service_name, + '-t', keytab_file]) + + # Verify access to service is granted + result = self.master.run_command(['kvno', service_name], + raiseonerr=False) + assert result.returncode == 0 + + # Obtain admin ticket to be able to update service + tasks.kinit_admin(self.master) + + # Modify service to have authentication indicator + self.master.run_command(['ipa', 'service-mod', service_name, + '--auth-ind=otp']) + + self.master.run_command(['ipa-getkeytab', + '-p', service_name, + '-k', keytab_file]) + + # Authenticate + self.master.run_command(['kinit', '-k', service_name, + '-t', keytab_file]) + + # Verify access to service is rejected + result = self.master.run_command(['kvno', service_name], + raiseonerr=False) + assert result.returncode > 0