21de49
From 107e20a158c867a52eadb0d65982ce2f7f3ce699 Mon Sep 17 00:00:00 2001
21de49
From: =?UTF-8?q?Fran=C3=A7ois=20Cami?= <fcami@redhat.com>
21de49
Date: Tue, 20 Nov 2018 17:05:30 +0100
21de49
Subject: [PATCH] Add a shared-vault-retrieve test
21de49
MIME-Version: 1.0
21de49
Content-Type: text/plain; charset=UTF-8
21de49
Content-Transfer-Encoding: 8bit
21de49
21de49
Add a shared-vault-retrieve test when:
21de49
* master has KRA installed
21de49
* replica has no KRA
21de49
This currently fails because of issue#7691
21de49
21de49
Related-to: https://pagure.io/freeipa/issue/7691
21de49
Signed-off-by: François Cami <fcami@redhat.com>
21de49
Reviewed-By: Christian Heimes <cheimes@redhat.com>
21de49
---
21de49
 ipatests/test_integration/test_vault.py | 65 ++++++++++++++++++++++++-
21de49
 1 file changed, 64 insertions(+), 1 deletion(-)
21de49
21de49
diff --git a/ipatests/test_integration/test_vault.py b/ipatests/test_integration/test_vault.py
21de49
index 496ccb1bbdd06407e9b356ac210f639436312a22..c3465799ff933ae175684ade83b4bf276b921a96 100644
21de49
--- a/ipatests/test_integration/test_vault.py
21de49
+++ b/ipatests/test_integration/test_vault.py
21de49
@@ -20,14 +20,17 @@ class TestInstallKRA(IntegrationTest):
21de49
 
21de49
     vault_password = "password"
21de49
     vault_data = "SSBsb3ZlIENJIHRlc3RzCg=="
21de49
+    vault_user = "vault_user"
21de49
+    vault_user_password = "vault_user_password"
21de49
     vault_name_master = "ci_test_vault_master"
21de49
     vault_name_master2 = "ci_test_vault_master2"
21de49
     vault_name_master3 = "ci_test_vault_master3"
21de49
     vault_name_replica_without_KRA = "ci_test_vault_replica_without_kra"
21de49
+    shared_vault_name_replica_without_KRA = ("ci_test_shared"
21de49
+                                             "_vault_replica_without_kra")
21de49
     vault_name_replica_with_KRA = "ci_test_vault_replica_with_kra"
21de49
     vault_name_replica_KRA_uninstalled = "ci_test_vault_replica_KRA_uninstalled"
21de49
 
21de49
-
21de49
     @classmethod
21de49
     def install(cls, mh):
21de49
         tasks.install_master(cls.master, setup_kra=True)
21de49
@@ -89,6 +92,66 @@ class TestInstallKRA(IntegrationTest):
21de49
 
21de49
         self._retrieve_secret([self.vault_name_replica_without_KRA])
21de49
 
21de49
+    def test_create_and_retrieve_shared_vault_replica_without_kra(self):
21de49
+        # create vault
21de49
+        self.replicas[0].run_command([
21de49
+            "ipa", "vault-add",
21de49
+            self.shared_vault_name_replica_without_KRA,
21de49
+            "--shared",
21de49
+            "--type", "standard",
21de49
+        ])
21de49
+
21de49
+        # archive secret
21de49
+        self.replicas[0].run_command([
21de49
+            "ipa", "vault-archive",
21de49
+            self.shared_vault_name_replica_without_KRA,
21de49
+            "--shared",
21de49
+            "--data", self.vault_data,
21de49
+        ])
21de49
+        time.sleep(WAIT_AFTER_ARCHIVE)
21de49
+
21de49
+        # add non-admin user
21de49
+        self.replicas[0].run_command([
21de49
+            'ipa', 'user-add', self.vault_user,
21de49
+            '--first', self.vault_user,
21de49
+            '--last', self.vault_user,
21de49
+            '--password'],
21de49
+            stdin_text=self.vault_user_password)
21de49
+
21de49
+        # add it to vault
21de49
+        self.replicas[0].run_command([
21de49
+            "ipa", "vault-add-member",
21de49
+            self.shared_vault_name_replica_without_KRA,
21de49
+            "--shared",
21de49
+            "--users", self.vault_user,
21de49
+        ])
21de49
+
21de49
+        self.replicas[0].run_command([
21de49
+            'kdestroy', '-A'])
21de49
+
21de49
+        user_kinit = "%s\n%s\n%s\n" % (self.vault_user_password,
21de49
+                                       self.vault_user_password,
21de49
+                                       self.vault_user_password)
21de49
+
21de49
+        self.replicas[0].run_command([
21de49
+            'kinit', self.vault_user],
21de49
+            stdin_text=user_kinit)
21de49
+
21de49
+        # TODO: possibly refactor with:
21de49
+        # self._retrieve_secret([self.vault_name_replica_without_KRA])
21de49
+
21de49
+        self.replicas[0].run_command([
21de49
+            "ipa", "vault-retrieve",
21de49
+            "--shared",
21de49
+            self.shared_vault_name_replica_without_KRA,
21de49
+            "--out=test.txt"])
21de49
+
21de49
+        self.replicas[0].run_command([
21de49
+            'kdestroy', '-A'])
21de49
+
21de49
+        tasks.kinit_admin(self.replicas[0])
21de49
+
21de49
+
21de49
     def test_create_and_retrieve_vault_replica_with_kra(self):
21de49
 
21de49
         # install KRA on replica
21de49
-- 
21de49
2.17.2
21de49