from tests import BaseTestCase
from redash.models import Organization


class TestOrganizationSettings(BaseTestCase):
    def test_post(self):
        admin = self.factory.create_admin()
        rv = self.make_request(
            "post",
            "/api/settings/organization",
            data={"auth_password_login_enabled": False},
            user=admin,
        )
        self.assertEqual(rv.json["settings"]["auth_password_login_enabled"], False)
        self.assertEqual(
            self.factory.org.settings["settings"]["auth_password_login_enabled"], False
        )

        rv = self.make_request(
            "post",
            "/api/settings/organization",
            data={"auth_password_login_enabled": True},
            user=admin,
        )
        updated_org = Organization.get_by_slug(self.factory.org.slug)
        self.assertEqual(rv.json["settings"]["auth_password_login_enabled"], True)
        self.assertEqual(
            updated_org.settings["settings"]["auth_password_login_enabled"], True
        )

    def test_updates_google_apps_domains(self):
        admin = self.factory.create_admin()
        domains = ["example.com"]
        rv = self.make_request(
            "post",
            "/api/settings/organization",
            data={"auth_google_apps_domains": domains},
            user=admin,
        )
        updated_org = Organization.get_by_slug(self.factory.org.slug)
        self.assertEqual(updated_org.google_apps_domains, domains)

    def test_get_returns_google_appas_domains(self):
        admin = self.factory.create_admin()
        domains = ["example.com"]
        admin.org.settings[Organization.SETTING_GOOGLE_APPS_DOMAINS] = domains

        rv = self.make_request("get", "/api/settings/organization", user=admin)
        self.assertEqual(rv.json["settings"]["auth_google_apps_domains"], domains)
