회원가입,탈퇴, 유저 수정을 위한 테스트 케이스 코드를 작성하였다.
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)