Skip to content
This repository has been archived by the owner on Feb 19, 2019. It is now read-only.

Commit

Permalink
some check.py stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
peterbe committed Jul 26, 2012
1 parent 1c2fe66 commit 38d73a9
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 44 deletions.
35 changes: 19 additions & 16 deletions mozldap/base/tests.py
Expand Up @@ -3,7 +3,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

import json
import ldap
#import ldap
import mock
from nose.tools import eq_, ok_
from django.conf import settings
Expand Down Expand Up @@ -46,8 +46,9 @@ def test_exists(self):
eq_(response.status_code, 400)

result = {
'abc123': {'uid': 'abc123', 'mail': 'peter@example.com'},
'abc123': {'uid': 'abc123', 'mail': 'peter@example.com'},
}

def search_s(base, scope, filterstr, *args, **kwargs):
if 'peter@example.com' in filterstr:
if 'hgaccountenabled=true' in filterstr:
Expand All @@ -66,10 +67,12 @@ def search_s(base, scope, filterstr, *args, **kwargs):
eq_(response.status_code, 404)
ok_('text/plain' in response['Content-Type'])

response = self.client.get(url, {'mail': 'peter@example.com', 'hgaccountenabled': ''})
response = self.client.get(url, {'mail': 'peter@example.com',
'hgaccountenabled': ''})
eq_(response.status_code, 404)

response = self.client.get(url, {'mail': 'peter@example.com', 'gender': 'male'})
response = self.client.get(url, {'mail': 'peter@example.com',
'gender': 'male'})
eq_(response.status_code, 200)

def test_employee(self):
Expand All @@ -81,10 +84,11 @@ def test_employee(self):
eq_(response.status_code, 400)

result = {
'abc123': {'uid': 'abc123',
'mail': 'peter@mozilla.com',
'sn': u'B\xe3ngtsson'},
'abc123': {'uid': 'abc123',
'mail': 'peter@mozilla.com',
'sn': u'B\xe3ngtsson'},
}

def search_s(base, scope, filterstr, *args, **kwargs):
if 'peter@example.com' in filterstr:
return result.items()
Expand Down Expand Up @@ -112,28 +116,27 @@ def test_in_group(self):
response = self.client.get(url, {'mail': 'peter@example.com'})
eq_(response.status_code, 400)

response = self.client.get(url, {'mail': 'peter@example.com', 'cn': ''})
response = self.client.get(url, {'mail': 'peter@example.com',
'cn': ''})
eq_(response.status_code, 400)

result = {
'abc123': {'uid': 'abc123', 'mail': 'peter@example.com'},
'abc123': {'uid': 'abc123', 'mail': 'peter@example.com'},
}

def search_s(base, scope, filterstr, *args, **kwargs):
print (base, scope, filterstr)
if 'ou=groups' in base:
if 'peter@example.com' in filterstr and 'cn=CrashStats' in filterstr:
if ('peter@example.com' in filterstr and
'cn=CrashStats' in filterstr):
return result.items()
else:
# basic lookup
if 'peter@example.com' in filterstr:
return result.items()
#if 'peter@example.com' in filterstr:
# if 'hgaccountenabled=true' in filterstr:
# return []
# return result.items()
return []

self.connection.search_s = mock.MagicMock(side_effect=search_s)

response = self.client.get(url, {'mail': 'peter@example.com', 'cn': 'CrashStats'})
response = self.client.get(url, {'mail': 'peter@example.com',
'cn': 'CrashStats'})
eq_(response.status_code, 200)
54 changes: 26 additions & 28 deletions mozldap/base/views.py
Expand Up @@ -18,10 +18,13 @@ def wrapper(*args, **kw):
if isinstance(response, http.HttpResponse):
return response
else:
return http.HttpResponse(_json_clean(json.dumps(response)),
content_type='application/json; charset=UTF-8')
return http.HttpResponse(
_json_clean(json.dumps(response)),
content_type='application/json; charset=UTF-8'
)
return wrapper


def _json_clean(value):
"""JSON-encodes the given Python object."""
# JSON permits but does not require forward slashes to be escaped.
Expand All @@ -42,8 +45,6 @@ def home(request):
return http.HttpResponse('Yada yada yada\nDocumentation...')




@json_view
def exists(request):
mail = request.GET.get('mail')
Expand All @@ -62,10 +63,10 @@ def exists(request):
search_filter = _make_search_filter(request.GET)

rs = connection.search_s(
"dc=mozilla",
ldap.SCOPE_SUBTREE,
search_filter,
attrs
"dc=mozilla",
ldap.SCOPE_SUBTREE,
search_filter,
attrs
)
for uid, result in rs:
return dict(result)
Expand Down Expand Up @@ -110,10 +111,10 @@ def employee(request):
search_filter = _make_search_filter(dict(request_data,
objectClass='mozComPerson'))
rs = connection.search_s(
"dc=mozilla",
ldap.SCOPE_SUBTREE,
search_filter,
attrs
"dc=mozilla",
ldap.SCOPE_SUBTREE,
search_filter,
attrs
)
for uid, result in rs:
return dict(result)
Expand All @@ -140,10 +141,10 @@ def in_group(request):
# first, figure out the uid
search_filter = _make_search_filter(dict(mail=mail))
rs = connection.search_s(
"dc=mozilla",
ldap.SCOPE_SUBTREE,
search_filter,
['uid']
"dc=mozilla",
ldap.SCOPE_SUBTREE,
search_filter,
['uid']
)
uid = None
for uid, result in rs:
Expand All @@ -152,29 +153,26 @@ def in_group(request):
if not uid:
raise http.Http404('Not found')

#attrs = ['uid', 'cn', 'sn', 'mail', 'givenName']
search_filter1 = _make_search_filter(dict(cn=cn))
# : (|(memberuid=$uid)(memberuid=$mail)(member=mail=$mail,o=com,dc=mozilla)(member=mail=$mail,o=org,dc=mozilla)\
# (member=mail=$mail,o=net,dc=mozillacom))
search_filter2 = _make_search_filter({
'memberUid': [uid, mail], # should that me 'memberuid' ??
'member': ['mail=%s,o=com,dc=mozilla' % mail,
'mail=%s,o=org,dc=mozilla' % mail,
'mail=%s,o=net,dc=mozillacom' % mail],
'memberUid': [uid, mail], # should that me 'memberuid' ??
'member': ['mail=%s,o=com,dc=mozilla' % mail,
'mail=%s,o=org,dc=mozilla' % mail,
'mail=%s,o=net,dc=mozillacom' % mail],
}, any_parameter=True)
# print search_filter1
# print search_filter2
search_filter = '(&(%s)(%s))' % (search_filter1, search_filter2)

rs = connection.search_s(
"ou=groups,dc=mozilla",
ldap.SCOPE_SUBTREE,
search_filter,
#attrs
"ou=groups,dc=mozilla",
ldap.SCOPE_SUBTREE,
search_filter,
#attrs
)

for uid, result in rs:
print result
#print result
return http.HttpResponse('OK\n', mimetype='text/plain')

raise http.Http404('Not found')

0 comments on commit 38d73a9

Please sign in to comment.