from django.test import TestCase
from django.test.utils import override_settings


class BasicsTestCase(TestCase):
    @override_settings(DEBUG=False, SECRET_KEY="abc")
    def test_it_redirects_to_login(self):
        r = self.client.get("/")
        self.assertRedirects(r, "/accounts/login/")

    @override_settings(DEBUG=False, SECRET_KEY="abc")
    def test_it_shows_no_warning(self):
        r = self.client.get("/accounts/login/")
        self.assertContains(r, "Sign In to", status_code=200)
        self.assertNotContains(r, "do not use in production")

    @override_settings(DEBUG=True, SECRET_KEY="abc")
    def test_it_shows_debug_warning(self):
        r = self.client.get("/accounts/login/")
        self.assertContains(r, "Running in debug mode")

    @override_settings(DEBUG=False, SECRET_KEY="---")
    def test_it_shows_secret_key_warning(self):
        r = self.client.get("/accounts/login/")
        self.assertContains(r, "Sign In to", status_code=200)
        self.assertContains(r, "Running with an insecure SECRET_KEY value")

    @override_settings(REGISTRATION_OPEN=False)
    def test_it_obeys_registration_open(self):
        r = self.client.get("/accounts/login/")

        self.assertNotContains(r, "Sign Up")