TIF_NGANJUK_E41222052/tests/register/test_register_password.py

161 lines
5.1 KiB
Python

import pytest
@pytest.mark.usefixtures("driver")
class TestRegisterPassword:
"""
RULE PASSWORD:
- Wajib diisi (HTML5)
- Minimal 8 karakter
- Maksimal 12 karakter
- Boleh mengandung spasi
- Wajib mengandung:
- Huruf besar
- Huruf kecil
- Angka atau karakter khusus
- Validasi muncul setelah klik submit
"""
# =========================
# HTML5 VALIDATION
# =========================
def test_password_kosong(self, register_page, valid_register_data):
"""
Password kosong → HTML5 required
"""
valid_register_data["password"] = ""
valid_register_data["konfirmasi_password"] = ""
register_page.fill_form(valid_register_data)
# TIDAK perlu submit, HTML5 sudah aktif
assert register_page.is_field_required("password")
# =========================
# NEGATIVE TEST CASES (CUSTOM VALIDATION)
# =========================
def test_password_kurang_dari_minimum(self, register_page, valid_register_data):
valid_register_data["password"] = "Ab1@"
valid_register_data["konfirmasi_password"] = "Ab1@"
register_page.fill_form(valid_register_data)
register_page.submit()
assert register_page.has_error("Password")
def test_password_lebih_dari_maksimum(self, register_page, valid_register_data):
valid_register_data["password"] = "Abcdef1@xxxx"
valid_register_data["konfirmasi_password"] = "Abcdef1@xxxx"
register_page.fill_form(valid_register_data)
register_page.submit()
assert register_page.has_error("Password")
def test_password_tanpa_huruf_kapital(self, register_page, valid_register_data):
valid_register_data["password"] = "abcdef1@"
valid_register_data["konfirmasi_password"] = "abcdef1@"
register_page.fill_form(valid_register_data)
register_page.submit()
assert register_page.has_error("Password")
def test_password_tanpa_huruf_kecil(self, register_page, valid_register_data):
valid_register_data["password"] = "ABCDEF1@"
valid_register_data["konfirmasi_password"] = "ABCDEF1@"
register_page.fill_form(valid_register_data)
register_page.submit()
assert register_page.has_error("Password")
def test_password_tanpa_angka(self, register_page, valid_register_data):
valid_register_data["password"] = "Abcdef@@"
valid_register_data["konfirmasi_password"] = "Abcdef@@"
register_page.fill_form(valid_register_data)
register_page.submit()
assert register_page.has_error("Password")
def test_password_tanpa_karakter_khusus(self, register_page, valid_register_data):
valid_register_data["password"] = "Abcdef12"
valid_register_data["konfirmasi_password"] = "Abcdef12"
register_page.fill_form(valid_register_data)
register_page.submit()
assert register_page.has_error("Password")
@pytest.mark.parametrize(
"password",
[
"12345678", # angka semua
"abcdefgh", # huruf kecil semua
"ABCDEFGH", # huruf besar semua
"&&&&&&&&", # simbol semua
]
)
def test_password_komposisi_tidak_valid(
self, register_page, valid_register_data, password
):
valid_register_data["password"] = password
valid_register_data["konfirmasi_password"] = password
register_page.fill_form(valid_register_data)
register_page.submit()
assert register_page.has_error("Password")
def test_password_mengandung_spasi(self, register_page, valid_register_data):
"""
Spasi BOLEH, selama rule lain terpenuhi
"""
valid_register_data["password"] = "Abc def1@"
valid_register_data["konfirmasi_password"] = "Abc def1@"
register_page.fill_form(valid_register_data)
register_page.submit()
assert register_page.is_register_success()
def test_password_tepat_minimum(self, register_page, valid_register_data):
valid_register_data["password"] = "Abcd1@xy"
valid_register_data["konfirmasi_password"] = "Abcd1@xy"
register_page.fill_form(valid_register_data)
register_page.submit()
assert register_page.is_register_success()
def test_password_tepat_maksimum(self, register_page, valid_register_data):
"""
Boundary value: tepat 12 karakter
"""
valid_register_data["password"] = "Abcd12@xyzQ"
valid_register_data["konfirmasi_password"] = "Abcd12@xyzQ"
register_page.fill_form(valid_register_data)
register_page.submit()
assert register_page.is_register_success()
def test_password_valid_kriteria(self, register_page, valid_register_data):
"""
Boundary value: tepat 8 karakter
"""
valid_register_data["password"] = "#Qwerty123"
valid_register_data["konfirmasi_password"] = "#Qwerty123"
register_page.fill_form(valid_register_data)
register_page.submit()
assert register_page.is_register_success()
# =========================
# POSITIVE TEST CASE
# =========================