From 29a5932b2158dba3c7596217f56012a1336eda95 Mon Sep 17 00:00:00 2001 From: jang Date: Sun, 21 May 2017 12:40:57 +0900 Subject: [PATCH 1/5] Fix test of logout and login button on header --- .../functional_tests/mainpage_tests.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/linku_backend/functional_tests/mainpage_tests.py b/linku_backend/functional_tests/mainpage_tests.py index c92f56b0..67e29702 100644 --- a/linku_backend/functional_tests/mainpage_tests.py +++ b/linku_backend/functional_tests/mainpage_tests.py @@ -4,6 +4,7 @@ from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.common.keys import Keys def test_login_and_logout_button_on_main_page(browser): @@ -18,17 +19,15 @@ def test_login_and_logout_button_on_main_page(browser): # 비밀번호를 1234를 입력하고 browser.find_element_by_xpath("//input[@name='password']").send_keys('1234') # 로그인 버튼을 클릭했더니 - #element = WebDriverWait(browser, 30).until( - # EC.presence_of_element_located((By.XPATH, "//form[@class='ui form']/button")) - #) - #browser.get(BASE_URL + '/login') + browser.find_element_by_xpath("//form[@class='ui form']/button").send_keys(Keys.ENTER) + # 로그아웃 버튼이 나올 때 까지 기다리자 + logout_element = WebDriverWait(browser, 30).until( + EC.presence_of_element_located((By.XPATH, "//button[text()='로그아웃']")) + ) # 메인화면으로 다시 돌아왔고 - #element.click() - - #assert BASE_URL == browser.current_url + assert BASE_URL + "/" == browser.current_url # 메인페이지에는 로그인이라고 써져있던 버튼이 로그아웃으로 바껴 있었다. - #logout_elem = browser.find_element_by_xpath("//button[text()='로그아웃']") # 그래서 로그아웃 버튼을 눌렀더니 - #logout_elem.click() + logout_element.click() # 다시 로그인 버튼으로 바뀌었다. - #browser.find_element_by_xpath("//button[text()='로그인']") + browser.find_element_by_xpath("//button[text()='로그인']") From 7e65fb1762c8791e19fc759ae1841a6aaf1f58e8 Mon Sep 17 00:00:00 2001 From: jang Date: Sun, 21 May 2017 14:03:41 +0900 Subject: [PATCH 2/5] Add sub description for email input in login --- linku_frontend/linku/src/components/login/LoginForm.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linku_frontend/linku/src/components/login/LoginForm.js b/linku_frontend/linku/src/components/login/LoginForm.js index fe09806f..f94f3459 100644 --- a/linku_frontend/linku/src/components/login/LoginForm.js +++ b/linku_frontend/linku/src/components/login/LoginForm.js @@ -28,7 +28,7 @@ const renderField = ({ input, label, type, htmlFor, labelText, meta: { touched, const LoginForm = ({handleSubmit, submitting}) => { return (
- + From 14d3e40308c72fe07cea35430880fb0dd46ce9ec Mon Sep 17 00:00:00 2001 From: jang Date: Tue, 23 May 2017 19:11:31 +0900 Subject: [PATCH 3/5] Make /leave-user api --- linku_backend/linku/urls.py | 1 + linku_backend/meeting/tests/user_tests.py | 21 +++++++++++++++++++++ linku_backend/meeting/views.py | 10 ++++++++++ 3 files changed, 32 insertions(+) diff --git a/linku_backend/linku/urls.py b/linku_backend/linku/urls.py index a290403a..9fa39b20 100644 --- a/linku_backend/linku/urls.py +++ b/linku_backend/linku/urls.py @@ -35,6 +35,7 @@ url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')), url(r'^login/', obtain_auth_token), url(r'^user/', views.get_user_info, name='get_user_info'), + url(r'^leave-user/', views.leave_user, name='leave_user'), url(r'^participated-dates/', views.get_participated_dates, name='get_participated_dates'), url(r'^apply-alarm/', views.apply_alarm, name='apply_alarm'), url(r'^next-meeting-alarm/', views.next_meeting_alarm, name='next_meeting_alarm'), diff --git a/linku_backend/meeting/tests/user_tests.py b/linku_backend/meeting/tests/user_tests.py index 73372eb1..4048c8e6 100644 --- a/linku_backend/meeting/tests/user_tests.py +++ b/linku_backend/meeting/tests/user_tests.py @@ -4,6 +4,7 @@ from rest_framework.authtoken.models import Token from meeting.models import User, Meeting, StatusByDay +from django.core.exceptions import ObjectDoesNotExist @pytest.mark.django_db @@ -99,3 +100,23 @@ def test_next_meeting_alarm_request(client): response = client.post('/next-meeting-alarm/', {}, **auth_headers) assert response.status_code == 400 assert response.data['Message'] == "Already Done" + + +@pytest.mark.django_db +def test_leave_user(client): + user = create_test_user(client) + + auth_headers = { + 'HTTP_AUTHORIZATION': 'Token ' + get_login_token(user) + } + + response = client.post('/leave-user/', {}, **auth_headers) + + assert response.status_code == 200 + assert response.data['Message'] == "Success" + + try: + User.objects.get(username=user.username) + raise Exception + except ObjectDoesNotExist: + pass diff --git a/linku_backend/meeting/views.py b/linku_backend/meeting/views.py index f1e75365..eb7ff82b 100644 --- a/linku_backend/meeting/views.py +++ b/linku_backend/meeting/views.py @@ -202,6 +202,16 @@ def next_meeting_alarm(request, format=None): return Response({"Message": "Success"}) +@api_view(['POST']) +@authentication_classes((TokenAuthentication,)) +@permission_classes((IsAuthenticated,)) +def leave_user(request): + if request.method == 'POST': + request.user.delete() + return Response({"Message": "Success"}) + return Response(status=status.HTTP_400_BAD_REQUEST) + + @api_view(['POST']) def check_university_verification_auth_number(request): if request.method == 'POST': From b30c114d93e6e4665f96dc3d65e96f6835f46bdd Mon Sep 17 00:00:00 2001 From: TWpower Date: Fri, 26 May 2017 14:50:47 +0900 Subject: [PATCH 4/5] Remove 26th ~ 28th May Meeting --- linku_backend/functional_tests/meeting_tests.py | 2 +- linku_frontend/linku/src/sagas/meeting.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/linku_backend/functional_tests/meeting_tests.py b/linku_backend/functional_tests/meeting_tests.py index 0b9bbd02..ec7f8fc7 100644 --- a/linku_backend/functional_tests/meeting_tests.py +++ b/linku_backend/functional_tests/meeting_tests.py @@ -16,4 +16,4 @@ def login_with(browser, username, password): def test_show_meeting_infos(browser): browser.get(BASE_URL) meeting_card = browser.find_elements_by_xpath("//div[@id='meeting-card']") - assert len(meeting_card) == 2 + assert len(meeting_card) == 1 diff --git a/linku_frontend/linku/src/sagas/meeting.js b/linku_frontend/linku/src/sagas/meeting.js index 4c503c3a..df0e09bd 100644 --- a/linku_frontend/linku/src/sagas/meeting.js +++ b/linku_frontend/linku/src/sagas/meeting.js @@ -7,7 +7,6 @@ function* fetchMeetingCardInfos(action){ yield put(actions.requestMeetingCardInfos()); let meetings = []; meetings.push(yield [call(service.getCurrentMeetingInfos)]); - meetings.push(yield [call(service.getPrearrangedMeetingInfos)]); yield put(actions.receiveMeetingCardInfos(meetings)); }catch(e){ console.log(e); From cfb91f52f3f7b805cc141abf8ae6db10ee4f32a3 Mon Sep 17 00:00:00 2001 From: TWpower Date: Fri, 26 May 2017 15:31:30 +0900 Subject: [PATCH 5/5] Fix only show June 2th and 4th meeting --- linku_frontend/linku/src/sagas/meeting.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linku_frontend/linku/src/sagas/meeting.js b/linku_frontend/linku/src/sagas/meeting.js index df0e09bd..764b4828 100644 --- a/linku_frontend/linku/src/sagas/meeting.js +++ b/linku_frontend/linku/src/sagas/meeting.js @@ -6,7 +6,7 @@ function* fetchMeetingCardInfos(action){ try{ yield put(actions.requestMeetingCardInfos()); let meetings = []; - meetings.push(yield [call(service.getCurrentMeetingInfos)]); + meetings.push(yield [call(service.getPrearrangedMeetingInfos)]); yield put(actions.receiveMeetingCardInfos(meetings)); }catch(e){ console.log(e);