Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove create user endpoint and serializer 518 #545

Merged
merged 9 commits into from
Feb 19, 2021
28 changes: 0 additions & 28 deletions tdrs-backend/tdpservice/users/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,34 +57,6 @@ class Meta:
)
read_only_fields = ("username",)


class CreateUserSerializer(serializers.ModelSerializer):
"""Defined class to create the user serializer."""

def create(self, validated_data):
"""Serialize the user object."""
# call create_user on user object. Without this
# the password will be stored in plain text.
user = User.objects.create_user(**validated_data)
return user

class Meta:
"""Define meta user serializer attributes."""

model = User
fields = (
"id",
"username",
"password",
"first_name",
"last_name",
"email",
"auth_token",
)
read_only_fields = ("auth_token",)
extra_kwargs = {"password": {"write_only": True}}


class UserProfileSerializer(serializers.ModelSerializer):
"""Serializer used for setting a user's profile."""

Expand Down
15 changes: 3 additions & 12 deletions tdrs-backend/tdpservice/users/test/test_api/test_basic.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
"""Basic API User Tests."""
from django.contrib.auth import get_user_model
from django.core.management import call_command
import pytest
from rest_framework import status

User = get_user_model()

@pytest.mark.django_db
@pytest.fixture(scope="function")
def create_test_users():
"""Create users for each group."""
call_command("generate_test_users")


@pytest.mark.django_db
def test_retrieve_user(api_client, user):
"""Test user retrieval."""
Expand Down Expand Up @@ -40,8 +32,7 @@ def test_cannot_update_user_anonymously(api_client, user):


@pytest.mark.django_db
def test_create_user(api_client, user_data):
"""Test user creation."""
def test_create_user_endpoint_not_present(api_client, user_data):
"""Test removed endpoint is no longer there."""
response = api_client.post("/v1/users/", user_data)
assert response.status_code == status.HTTP_201_CREATED
assert User.objects.filter(username=user_data["username"]).exists()
carltonsmith marked this conversation as resolved.
Show resolved Hide resolved
assert response.status_code == status.HTTP_404_NOT_FOUND
28 changes: 0 additions & 28 deletions tdrs-backend/tdpservice/users/test/test_serializers.py
Original file line number Diff line number Diff line change
@@ -1,29 +1 @@
"""Test user serializers."""
from django.contrib.auth.hashers import check_password

import pytest

from ..serializers import CreateUserSerializer


def test_serializer_with_empty_data():
"""If an empty serialized request is returned it should not be valid."""
serializer = CreateUserSerializer(data={})
assert serializer.is_valid() is False


@pytest.mark.django_db
def test_serializer_with_valid_data(user_data):
"""If a serializer has valid data it will return a valid object."""
serializer = CreateUserSerializer(data=user_data)
assert serializer.is_valid() is True


@pytest.mark.django_db
def test_serializer_hashes_password(user_data):
"""The serializer should hash the user's password."""
serializer = CreateUserSerializer(data=user_data)
assert serializer.is_valid() is True

user = serializer.save()
assert check_password(user_data["password"], user.password) is True
5 changes: 0 additions & 5 deletions tdrs-backend/tdpservice/users/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,12 @@
from django.contrib.auth.models import Group
from rest_framework import mixins, viewsets
from rest_framework.decorators import action
from rest_framework.permissions import AllowAny
from rest_framework.response import Response

from .models import User
from .permissions import IsAdmin, IsUser
from django.utils import timezone
from .serializers import (
CreateUserSerializer,
UserProfileSerializer,
UserSerializer,
GroupSerializer
Expand All @@ -20,7 +18,6 @@


class UserViewSet(
mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
viewsets.GenericViewSet,
Expand All @@ -34,7 +31,6 @@ class UserViewSet(
def get_permissions(self):
"""Get permissions for the viewset."""
permission_classes = {
"create": [AllowAny],
"retrieve": [IsUser | IsAdmin],
"set_profile": [IsUser | IsAdmin],
"partial_update": [IsUser | IsAdmin],
Expand All @@ -46,7 +42,6 @@ def get_permissions(self):
def get_serializer_class(self):
"""Return the serializer class."""
return {
"create": CreateUserSerializer,
"set_profile": UserProfileSerializer,
}.get(self.action, UserSerializer)

Expand Down