본문 바로가기

카테고리 없음

DRF+ AI) 웹개발 최종 - 2일차

회원가입,탈퇴, 유저 수정을 위한 테스트 케이스 코드를 작성하였다.

 

class UserBaseTestCase(APITestCase):
    @classmethod
    def setUpTestData(cls) -> None:
        cls.user = User.objects.create_user(
            nickname="testuser1",
            email="testuser1@gmail.com",
            password="xptmxm111!",
        )
        cls.user_signup_data = {
            "nickname": "testuser2",
            "password": "xptmxm111!",
            "password2": "xptmxm111!",
            "email": "testuser2@gmail.com",
            "age": 20,
            "gender": "Male",
        }
        cls.user_edit_data = {"current_password": "xptmxm111!"}
        cls.user_login_data = {"email": "testuser1@gmail.com", "password": "xptmxm111!"}

    def setUp(self) -> None:
        login_user = self.client.post(reverse("token"), self.user_login_data).data
        self.access = login_user["access"]
        self.refresh = login_user["refresh"]

이 클래스는 클래스 메서드와 인스턴스 메서드를 이용해 회원가입을 위한 정보, 로그인을 위한 정보를 미리 지정해 놓는다. 이 클래스를 상속함으로서 로그인이 필요하거나 회원가입이 필요한 서비스드에 대한 테스트가 가능하다.

 

class UserSignUpTestCase(UserBaseTestCase):

    url = reverse("signup")

    def test_signup(self):
        data = self.user_signup_data
        response = self.client.post(
            path=self.url,
            data=data,
        )
        self.assertEqual(response.status_code, 201)

        test_signuped_user = User.objects.get(username=data["email"])
        self.assertEqual(test_signuped_user.username, data["email"])

    def test_signup_password_not_same(self):

        data = self.user_signup_data
        data["password2"] = "qhdks222!"
        response = self.client.post(
            path=self.url,
            data=data,
        )
        self.assertEqual(response.status_code, 400)

    def test_signup_password_rule(self):
        data = self.user_signup_data
        data["password"], data["password2"] = "0000", "0000"
        response = self.client.post(
            path=self.url,
            data=data,
        )
        self.assertEqual(response.status_code, 400)

    def test_signup_email_rule(self):
        data = self.user_signup_data
        data["email"] = "naver@gmail@gmail.com"
        response = self.client.post(
            path=self.url,
            data=data,
        )
        self.assertEqual(response.status_code, 400)

    def test_invalid_data(self):
        data = self.user_signup_data
        data["age"] = "test"
        response = self.client.post(
            path=self.url,
            data=data,
        )
        print(response.status_code)
        self.assertEqual(response.status_code, 400)