카카오 소셜 로그인 unittest
from unittest.mock import MagicMock, patch
from django.test import Client, TestCase
from .models import User
class Test(TestCase):
def setUp(self):
User.objects.create( #(1)
name ='hyunwoo',
kakao_id = '123456',
email = '[email protected]',
profile_image = "333222"
)
def tearDown(self):
User.objects.all().delete() #(2)
@patch('users.views.requests') #(3)
def test_kakao_social_login_success(self, mocked_request): #(4)
client = Client() #(5)
class Kakao: #(6)
def json(self):#(7)
return{
"id":"123456",
"properties": {"profile_image": "333222"},
"kakao_account":{
"profile": {"nickname" : "hyunwoo"},
"email" : "[email protected]"}
}
mocked_request.get = MagicMock(return_value=Kakao()) #(8)
header = {'HTTP_Authorization' : 'token'} #(9)
response = client.get('/users/login', **header) #(10)
self.assertEqual(response.status_code, 201)
@patch("users.views.requests")
def test_kakao_social_login_fail(self, mocked_request):
client = Client()
class kakao:
def json(self):
return{
"code":-101,
"msg":"NotRegisteredUserException"
}
mocked_request.get = MagicMock(return_value=kakao())
header = {'HTTP_Authorization' : 'token2'}
response = client.get('/users/login', **header)
self.assertEquals(response.status_code, 401)
- 테스트할 가상의 테이블 내용들을 생성해준다.
- 테스트 이후 테이블의 내용을 지운다.
- users.views안에 있는 requests 호출을 진짜로 하지 않고 가짜로 하겠다는 뜻이다.
- test_로 시작하는 함수 안에 있는 것들만 테스트한다.
- 가짜로 데이터를 보내줄 클라이언트를 생성한다.
- 클래스 이름을 정해주고
- 그 값을 json 형태로 받겠다고 해준다.
- kakao class에 가짜 데이터들을 보내준다.
- 헤더에 토큰값과 이름을 넣어준다.
- /users/login의 엔드포인트를 가진 링크에 header값을 보내준다. 이때 **header로 하지 않으면 에러가 난다.
- 테스트를 돌려 201이 호출되면 Ok 성공!
Author And Source
이 문제에 관하여(카카오 소셜 로그인 unittest), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pang/카카오-소셜-로그인-unittest저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)