diff --git a/backend/secfit/users/tests.py b/backend/secfit/users/tests.py
index 0d2a403708349b08276127cafb19b37a8be84fce..b2773de03ac2c44b39b1ab59833b1ec59dc5e960 100644
--- a/backend/secfit/users/tests.py
+++ b/backend/secfit/users/tests.py
@@ -11,7 +11,8 @@ from rest_framework import serializers
 from rest_framework.exceptions import ValidationError
 from django.contrib.auth import get_user_model, password_validation
 from unittest import skip
-
+from users.models import User
+from datetime import datetime
 
 class RegisterUsernameBoundaryTestCase(TestCase):
 
@@ -30,6 +31,7 @@ class RegisterUsernameBoundaryTestCase(TestCase):
         self.request["username"] = "bob"
         request = self.client.post('http://testserver/api/users/', json.dumps(self.request), content_type='application/json')
         self.request["email"] = "bob2@bob.no"
+        self.request["phone_number"] = "12345677"
         request2 = self.client.post('http://testserver/api/users/', json.dumps(self.request), content_type='application/json')
         self.assertEquals(request2.status_code,400)
 
@@ -438,3 +440,280 @@ class UserSerializerTestCase(TestCase):
 
     def tearDown(self):
         return super().tearDown()
+
+class Register2WayDomainTestCase(TestCase):
+
+    #Start by defining datatypes for each value of the inputs we want to test
+    #All arrays consists of data on the format [value to be tested, should this input be valid]
+    #If the value to be tested is itself an array it means that input should be tested twice, and the status be collected from the second post
+    #The exception is the password array, which uses both entries of the array as input to password and password1 in one post
+
+    def setUp(self):
+        self.request = json.loads('{"username": "bob1","password": "Heihei1","password1": "Heihei1","athletes": [],"email": "bob@bob.no","coach_files": [],"athlete_files": [],"workouts":[],"phone_number": "12345678","country": "","city": "","street_address":""}')
+        self.request1 = json.loads('{"username": "bob2","password": "Heihei1","password1": "Heihei1","athletes": [],"email": "bob1@bob.no","coach_files": [],"athlete_files": [],"workouts":[],"phone_number": "12345679","country": "","city": "","street_address":""}')
+        self.client = APIClient()
+        User.objects.create(id="1",username="Bill",password="secret")
+        self.user_1 = User.objects.get(id="1")
+        self.client.force_authenticate(user=self.user_1)
+        self.usernames = [["bob",True],["<<<", False],[["bob","bob"], False], ["", False]]
+        self.emails = [["bob@bob.no",True], ["bob",False], [["bob2@bob.no","bob2@bob.no"],False], ["",False]]
+        self.password = [[["Bobobo12", "Bobobo12"],True], [["bob","bob"],False], [["Bobobo12","Bobobo11"],False],[["",""],False]]
+        self.number = [["123",False],["12345678",True],[["12345678","12345678"],False]]
+        self.country = [["Norway",True],["Norway10",False],["",True]]
+        self.city = [["Hei",True],["",True]]
+        self.street_address = [["hei",True],["",True]]
+
+    #Method for cleaning up users by deleting
+    def delete_user(self, id):
+        try:
+            user = User.objects.get(id=id)
+            self.client.force_authenticate(user=user)
+            response = self.client.delete('http://testserver/api/users/'+str(id)+'/')
+        except:
+            pass
+            
+    #Method for posting users, takes up to 2 fields and values. optional parameter for deleting the user
+    def postUser(self,field,value,number,field1=None, value1=None, delete=True):
+        request = [self.request.copy(),self.request1.copy()][number]
+        if(field=='password'):
+            request['password'] = value[0]
+            request['password1'] = value[1]
+        else:
+            request[field] = value
+        if(field1!=None):
+            if(field1=='password'):
+                request['password'] = value1[0]
+                request['password1'] = value1[1]
+            else:
+                request[field1] = value1
+        request = self.client.post('http://testserver/api/users/', json.dumps(request), content_type='application/json')
+        if request.status_code == 201 and delete:
+            self.delete_user(request.data['id'])
+        return request.status_code, request.data
+
+    #Method for making sure the correct amount of posts is sent based on the values
+    #Checks if values are strings or arrays and calls post accordingly
+    def get_status_for_posts(self,field1,value1,field2,value2):
+        status_code = ""
+        code = 0
+        postdata = ""
+        if(isinstance(value1, list) and isinstance(value2,list)):
+            code, postdata = self.postUser(field1,value1[0],0,field2,value2[0], delete = False)
+            status_code, data = self.postUser(field1,value1[1],1,field2,value2[1])
+        elif(isinstance(value1, list) and isinstance(value2, str)):
+            code, postdata = self.postUser(field1,value1[0],0, delete = False)
+            status_code, data = self.postUser(field1,value1[1],1,field2,value2)
+        elif(isinstance(value1, str) and isinstance(value2, list)):
+            code, postdata = self.postUser(field2,value2[0],0, delete = False)
+            status_code, data = self.postUser(field1,value1,1,field2,value2[1])
+        else:
+            status_code, data = self.postUser(field1,value1,0,field2,value2)
+        if code == 201:
+             self.delete_user(postdata['id'])
+        return status_code
+
+    #Special version of method above for passwords, as they work differently, mentioned in setup.
+    def get_status_for_posts_password(self,passwordlist,field1,value1):
+        status_code = ""
+        code = 0
+        postdata = ""
+        if(isinstance(value1, list)):
+            code, postdata = self.postUser(field1,value1[0],0, delete = False)
+            status_code, data = self.postUser('password',passwordlist,1,field1,value1[1])
+        else:
+            status_code, data = self.postUser('password',passwordlist,0,field1,value1)
+        if code == 201:
+             self.delete_user(postdata['id'])
+        return status_code
+
+    #testing all usernames, a lot of this should be extracted to its own function, but because of time constrains code had to copied
+    #We have to catch the asserts because if not the method would not run to completion. Instead we collect all assertionErrors in a 
+    #list which we print at the end. All methods below follow same format.
+    def test_usernames(self):
+        failures = []
+        field1 = 'username'
+        for username in self.usernames:
+            value1 = username[0]
+            for email in self.emails:
+                field2 = 'email'
+                value2 = email[0]
+                expectedstatus = username[1] and email[1]
+                status = self.get_status_for_posts(field1,value1,field2,value2)
+                try: self.assertEquals((status == 201),expectedstatus)
+                except AssertionError: failures.append({field1:value1,field2:value2})
+            for password in self.password:
+                field2 = 'password'
+                value2 = password[0]
+                expectedstatus = username[1] and password[1]
+                status = self.get_status_for_posts_password(password[0],field1,username[0])
+                try: self.assertEquals((status == 201),expectedstatus)
+                except AssertionError: failures.append({field1:value1,field2:value2})
+            for number in self.number:
+                field2 = 'phone_number'
+                value2 = number[0]
+                expectedstatus = username[1] and number[1]
+                status = self.get_status_for_posts(field1,value1,field2,value2)
+                try: self.assertEquals((status == 201),expectedstatus)
+                except AssertionError: failures.append({field1:value1,field2:value2})
+            for country in self.country:
+                field2 = 'country'
+                value2 = country[0]
+                expectedstatus = username[1] and country[1]
+                status = self.get_status_for_posts(field1,value1,field2,value2)
+                try: self.assertEquals((status == 201),expectedstatus)
+                except AssertionError: failures.append({field1:value1,field2:value2})
+            for city in self.city:
+                field2 = 'city'
+                value2 = city[0]
+                expectedstatus = username[1] and city[1]
+                status = self.get_status_for_posts(field1,value1,field2,value2)
+                try: self.assertEquals((status == 201),expectedstatus)
+                except AssertionError: failures.append({field1:value1,field2:value2})
+            for street_address in self.street_address:
+                field2 = 'street_address'
+                value2 = street_address[0]
+                expectedstatus = username[1] and street_address[1]
+                status = self.get_status_for_posts(field1,value1,field2,value2)
+                try: self.assertEquals((status == 201),expectedstatus)
+                except AssertionError: failures.append({field1:value1,field2:value2}) 
+        print(failures)
+
+    def test_emails(self):
+            failures = []
+            field1 = 'email'
+            for email in self.emails:
+                value1 = email[0]
+                for password in self.password:
+                    field2 = 'password'
+                    value2 = password[0]
+                    expectedstatus = email[1] and password[1]
+                    status = self.get_status_for_posts_password(password[0],field1,email[0])
+                    try: self.assertEquals((status == 201),expectedstatus)
+                    except AssertionError: failures.append({field1:value1,field2:value2})
+                for number in self.number:
+                    field2 = 'phone_number'
+                    value2 = number[0]
+                    expectedstatus = email[1] and number[1]
+                    status = self.get_status_for_posts(field1,value1,field2,value2)
+                    try: self.assertEquals((status == 201),expectedstatus)
+                    except AssertionError: failures.append({field1:value1,field2:value2})
+                for country in self.country:
+                    field2 = 'country'
+                    value2 = country[0]
+                    expectedstatus = email[1] and country[1]
+                    status = self.get_status_for_posts(field1,value1,field2,value2)
+                    try: self.assertEquals((status == 201),expectedstatus)
+                    except AssertionError: failures.append({field1:value1,field2:value2})
+                for city in self.city:
+                    field2 = 'city'
+                    value2 = city[0]
+                    expectedstatus = email[1] and city[1]
+                    status = self.get_status_for_posts(field1,value1,field2,value2)
+                    try: self.assertEquals((status == 201),expectedstatus)
+                    except AssertionError: failures.append({field1:value1,field2:value2})
+                for street_address in self.street_address:
+                    field2 = 'street_address'
+                    value2 = street_address[0]
+                    expectedstatus = email[1] and street_address[1]
+                    status = self.get_status_for_posts(field1,value1,field2,value2)
+                    try: self.assertEquals((status == 201),expectedstatus)
+                    except AssertionError: failures.append({field1:value1,field2:value2}) 
+            print(failures)
+
+    def test_passwords(self):
+            failures = []
+            field1 = 'password'
+            for password in self.password:
+                value1 = password[0]
+                for number in self.number:
+                    field2 = 'phone_number'
+                    value2 = number[0]
+                    expectedstatus = password[1] and number[1]
+                    status = self.get_status_for_posts_password(value1,field2,value2)
+                    try: self.assertEquals((status == 201),expectedstatus)
+                    except AssertionError: failures.append({field1:value1,field2:value2})
+                for country in self.country:
+                    field2 = 'country'
+                    value2 = country[0]
+                    expectedstatus = password[1] and country[1]
+                    status = self.get_status_for_posts_password(value1,field2,value2)
+                    try: self.assertEquals((status == 201),expectedstatus)
+                    except AssertionError: failures.append({field1:value1,field2:value2})
+                for city in self.city:
+                    field2 = 'city'
+                    value2 = city[0]
+                    expectedstatus = password[1] and city[1]
+                    status = self.get_status_for_posts_password(value1,field2,value2)
+                    try: self.assertEquals((status == 201),expectedstatus)
+                    except AssertionError: failures.append({field1:value1,field2:value2})
+                for street_address in self.street_address:
+                    field2 = 'street_address'
+                    value2 = street_address[0]
+                    expectedstatus = password[1] and street_address[1]
+                    status = self.get_status_for_posts_password(value1,field2,value2)
+                    try: self.assertEquals((status == 201),expectedstatus)
+                    except AssertionError: failures.append({field1:value1,field2:value2}) 
+            print(failures)
+
+    def test_numbers(self):
+            failures = []
+            field1 = 'phone_number'
+            for number in self.number:
+                value1 = number[0]
+                for country in self.country:
+                    field2 = 'country'
+                    value2 = country[0]
+                    expectedstatus = number[1] and country[1]
+                    status = self.get_status_for_posts(field1,value1,field2,value2)
+                    try: self.assertEquals((status == 201),expectedstatus)
+                    except AssertionError: failures.append({field1:value1,field2:value2})
+                for city in self.city:
+                    field2 = 'city'
+                    value2 = city[0]
+                    expectedstatus = number[1] and city[1]
+                    status = self.get_status_for_posts(field1,value1,field2,value2)
+                    try: self.assertEquals((status == 201),expectedstatus)
+                    except AssertionError: failures.append({field1:value1,field2:value2})
+                for street_address in self.street_address:
+                    field2 = 'street_address'
+                    value2 = street_address[0]
+                    expectedstatus = number[1] and street_address[1]
+                    status = self.get_status_for_posts(field1,value1,field2,value2)
+                    try: self.assertEquals((status == 201),expectedstatus)
+                    except AssertionError: failures.append({field1:value1,field2:value2}) 
+            print(failures)
+
+    def test_countries(self):
+            failures = []
+            field1 = 'country'
+            for country in self.country:
+                value1 = country[0]
+                for city in self.city:
+                    field2 = 'city'
+                    value2 = city[0]
+                    expectedstatus = country[1] and city[1]
+                    status = self.get_status_for_posts(field1,value1,field2,value2)
+                    try: self.assertEquals((status == 201),expectedstatus)
+                    except AssertionError: failures.append({field1:value1,field2:value2})
+                for street_address in self.street_address:
+                    field2 = 'street_address'
+                    value2 = street_address[0]
+                    expectedstatus = country[1] and street_address[1]
+                    status = self.get_status_for_posts(field1,value1,field2,value2)
+                    try: self.assertEquals((status == 201),expectedstatus)
+                    except AssertionError: failures.append({field1:value1,field2:value2}) 
+            print(failures)
+
+    def test_city(self):
+            failures = []
+            field1 = 'city'
+            for city in self.city:
+                value1 = city[0]
+                for street_address in self.street_address:
+                    field2 = 'street_address'
+                    value2 = street_address[0]
+                    expectedstatus = city[1] and street_address[1]
+                    status = self.get_status_for_posts(field1,value1,field2,value2)
+                    try: self.assertEquals((status == 201),expectedstatus)
+                    except AssertionError: failures.append({field1:value1,field2:value2}) 
+            print(failures)
\ No newline at end of file