[Freeipa-devel] [TESTS][PATCH 0007] Multiple managers per user

Martin Basti mbasti at redhat.com
Mon Jan 11 12:45:36 UTC 2016



On 11.01.2016 12:47, Lenka Doudova wrote:
> Hi,
>
> everyone having time to take a look at this? It's been hanging for a 
> few weeks.
> Thanks,
> Lenka
>
> On 12/15/2015 12:42 PM, Lenka Doudova wrote:
>> Hi,
>>
>> I updated the (stage)user tests to reflect the multiple managers per 
>> user feature.
>> Corresponding ticket: https://fedorahosted.org/freeipa/ticket/5344
>>
>> Lenka
>>
>>
>
>
>
We enabled more checks in pylint recently, your patch currently does not 
pass on master.

./make-lint
************* Module ipatests.test_xmlrpc.tracker.user_plugin
ipatests/test_xmlrpc/tracker/user_plugin.py:380: 
[W0106(expression-not-assigned), UserTracker.track_add_manager] 
Expression "[self.attrs[u'manager'].append(item) for item in managers]" 
is assigned to nothing)
************* Module ipatests.test_xmlrpc.tracker.stageuser_plugin
ipatests/test_xmlrpc/tracker/stageuser_plugin.py:248: 
[W0106(expression-not-assigned), StageUserTracker.track_add_manager] 
Expression "[self.attrs[u'manager'].append(item) for item in managers]" 
is assigned to nothing)

1)
I suggest to use self.attrs[u'manager'].extend(managers)  instead of 
list comprehension (lint errors)

2)
if self.attrs[u'manager'] == []:

I suggest to use
if not self.attrs[u'manager']:
this is proper python usage.

*on several places in code

3)
+    def test_delete_all_managers(self, stageduser, manager1, manager2):
...
+
+        updates = {u'manager': ""}
+        expected_updates = {u'manager': ""}
...
+        stageduser.attrs.update(updates)
+        stageduser.attrs.update(expected_updates)

I do not understand this, you have 2 dictionaries that are the same, and 
you twice update stageuser object with the same value, What did I miss?

4)
+                self.attrs[u'managers_failed'][key] =\
+                    u'This entry is already a member'

Please try to avoid '\' in code if possible
                 self.attrs[u'managers_failed'][key] = (
                     u'This entry is already a member')

*on several places in code

5)
I do not have a feeling that the following code is right:

          if u'nsaccountlock' in expected:
              if expected[u'nsaccountlock'] == [u'true']:
                  expected[u'nsaccountlock'] = True
              elif expected[u'nsaccountlock'] == [u'false']:
                  expected[u'nsaccountlock'] = False
+        else:
+            expected[u'nsaccountlock'] = False

Why is there added 'nsaccountlock' into dictionary when it is not 
expected to be in results? Shouldn't be 'nsaccountlock' added to 
expected when needed?

6)
-            expected['result']['manager'] = [
- unicode(get_user_dn(expected['result']['manager'][0]))]
+            for i, item in enumerate(expected['result']['manager']):
+                expected['result'][u'manager'][i] = 
unicode(get_user_dn(item)

Please use list comprehension, it is safer than changing list that is 
being iterated.

expected['result']['manager'] = [unicode(get_user_dn(mgr)) for mgr in 
expected['result']['manager']]

7)
+        if len(self.attrs[u'managers_failed']) != 0:
This should be rewritten to

if self.attrs[u'managers_failed']:

*on several places in code

8)
+        if u'manager' in self.attrs and self.attrs[u'manager'] == []:
+            del self.attrs[u'manager']

IMO list == [] is bad, this can be rewritten to:

if u'manager' in self.attrs and not self.attrs[u'manager']:


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20160111/31710762/attachment.htm>


More information about the Freeipa-devel mailing list