def test_invite_user_from_allowed_domain(self): (name, email, passw) = ('user-a', '*****@*****.**', 'bananas') link_template = 'http://altai.example.com/invite?code={{code}}' post_params = { "name": name, "email": email, "password": passw, "invite": True, "link-template": link_template } ConfigDAO.get('invitations', 'enabled').AndReturn(True) ConfigDAO.get('invitations', 'domains-allowed')\ .AndReturn(['example.net', 'example.com']) user_mgr = self.fake_client_set.identity_admin.users user_mgr.list().AndReturn([self.user]) user_mgr.create( name=name, password=passw, email=email, enabled=False).AndReturn('NEW_USER') users._invite_user('NEW_USER', post_params) \ .AndReturn('new-user-dict') self.mox.ReplayAll() data = self._interact(post_params) self.assertEquals(data, 'new-user-dict')
def test_list_group(self): ConfigDAO.set_to('te', 'st', {'5': 0}) ConfigDAO.set_to('te', 'st2', 'a string') l = list(sorted(ConfigDAO.list_group('te'))) self.assertEquals(l, [('te', 'st', { '5': 0 }), ('te', 'st2', 'a string')])
def test_invite_user_from_allowed_domain(self): (name, email, passw) = ('user-a', '*****@*****.**', 'bananas') link_template = 'http://altai.example.com/invite?code={{code}}' post_params = { "name": name, "email": email, "password": passw, "invite": True, "link-template": link_template } ConfigDAO.get('invitations', 'enabled').AndReturn(True) ConfigDAO.get('invitations', 'domains-allowed')\ .AndReturn(['example.net', 'example.com']) user_mgr = self.fake_client_set.identity_admin.users user_mgr.list().AndReturn([self.user]) user_mgr.create(name=name, password=passw, email=email, enabled=False).AndReturn('NEW_USER') users._invite_user('NEW_USER', post_params) \ .AndReturn('new-user-dict') self.mox.ReplayAll() data = self._interact(post_params) self.assertEquals(data, 'new-user-dict')
def test_reset_password(self): uid, name, email, code = 'UID', 'NAME', 'EM@IL', 'THE_CODE' params = {'name': 'USERNAME', 'link-template': 'LINK_TEMPLATE'} user = doubles.make(self.mox, doubles.User, name=name, id=uid, email=email, fullname='') token = Token(user_id=uid, email=email, code=code) ConfigDAO.get('password-reset', 'enabled').AndReturn(True) me._find_user(params).AndReturn(user) me.ResetTokensDAO.create(uid, email).AndReturn(token) me.send_reset_password(email, code, name, link_template='LINK_TEMPLATE', greeting='') self.mox.ReplayAll() rv = self.client.post('/v1/me/reset-password', data=json.dumps(params), content_type='application/json') self.check_and_parse_response(rv, status_code=204)
def test_reset_password_disabled(self): params = {'name': 'USERNAME', 'link-template': 'LINK_TEMPLATE'} ConfigDAO.get('password-reset', 'enabled').AndReturn(False) self.mox.ReplayAll() rv = self.client.post('/v1/me/reset-password', data=json.dumps(params), content_type='application/json') self.check_and_parse_response(rv, status_code=404)
def update_config(name): if name not in SCHEMAS: abort(404) data = parse_request_data(allowed=SCHEMAS[name]) set_audit_resource_id(name) for element, value in data.iteritems(): ConfigDAO.set_to(name, element, value) return get_config(name)
def test_apply_password_reset_disabled(self): params = {'password': '******'} ConfigDAO.get('password-reset', 'enabled').AndReturn(False) self.mox.ReplayAll() rv = self.client.post('/v1/me/reset-password/THE_CODE', data=json.dumps(params), content_type='application/json') self.check_and_parse_response(rv, status_code=404)
def test_apply_password_reset_disabled(self): params = { 'password': '******' } ConfigDAO.get('password-reset', 'enabled').AndReturn(False) self.mox.ReplayAll() rv = self.client.post('/v1/me/reset-password/THE_CODE', data=json.dumps(params), content_type='application/json') self.check_and_parse_response(rv, status_code=404)
def test_apply_password_reset_empty(self): params = { } ConfigDAO.get('password-reset', 'enabled').AndReturn(True) self.mox.ReplayAll() rv = self.client.post('/v1/me/reset-password/code', data=json.dumps(params), content_type='application/json') data = self.check_and_parse_response(rv, status_code=400) self.assertEquals('password', data.get('element-name'))
def test_apply_password_reset_extra(self): params = {'password': '******', 'fullname': 'Cannot Be Set'} ConfigDAO.get('password-reset', 'enabled').AndReturn(True) self.mox.ReplayAll() rv = self.client.post('/v1/me/reset-password/code', data=json.dumps(params), content_type='application/json') data = self.check_and_parse_response(rv, status_code=400) self.assertEquals('fullname', data.get('element-name'))
def test_reset_password_disabled(self): params = { 'name': 'USERNAME', 'link-template': 'LINK_TEMPLATE' } ConfigDAO.get('password-reset', 'enabled').AndReturn(False) self.mox.ReplayAll() rv = self.client.post('/v1/me/reset-password', data=json.dumps(params), content_type='application/json') self.check_and_parse_response(rv, status_code=404)
def test_apply_password_reset_complete(self): uid, code = 'UID', 'THE_CODE' token = Token(user_id=uid, code=code, complete=True) params = {'password': '******'} ConfigDAO.get('password-reset', 'enabled').AndReturn(True) me.ResetTokensDAO.get('THE_CODE').AndReturn(token) self.mox.ReplayAll() rv = self.client.post('/v1/me/reset-password/%s' % code, data=json.dumps(params), content_type='application/json') self.check_and_parse_response(rv, status_code=404)
def test_apply_password_reset_complete(self): uid, code = 'UID', 'THE_CODE' token = Token(user_id=uid, code=code, complete=True) params = { 'password': '******' } ConfigDAO.get('password-reset', 'enabled').AndReturn(True) me.ResetTokensDAO.get('THE_CODE').AndReturn(token) self.mox.ReplayAll() rv = self.client.post('/v1/me/reset-password/%s' % code, data=json.dumps(params), content_type='application/json') self.check_and_parse_response(rv, status_code=404)
def test_resend_no_mail(self): ConfigDAO.get('invitations', 'enabled').AndReturn(True) self.fake_client_set.identity_admin.users.get(self.uid)\ .AndReturn(self.user) users.InvitesDAO.create(self.uid, self.user.email)\ .AndReturn(self.invite) users.auth.assert_admin() users.user_to_view(self.user, self.invite, send_code=True)\ .AndReturn('REPLY') self.mox.ReplayAll() data = self.interact({'send-invite-mail': False}) self.assertEquals(data, 'REPLY')
def test_resend_works(self): ConfigDAO.get('invitations', 'enabled').AndReturn(True) self.fake_client_set.identity_admin.users.get(self.uid)\ .AndReturn(self.user) users.InvitesDAO.create(self.uid, self.user.email)\ .AndReturn(self.invite) users.send_invitation(self.user.email, self.invite.code, None, greeting=self.user.fullname) users.user_to_view(self.user, self.invite, send_code=False)\ .AndReturn('REPLY') self.mox.ReplayAll() data = self.interact({}) self.assertEquals(data, 'REPLY')
def test_invites_disabled(self): (name, email, passw) = ('user-a', '*****@*****.**', 'bananas') link_template = 'http://altai.example.com/invite?code={{code}}' ConfigDAO.get('invitations', 'enabled').AndReturn(False) self.mox.ReplayAll() self._interact(expected_status_code=400, data={ "name": name, "email": email, "password": passw, "admin": False, "invite": True, "link-template": link_template })
def get_var(argv): if len(argv) != 3: show_help(argv) group, name = argv[2].split('.', 1) value = ConfigDAO.get(group, name) if value is not None: print json.dumps(value, indent=4, sort_keys=True)
def test_invite_user_from_bad_domain(self): (name, email, passw) = ('user-a', '*****@*****.**', 'bananas') link_template = 'http://altai.example.com/invite?code={{code}}' ConfigDAO.get('invitations', 'enabled').AndReturn(True) ConfigDAO.get('invitations', 'domains-allowed')\ .AndReturn(['example.net', 'griddynamics.net']) self.mox.ReplayAll() self._interact(expected_status_code=403, data={ "name": name, "email": email, "password": passw, "admin": False, "invite": True, "link-template": link_template })
def test_reset_password(self): uid, name, email, code = 'UID', 'NAME', 'EM@IL', 'THE_CODE' params = { 'name': 'USERNAME', 'link-template': 'LINK_TEMPLATE' } user = doubles.make(self.mox, doubles.User, name=name, id=uid, email=email, fullname='') token = Token(user_id=uid, email=email, code=code) ConfigDAO.get('password-reset', 'enabled').AndReturn(True) me._find_user(params).AndReturn(user) me.ResetTokensDAO.create(uid, email).AndReturn(token) me.send_reset_password(email, code, name, link_template='LINK_TEMPLATE', greeting='') self.mox.ReplayAll() rv = self.client.post('/v1/me/reset-password', data=json.dumps(params), content_type='application/json') self.check_and_parse_response(rv, status_code=204)
def get_config(name): groups = SCHEMAS if g.is_admin else _USER_VISIBLE_GROUPS if name not in groups: abort(404) result = dict(((element, value) for group, element, value in ConfigDAO.list_group(name) if group == name)) # yup, imelnikov is paranoid if name == 'general': _update_general(result) # NOTE(imelnikov): do it late to override values for # 'name' and 'href' if someone put them into database result.update(_link_for_group(name)) return make_json_response(result)
def list_config(): parse_collection_request(_SCHEMA) groups = SCHEMAS if g.is_admin else _USER_VISIBLE_GROUPS result = dict(((group, {}) for group in groups)) for group, element, value in ConfigDAO.list_all(): try: result[group][element] = value except KeyError: continue _update_general(result['general']) # NOTE(imelnikov): do it late to override values for # 'name' and 'href' if someone put them into database for group in groups: result[group].update(_link_for_group(group)) return make_collection_response('config', result.values())
def test_resend_with_invites_disabled(self): ConfigDAO.get('invitations', 'enabled').AndReturn(False) self.mox.ReplayAll() self.interact({}, expected_status_code=400)
def test_resend_user_not_found(self): ConfigDAO.get('invitations', 'enabled').AndReturn(True) self.fake_client_set.identity_admin.users.get(self.uid)\ .AndRaise(osc_exc.NotFound('failure')) self.mox.ReplayAll() self.interact({}, expected_status_code=404)
def setUp(self): super(ConfigDAOTestCase, self).setUp() self.group = 'group' self.name = 'test' self.value = 42 ConfigDAO.set_to(self.group, self.name, self.value)
def test_get(self): self.assertEquals(self.value, ConfigDAO.get(self.group, self.name))
def list_vars(argv): if len(argv) != 2: show_help(argv) for group, name, value in ConfigDAO.list_all(): data = json.dumps(value, indent=4, sort_keys=True) print '%s.%s = %s' % (group, name, data)
def _set_value(group, name, value): try: value = SCHEMAS[group].from_request(name, value) except KeyError: die('Unknown configuration variable: %s.%s', group, name) ConfigDAO.set_to(group, name, value)
def test_set(self): new_value = {"new": "value"} ConfigDAO.set_to(self.group, self.name, new_value) self.assertEquals(new_value, ConfigDAO.get(self.group, self.name))
def test_list_all(self): l = list(ConfigDAO.list_all()) self.assertEquals(l, [(self.group, self.name, self.value)])
def test_get_none(self): self.assertEquals(None, ConfigDAO.get(self.group, "non-existing var"))
def setUp(self): super(ConfigDAOTestCase, self).setUp() self.group = "group" self.name = "test" self.value = 42 ConfigDAO.set_to(self.group, self.name, self.value)
def test_set(self): new_value = {'new': 'value'} ConfigDAO.set_to(self.group, self.name, new_value) self.assertEquals(new_value, ConfigDAO.get(self.group, self.name))
def test_get_none(self): self.assertEquals(None, ConfigDAO.get(self.group, 'non-existing var'))
def test_list_group(self): ConfigDAO.set_to("te", "st", {"5": 0}) ConfigDAO.set_to("te", "st2", "a string") l = list(sorted(ConfigDAO.list_group("te"))) self.assertEquals(l, [("te", "st", {"5": 0}), ("te", "st2", "a string")])