From 7c03cd3016880fb999b534b18a57314dfab9a87c Mon Sep 17 00:00:00 2001
From: Calum Mackervoy <c.mackervoy@gmail.com>
Date: Mon, 23 Mar 2020 17:37:19 +0000
Subject: [PATCH] custom user model in tests

---
 djangoldp/models.py       |  5 ++++-
 djangoldp/tests/models.py | 16 +++++++++++-----
 djangoldp/tests/runner.py |  1 +
 3 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/djangoldp/models.py b/djangoldp/models.py
index c61278ba..08452c91 100644
--- a/djangoldp/models.py
+++ b/djangoldp/models.py
@@ -1,4 +1,5 @@
 import validators
+from urllib.parse import urlparse
 from django.conf import settings
 from django.contrib.auth import get_user_model
 from django.db import models
@@ -196,5 +197,7 @@ if 'djangoldp_account' not in settings.DJANGOLDP_PACKAGES:
             webid = '{0}{1}'.format(settings.BASE_URL, reverse_lazy('user-detail', kwargs={'pk': self.pk}))
         return webid
 
-    get_user_model()._meta.serializer_fields = ['@id']
+    if get_user_model()._meta.serializer_fields is None:
+        get_user_model()._meta.serializer_fields = []
+    get_user_model()._meta.serializer_fields.append('@id')
     get_user_model().webid = webid
diff --git a/djangoldp/tests/models.py b/djangoldp/tests/models.py
index 01f74515..50c53b75 100644
--- a/djangoldp/tests/models.py
+++ b/djangoldp/tests/models.py
@@ -1,11 +1,21 @@
 from django.conf import settings
-from django.contrib.auth import get_user_model
+from django.contrib.auth.models import AbstractUser
 from django.db import models
 from django.utils.datetime_safe import date
 
 from djangoldp.models import Model
 
 
+class User(AbstractUser, Model):
+
+    class Meta(AbstractUser.Meta, Model.Meta):
+        serializer_fields = ['@id', 'username', 'first_name', 'last_name', 'email', 'userprofile',
+                             'conversation_set', 'circle_set']
+        anonymous_perms = ['view', 'add']
+        authenticated_perms = ['inherit', 'change']
+        owner_perms = ['inherit']
+
+
 class Skill(Model):
     title = models.CharField(max_length=255, blank=True, null=True)
     obligatoire = models.CharField(max_length=255)
@@ -183,7 +193,3 @@ class Circle(Model):
         authenticated_perms = ["inherit"]
         rdf_type = 'hd:circle'
         depth = 1
-
-get_user_model()._meta.serializer_fields = ['@id', 'username', 'first_name', 'last_name', 'email', 'userprofile',
-                                            'conversation_set', 'circle_set']
-get_user_model()._meta.anonymous_perms = ['view', 'add']
diff --git a/djangoldp/tests/runner.py b/djangoldp/tests/runner.py
index 7416c711..12162f6c 100644
--- a/djangoldp/tests/runner.py
+++ b/djangoldp/tests/runner.py
@@ -36,6 +36,7 @@ settings.configure(DEBUG=False,
                            "control": "acl:Control"
                        }
                    },
+                   AUTH_USER_MODEL='tests.User',
                    AUTHENTICATION_BACKENDS=(
                        'django.contrib.auth.backends.ModelBackend', 'guardian.backends.ObjectPermissionBackend'),
                    ROOT_URLCONF='djangoldp.urls',
-- 
GitLab