# (c) cavaliba.com - test / factory reset / admin password gate

from django.test import TestCase, override_settings

from app_home.factory import factory_reset_available, factory_reset_password_ok


class TestFactoryResetPassword(TestCase):
    @override_settings(CAVALIBA_ADMIN_PASSWORD=None)
    def test_unavailable_without_env_var(self):
        self.assertFalse(factory_reset_available())
        self.assertFalse(factory_reset_password_ok("anything"))

    @override_settings(CAVALIBA_ADMIN_PASSWORD="")
    def test_unavailable_with_empty_env_var(self):
        self.assertFalse(factory_reset_available())
        self.assertFalse(factory_reset_password_ok(""))

    @override_settings(CAVALIBA_ADMIN_PASSWORD="s3cret")
    def test_available_with_env_var(self):
        self.assertTrue(factory_reset_available())

    @override_settings(CAVALIBA_ADMIN_PASSWORD="s3cret")
    def test_wrong_password(self):
        self.assertFalse(factory_reset_password_ok("nope"))
        self.assertFalse(factory_reset_password_ok(""))
        self.assertFalse(factory_reset_password_ok(None))

    @override_settings(CAVALIBA_ADMIN_PASSWORD="s3cret")
    def test_correct_password(self):
        self.assertTrue(factory_reset_password_ok("s3cret"))
