Fakultas Ilmu Komputer UI

Commit 8f61cce5 authored by Farah Alhaniy's avatar Farah Alhaniy
Browse files

Update Readme for 21.1 - 21.2

parent 5365e976
Pipeline #26133 failed with stages
in 2 minutes and 44 seconds
......@@ -179,6 +179,50 @@ Dengan implementasi di **accounts/views.py** seperti berikut ini
Dengan implementasi tersebut, test tanpa mock terpenuhi sedangkan test dengan mock gagal terpenuhi. Dalam kata lain, dengan mock kita harus memiliki detil implementasi yang sesuai pada views, walaupun sebenarnya hasilnya sama sama benar.
## Exercise 8
**Perbedaan implementasi functional test fitur login**
### Perbedaan implementasi functional test fitur login**
Pada bab 20.1 kita ingin menggunakan functional authentication system agar dapat mengidentifikasikan user dan memperlihatkan list yang sudah mereka buat. Maka dari itu kita membuat FT untuk logged-in user sehingga daripada melakukan seluruh prosedur dari tahap login yang memakan waktu, kita dapat melewati bagian login email (karena sudah logged in).
Pada implementasinya, kita menambahkan fungsi `create_pre_authenticated_session` dibawah untuk melakukan login. Dari situ kita akan menggunakan sessionnya untuk FT lainnya sehingga tidak melakukan login berulang kali.
```
class MyListsTest(FunctionalTest):
def create_pre_authenticated_session(self, email):
user = User.objects.create(email=email)
session = SessionStore()
session[SESSION_KEY] = user.pk
session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0]
session.save()
## to set a cookie we need to first visit the domain.
## 404 pages load the quickest!
self.browser.get(self.live_server_url + "/404_no_such_url/")
self.browser.add_cookie(dict(
name=settings.SESSION_COOKIE_NAME,
value=session.session_key,
path='/',
))
def test_logged_in_users_lists_are_saved_as_my_lists(self):
email = 'edith@example.com'
self.browser.get(self.live_server_url)
self.wait_to_be_logged_out(email)
# Edith is a logged-in user
self.create_pre_authenticated_session(email)
self.browser.get(self.live_server_url)
self.wait_to_be_logged_in(email)
```
### Pada hasil deployment untuk implementasi baru 21.1-21.2, apakah terjadi error?**
Ya, ketikan dijalankan `heroku run python3 manage.py test functional_tests -a pmpl-farah` terjadi error dikarenakan sistem authentication yang baru menyebabkan tidak bisa login pada session apapun.
Untuk bagian 21.2, pada logs di heroku bisa dilihat bahwa ada error SMTPSenderRefused dikarenakan dibutuhkannya password dari email ketika akan mengirimkan email login. Berikut adalah error yang muncul pada logs heroku :
```
2019-11-26T09:15:03.956705+00:00 app[web.1]: self.connection.sendmail(from_email, recipients, message.as_bytes(linesep='\r\n'))
2019-11-26T09:15:03.956707+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/smtplib.py", line 867, in sendmail
2019-11-26T09:15:03.956709+00:00 app[web.1]: raise SMTPSenderRefused(code, resp, from_addr)
2019-11-26T09:15:03.956712+00:00 app[web.1]: smtplib.SMTPSenderRefused: (530, b'5.5.1 Authentication Required. Learn more at\n5.5.1 https://support.google.com/mail/?p=WantAuthError m6sm4766481qke.80 - gsmtp', 'noreply@superlists')
2019-11-26T09:15:03.957480+00:00 app[web.1]: 10.69.117.24 - - [26/Nov/2019:09:15:03 +0000] "POST /accounts/send_login_email HTTP/1.1" 500 86865 "http://pmpl-farah.herokuapp.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
```
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment