Example #1
0
    def test_existing_properties(self):
        backend.create_user(username2)
        backend.create_property(user=username2, key=propkey1, value=propval3)  # propval1 -> json
        backend.create_property(user=username2, key="date joined", value=propval3)

        path = os.path.join(self.base, 'users1.json')
        with capture() as (stdout, stderr):
            restauth_import([path])
            self.assertCountEqual(backend.list_users(), [username1, username2, username3])

            pattern = r'^%s: Property "%s" already exists\.$' % (username2, propkey1)
            self.assertHasLine(stdout, pattern)
            self.assertHasLine(stdout, r'^%s: Property "date joined" already exists\.$' % username2)

            expected_props = {
                propkey1: propval3,  # propva1 is in json-file - we don't overwrite!
                propkey2: propval2,
                u'last login': u'2013-12-01 19:27:44',  # date from json file
            }

            props = backend.get_properties(user=username2)
            # delete 'date joined' prop because it was created by the backend and
            # restauth-import doesn't overwrite in this invocation:
            del props['date joined']

            self.assertEqual(props, expected_props)
Example #2
0
    def test_create_existing_property(self):
        backend.create_property(username1, propkey1, propval1)

        url = '/test/users/%s/props/' % username1
        resp = self.post(url, {'prop': propkey1, 'value': propval2})
        self.assertEqual(resp.status_code, http_client.CONFLICT)

        self.assertProperties(username1, {propkey1: propval1})
Example #3
0
def save_properties(properties, args, parser):
    for user, props in six.iteritems(properties):
        if args.overwrite_properties:
            backend.set_properties(user=user, properties=props)
        else:
            for key, value in six.iteritems(props):
                try:
                    backend.create_property(user=user, key=key, value=value)
                except PropertyExists:
                    print('%s: Property "%s" already exists.' % (user, key))
                    continue
Example #4
0
    def post(self, request, largs, name, dry=False):
        """Create a new property."""

        if not request.user.has_perm('Users.prop_create'):
            return HttpResponseForbidden()

        # If AssertionError: 400 Bad Request
        key, value = self._parse_post(request)
        key = stringcheck(key)

        # If UserNotFound: 404 Not Found
        # If PropertyExists: 409 Conflict
        backend.create_property(user=name, key=key, value=value, dry=dry)

        self.log.info('Created property "%s" as "%s"', key, value, extra=largs)
        return HttpResponseCreated()