URL: https://github.com/freeipa/freeipa/pull/210
Author: gkaihorodova
 Title: #210: Tests: Stage User Tracker implementation
Action: synchronized

To pull the PR as Git branch:
git remote add ghfreeipa https://github.com/freeipa/freeipa
git fetch ghfreeipa pull/210/head:pr210
git checkout pr210
From 1a9ff854ae85667fc95cab8fc3a7a1ee6cfd2d94 Mon Sep 17 00:00:00 2001
From: Ganna Kaihorodova <gkaih...@redhat.com>
Date: Wed, 2 Nov 2016 15:02:30 +0100
Subject: [PATCH 1/2] Tests: Stage User Tracker implementation

Fix provide possibility of creation stage user with minimal values,
with uid not specified and check for non-empty unicode string
for attributes requested in init method

https://fedorahosted.org/freeipa/ticket/6448
---
 ipatests/test_xmlrpc/tracker/stageuser_plugin.py | 36 ++++++++++++++++++------
 1 file changed, 28 insertions(+), 8 deletions(-)

diff --git a/ipatests/test_xmlrpc/tracker/stageuser_plugin.py b/ipatests/test_xmlrpc/tracker/stageuser_plugin.py
index 82d7e06..10caff2 100644
--- a/ipatests/test_xmlrpc/tracker/stageuser_plugin.py
+++ b/ipatests/test_xmlrpc/tracker/stageuser_plugin.py
@@ -61,23 +61,43 @@ class StageUserTracker(Tracker):
     find_keys = retrieve_keys - {u'has_keytab', u'has_password'}
     find_all_keys = retrieve_all_keys - {u'has_keytab', u'has_password'}
 
-    def __init__(self, name, givenname, sn, **kwargs):
+    def __init__(self, name=None, givenname=None, sn=None, **kwargs):
+        """ Check for non-empty unicode string for the required attributes
+        in the init method """
+
+        if not isinstance(givenname, (str, unicode)) and len(givenname) > 0:
+            raise ValueError("No name provided: %s" % givenname)
+        if not isinstance(sn, (str, unicode)) and len(sn) > 0:
+            raise ValueError("No name provided: %s" % givenname)
+
         super(StageUserTracker, self).__init__(default_version=None)
-        self.uid = name
-        self.givenname = givenname
-        self.sn = sn
+        self.uid = unicode(name)
+        self.givenname = unicode(givenname)
+        self.sn = unicode(sn)
         self.dn = DN(
             ('uid', self.uid), api.env.container_stageuser, api.env.basedn)
 
         self.kwargs = kwargs
 
     def make_create_command(self, options=None):
-        """ Make function that creates a staged user using stageuser-add """
+        """ Make function that creates a staged user using stageuser-add
+            with all set of attributes and with minimal values,
+            where uid is not specified  """
+
         if options is not None:
             self.kwargs = options
-        return self.make_command('stageuser_add', self.uid,
-                                 givenname=self.givenname,
-                                 sn=self.sn, **self.kwargs)
+        if self.uid is not None:
+            return self.make_command(
+                'stageuser_add', self.uid,
+                givenname=self.givenname,
+                sn=self.sn, **self.kwargs
+                )
+        else:
+            return self.make_command(
+                'stageuser_add',
+                givenname=self.givenname,
+                sn=self.sn, **self.kwargs
+                )
 
     def make_delete_command(self):
         """ Make function that deletes a staged user using stageuser-del """

From f82f208b0030edb7c605a1da3a41adf62bf82323 Mon Sep 17 00:00:00 2001
From: Ganna Kaihorodova <gkaih...@redhat.com>
Date: Wed, 30 Nov 2016 11:27:34 +0100
Subject: [PATCH 2/2] Stage User: Test to create stage user with minimal values

Test to create stage user with minimal values, where uid is not specified

https://fedorahosted.org/freeipa/ticket/6448
---
 ipatests/test_xmlrpc/test_stageuser_plugin.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/ipatests/test_xmlrpc/test_stageuser_plugin.py b/ipatests/test_xmlrpc/test_stageuser_plugin.py
index 4a859e8..95cb26a 100644
--- a/ipatests/test_xmlrpc/test_stageuser_plugin.py
+++ b/ipatests/test_xmlrpc/test_stageuser_plugin.py
@@ -85,6 +85,11 @@ def stageduser(request):
     return tracker.make_fixture(request)
 
 
+@pytest.fixture(scope='class')
+def stageduser_min(request):
+    tracker = StageUserTracker(givenname=u'stagedmin', sn=u'usermin')
+    return tracker.make_fixture(request)
+
 @pytest.fixture(scope='class', params=options_ok, ids=options_ids)
 def stageduser2(request):
     tracker = StageUserTracker(u'suser2', u'staged', u'user', **request.param)
@@ -191,6 +196,12 @@ def test_activate_nonexistent(self, stageduser):
 
 @pytest.mark.tier1
 class TestStagedUser(XMLRPC_test):
+    def test_create_with_min_values(self, stageduser_min):
+            """ Create user with uid not specified """
+            stageduser_min.ensure_missing()
+            command = stageduser_min.make_create_command()
+            command()
+
     def test_create_duplicate(self, stageduser):
         stageduser.ensure_exists()
         command = stageduser.make_create_command()
-- 
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code

Reply via email to