Example #1
0
    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')
Example #2
0
 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')])
Example #3
0
    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')
Example #4
0
    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)
Example #5
0
 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)
Example #6
0
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)
Example #7
0
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)
Example #8
0
    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)
Example #9
0
    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)
Example #10
0
    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'))
Example #11
0
    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'))
Example #12
0
 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)
Example #13
0
    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)
Example #14
0
    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)
Example #15
0
    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')
Example #16
0
    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')
Example #17
0
    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')
Example #18
0
    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
        })
Example #19
0
    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
                       })
Example #20
0
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)
Example #21
0
    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')
Example #22
0
    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
        })
Example #23
0
    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
                       })
Example #24
0
    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)
Example #25
0
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)
Example #26
0
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)
Example #27
0
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())
Example #28
0
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())
Example #29
0
    def test_resend_with_invites_disabled(self):
        ConfigDAO.get('invitations', 'enabled').AndReturn(False)

        self.mox.ReplayAll()
        self.interact({}, expected_status_code=400)
Example #30
0
 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)
Example #31
0
 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)
Example #32
0
 def test_get(self):
     self.assertEquals(self.value, ConfigDAO.get(self.group, self.name))
Example #33
0
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)
Example #34
0
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)
Example #35
0
 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))
Example #36
0
 def test_list_all(self):
     l = list(ConfigDAO.list_all())
     self.assertEquals(l, [(self.group, self.name, self.value)])
Example #37
0
 def test_get_none(self):
     self.assertEquals(None, ConfigDAO.get(self.group, "non-existing var"))
Example #38
0
 def test_get(self):
     self.assertEquals(self.value, ConfigDAO.get(self.group, self.name))
Example #39
0
 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)
Example #40
0
    def test_resend_with_invites_disabled(self):
        ConfigDAO.get('invitations', 'enabled').AndReturn(False)

        self.mox.ReplayAll()
        self.interact({}, expected_status_code=400)
Example #41
0
 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))
Example #42
0
 def test_list_all(self):
     l = list(ConfigDAO.list_all())
     self.assertEquals(l, [(self.group, self.name, self.value)])
Example #43
0
 def test_get_none(self):
     self.assertEquals(None, ConfigDAO.get(self.group, 'non-existing var'))
Example #44
0
 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")])
Example #45
0
 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)