diff --git a/new_rest_api/tests.py b/new_rest_api/tests.py
index 793663471a280208dde202acef8d2668b52533f6..76e4f1139d1cbf89550bd9d99ea5e21e4f88ca4c 100644
--- a/new_rest_api/tests.py
+++ b/new_rest_api/tests.py
@@ -1,13 +1,12 @@
 # Create your tests here.
 import json
-from rest_framework.test import APIRequestFactory, APITestCase, URLPatternsTestCase
+from rest_framework.test import APITestCase, URLPatternsTestCase
 from rest_framework import status
-from django.test import TestCase, SimpleTestCase, Client
 from django.urls import include, path, reverse
+from django.utils.http import urlsafe_base64_encode
+from django.utils.encoding import force_bytes
 from registrasi.models import BisaGoUser
-from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
 from .tokens import account_activation_token
-from django.utils.encoding import force_bytes, force_text
 
 class UserTests(APITestCase):
     urlpatterns = [
@@ -18,8 +17,13 @@ class UserTests(APITestCase):
         url = reverse('create-user')
         data = {'name': 'Astraykai',
                 'email':'astraykai@gmail.com',
+                'password':'chingchenghanji',
                 'phone_number':'089892218567',
-                'password':'chingchenghanji'}
+                'tanggal_lahir':'1990-05-05',
+                'jenis_kelamin':'Laki-laki',
+                'disabilitas':'',
+                'pekerjaan':'Mahasiswa',
+                'alamat':'Alamat Palsu'}
         self.client.post(url, data)
 
     def test_create_user(self):
@@ -29,8 +33,13 @@ class UserTests(APITestCase):
         url = reverse('create-user')
         data = {'name': 'Astray',
                 'email':'astrayyahoo@gmail.com',
-                'phone_number':'08989221856',
                 'password':'chingchenghanji',
+                'phone_number':'08989221856',
+                'tanggal_lahir':'1990-05-05',
+                'jenis_kelamin':'Laki-laki',
+                'disabilitas':'Yuhu',
+                'pekerjaan':'Mahasiswa',
+                'alamat':'Alamat Palsu',
                 'is_active': True}
         response = self.client.post(url, data)
         self.assertEqual(response.status_code, status.HTTP_201_CREATED)
@@ -42,14 +51,14 @@ class UserTests(APITestCase):
         response = self.client.get(url, format='json')
         self.assertEqual(response.status_code, status.HTTP_200_OK)
         json_test = json.loads(response.content)
-        self.assertEqual(len(json_test), 4) #JSON Attribute
+        self.assertEqual(len(json_test), 10) #JSON Attribute
 
     def test_account_details(self):
         url = reverse('user-details', kwargs={'email':'astraykai@gmail.com'})
         response = self.client.get(url, format='json')
         self.assertEqual(response.status_code, status.HTTP_200_OK)
         json_test = json.loads(response.content)
-        self.assertEqual(len(json_test), 4) #JSON Attribute
+        self.assertEqual(len(json_test), 10) #JSON Attribute
 
     def test_account_list(self):
         url = reverse('user-list')
@@ -60,21 +69,25 @@ class UserTests(APITestCase):
 
     def test_incomplete_create_user(self):
         url = reverse('create-user')
-        data = {'name': 'Astray',
-                'email':'astrayyahoo@gmail.com',
+        data = {'email':'astrayyahoo@gmail.com',
                 'password':'chingchenghanji',
                 'is_active': True}
         response = self.client.post(url, data)
         self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
         json_response = json.loads(response.content)
-        self.assertEqual(json_response['response'], 'bad request. \'phone_number\' key needed')
+        self.assertEqual(json_response.get('response'), 'bad request. \'name\' key needed')
 
     def test_user_already_exist(self):
         url = reverse('create-user')
         data = {'name': 'Astraykai',
                 'email':'astraykai@gmail.com',
-                'phone_number':'089892218567',
                 'password':'chingchenghanji',
+                'phone_number':'089892218567',
+                'tanggal_lahir':'1990-05-05',
+                'jenis_kelamin':'Laki-laki',
+                'disabilitas':'',
+                'pekerjaan':'Mahasiswa',
+                'alamat':'Alamat Palsu',
                 'is_active': True}
         response = self.client.post(url, data)
         self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
@@ -85,12 +98,17 @@ class UserTests(APITestCase):
         url = reverse('user-list')
         data = {'name': 'Astraykai',
                 'email':'astraykai@gmail.com',
-                'phone_number':'089892218567',
                 'password':'chingchenghanji',
+                'phone_number':'089892218567',
+                'tanggal_lahir':'1990-05-05',
+                'jenis_kelamin':'Laki-laki',
+                'disabilitas':'',
+                'pekerjaan':'Mahasiswa',
+                'alamat':'Alamat Palsu',
                 'is_active': True}
         response = self.client.post(url, data)
         self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED)
-        json_response = json.loads(response.content)
+        json.loads(response.content)
 
     def test_account_login(self):
         pass
@@ -111,6 +129,31 @@ class UserTests(APITestCase):
         json_response = json.loads(response.content)
         self.assertEqual(json_response['response'], 'User activated')
 
+    def test_update_existing_user(self):
+        url = reverse('update-user')
+        data = {'email':'astraykai@gmail.com',
+                'phone_number':'089892218567',
+                'tanggal_lahir':'1990-05-05',
+                'jenis_kelamin':'Laki-laki',
+                'disabilitas':'',
+                'pekerjaan':'Mahasiswa',
+                'alamat':'Alamat Palsu'}
+        response = self.client.post(url, data)
+        json_response = json.loads(response.content)
+        self.assertEqual(json_response['response'], 'User updated')
+    
+    def test_update_nonexistince_user(self):
+        url = reverse('update-user')
+        data = {'email':'astraykaii@gmail.com',
+                'phone_number':'089892218567',
+                'tanggal_lahir':'1990-05-05',
+                'jenis_kelamin':'Laki-laki',
+                'disabilitas':'',
+                'pekerjaan':'Mahasiswa',
+                'alamat':'Alamat Palsu'}
+        response = self.client.post(url, data)
+        json_response = json.loads(response.content)
+        self.assertEqual(json_response['response'], 'User not found')
 
 class InfoTests(APITestCase, URLPatternsTestCase):
     pass
diff --git a/new_rest_api/urls.py b/new_rest_api/urls.py
index 54da0baff1b845861f60f4dce71932c242cb4760..f6456d2a95ae27022c9e7ed111e1243b77dc992a 100644
--- a/new_rest_api/urls.py
+++ b/new_rest_api/urls.py
@@ -1,16 +1,14 @@
-from django.contrib import admin
 from django.urls import path
-from rest_framework import routers
-from rest_framework.authtoken import views
 import new_rest_api.views
-from django.views.generic import TemplateView
 
 
 urlpatterns = [
     path('user-list/', new_rest_api.views.user_list, name='user-list'),
     path('user-detail/<str:email>', new_rest_api.views.user_details, name='user-details'),
-    path('user-detail/?email=<str:email>', new_rest_api.views.user_details, name='user-details-get'),
+    path('user-detail/?email=<str:email>',
+         new_rest_api.views.user_details, name='user-details-get'),
+    path('update-user/', new_rest_api.views.update_user, name='update-user'),
     path('register/', new_rest_api.views.register_user, name='create-user'),
     path(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
-        new_rest_api.views.activate, name='activate'),
+         new_rest_api.views.activate, name='activate'),
 ]
diff --git a/new_rest_api/views.py b/new_rest_api/views.py
index ea2077f740cdb46a79a28ab34b0dc4305999a9a0..494e86c3612c3302b2b46fddd3f10fd796ccc2b3 100644
--- a/new_rest_api/views.py
+++ b/new_rest_api/views.py
@@ -4,29 +4,17 @@ from django.contrib.auth.models import User
 from django.http import JsonResponse, QueryDict
 from django.views.decorators.csrf import csrf_exempt
 
-from allauth.socialaccount.providers.oauth2.client import OAuth2Client
-
-from rest_auth.registration.serializers import SocialLoginSerializer
-from rest_auth.registration.views import SocialLoginView
-from rest_framework import viewsets
-from rest_framework.renderers import JSONRenderer
-from rest_framework.parsers import JSONParser
-from rest_framework.permissions import IsAuthenticated
-from rest_framework.response import Response
 from rest_framework.decorators import api_view, permission_classes, authentication_classes
-from rest_framework.utils.serializer_helpers import ReturnDict
-
-from registrasi.models import BisaGoUser
-from registrasi.serializers import BisaGoUserSerializers
 
 from django.db.utils import IntegrityError
-from django.contrib.sites.models import Site
 from django.utils.encoding import force_bytes, force_text
 from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
 from django.template.loader import render_to_string
-from .tokens import account_activation_token
 from django.core.mail import EmailMessage
 from django.core.exceptions import ObjectDoesNotExist
+from registrasi.models import BisaGoUser
+from registrasi.serializers import BisaGoUserSerializers
+from .tokens import account_activation_token
 
 def request_error_message(request_kind):
     return "get {} request instead".format(request_kind)
@@ -49,7 +37,8 @@ def user_list(request):
                                 "phone_number": user.phone_number})
         return JsonResponse(json_return, safe=False, status=status.OK)
     else:
-        return JsonResponse({'response' : request_error_message("get")}, status=status.METHOD_NOT_ALLOWED)
+        return JsonResponse({'response' : request_error_message("get")},
+                            status=status.METHOD_NOT_ALLOWED)
 
 @api_view(['GET'])
 @authentication_classes([])
@@ -61,13 +50,14 @@ def user_details(request, email):
             bisa_go_user = BisaGoUser.objects.get(user=user)
             serializer = BisaGoUserSerializers(bisa_go_user)
             json_return = {"username":user.email,
-                        "name": user.last_name,
-                        "email": user.email,
-                        "phone_number": bisa_go_user.phone_number}
+                           "name": user.last_name,
+                           "email": user.email,
+                           "phone_number": bisa_go_user.phone_number}
             json_return.update(serializer.data)
             return JsonResponse(json_return, safe=False, status=status.OK)
         else:
-            return JsonResponse({'response' : request_error_message("get")}, status=status.METHOD_NOT_ALLOWED)
+            return JsonResponse({'response' : request_error_message("get")},
+                                status=status.METHOD_NOT_ALLOWED)
     except ObjectDoesNotExist:
         return JsonResponse({'response': 'User not found'}, status=status.NOT_FOUND)
 
@@ -81,7 +71,8 @@ def register_user(request):
             email = request.POST['email']
             password = request.POST['password']
             data = dict(list(request.POST.dict().items())[3:])
-            user = User.objects.create_user(username=email, email=email, password=password, last_name=name)
+            user = User.objects.create_user(username=email, email=email,
+                                            password=password, last_name=name)
             user.is_active = False
             user.save()
             data['user'] = user.pk
@@ -100,15 +91,17 @@ def register_user(request):
             serializer = BisaGoUserSerializers(data=data_query_dict)
             if serializer.is_valid():
                 serializer.save()
-                return JsonResponse({'response' : 'User created', 'email':email, 'name':name}, status = status.CREATED)
+                return JsonResponse({'response' : 'User created', 'email':email, 'name':name},
+                                    status=status.CREATED)
             else:
                 return JsonResponse(serializer.errors, status=status.BAD_REQUEST)
-    except KeyError as e:
-        return JsonResponse({'response' : missing_key_message(str(e))}, status=status.INTERNAL_SERVER_ERROR)
-    except IntegrityError as e:
-        return JsonResponse({'response' : 'User is already exist'}, status=status.INTERNAL_SERVER_ERROR)
+    except KeyError as error:
+        return JsonResponse({'response' : missing_key_message(str(error))},
+                            status=status.INTERNAL_SERVER_ERROR)
+    except IntegrityError as error:
+        return JsonResponse({'response' : 'User is already exist'},
+                            status=status.INTERNAL_SERVER_ERROR)
 
-         
 @api_view(['GET'])
 @authentication_classes([])
 @permission_classes([])
@@ -124,8 +117,37 @@ def activate(request, uidb64, token):
             user.save()
         # login(request, user)
         # return redirect('home')
-            return JsonResponse({'response' : 'User activated'}, status = status.CREATED)
+            return JsonResponse({'response' : 'User activated'}, status=status.CREATED)
         else:
-            return JsonResponse({'response' : request_error_message('get')}, status = status.BAD_REQUEST)
+            return JsonResponse({'response' : request_error_message('get')},
+                                status=status.BAD_REQUEST)
     else:
-        return JsonResponse({'response' : request_error_message("get")}, status = status.BAD_REQUEST)
+        return JsonResponse({'response' : request_error_message("get")}, status=status.BAD_REQUEST)
+
+@api_view(['POST'])
+@authentication_classes([])
+@permission_classes([])
+def update_user(request):
+    try:
+        if request.method == 'POST':
+            email = request.POST['email']
+            phone_number = request.POST['phone_number']
+            tanggal_lahir = request.POST['tanggal_lahir']
+            jenis_kelamin = request.POST['jenis_kelamin']
+            disabilitas = request.POST['disabilitas']
+            pekerjaan = request.POST['pekerjaan']
+            alamat = request.POST['alamat']
+
+            user = User.objects.get(username=email)
+            bisa_go_user = BisaGoUser.objects.get(user=user)
+            bisa_go_user.phone_number = phone_number
+            bisa_go_user.tanggal_lahir = tanggal_lahir
+            bisa_go_user.jenis_kelamin = jenis_kelamin
+            bisa_go_user.disabilitas = disabilitas
+            bisa_go_user.pekerjaan = pekerjaan
+            bisa_go_user.alamat = alamat
+            bisa_go_user.save()
+
+            return JsonResponse({'response': 'User updated'}, safe=False, status=status.OK)
+    except ObjectDoesNotExist:
+        return JsonResponse({'response': 'User not found'}, status=status.NOT_FOUND)