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)
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})
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
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()