mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
Better unicity constraint check on provider creation
This commit is contained in:
@@ -35,6 +35,7 @@ class EmailProviderDomainSerializer(serializers.ModelSerializer):
|
||||
id = serializers.IntegerField(required=False)
|
||||
|
||||
class Meta:
|
||||
extra_kwargs = {"name": {"validators": []}}
|
||||
fields = ("id", "name", "new_domain")
|
||||
model = models.EmailProviderDomain
|
||||
|
||||
@@ -56,6 +57,19 @@ class EmailProviderSerializer(serializers.ModelSerializer):
|
||||
if domains:
|
||||
to_create = []
|
||||
for domain in domains:
|
||||
if models.EmailProviderDomain.objects.filter(
|
||||
name=domain["name"]
|
||||
).exists():
|
||||
raise serializers.ValidationError(
|
||||
{
|
||||
"error": (
|
||||
_("Migrated domain with name {} already exists").format(
|
||||
domain["name"]
|
||||
)
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
to_create.append(
|
||||
models.EmailProviderDomain(provider=provider, **domain)
|
||||
)
|
||||
|
||||
@@ -134,6 +134,13 @@ class ViewSetTestCase(DataMixin, ModoAPITestCase):
|
||||
models.EmailProviderDomain.objects.filter(name="gmail.com").exists()
|
||||
)
|
||||
|
||||
response = self.client.post(url, data, format="json")
|
||||
self.assertEqual(response.status_code, 400)
|
||||
self.assertEqual(
|
||||
response.json()["error"],
|
||||
"Migrated domain with name gmail.com already exists",
|
||||
)
|
||||
|
||||
def test_update_provider(self):
|
||||
provider_domain = factories.EmailProviderDomainFactory(name="outlook.com")
|
||||
url = reverse("v2:emailprovider-detail", args=[provider_domain.provider.pk])
|
||||
|
||||
Reference in New Issue
Block a user