def test_sslkey_user_and_key_unique_together(self): key_string = get_data('data/test_x509_0.pem') user = factory.make_User() key = SSLKey(key=key_string, user=user) key.save() key2 = SSLKey(key=key_string, user=user) self.assertRaises(ValidationError, key2.full_clean)
def test_sslkey_same_key_can_be_used_by_different_users(self): key_string = get_data('data/test_x509_0.pem') user = factory.make_User() key = SSLKey(key=key_string, user=user) key.save() user2 = factory.make_User() key2 = SSLKey(key=key_string, user=user2) key2.full_clean()
def test_sslkey_user_and_key_unique_together_db_level(self): # Even if we hack our way around model-level checks, uniqueness # of the user/key combination is enforced at the database level. key_string = get_data('data/test_x509_0.pem') user = factory.make_User() existing_key = SSLKey(key=key_string, user=user) existing_key.save() # The trick to hack around the model-level checks: create a # duplicate key for another user, then attach it to the same # user as the existing key by updating it directly in the # database. redundant_key = SSLKey(key=key_string, user=factory.make_User()) redundant_key.save() self.assertRaises(IntegrityError, SSLKey.objects.filter(id=redundant_key.id).update, user=user)