# Copyright 2016 Jairo Llopis # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from lxml.html import document_fromstring from mock import patch from odoo.tests.common import HttpCase from odoo.tools.misc import mute_logger from odoo.addons.mail.models import mail_template class UICase(HttpCase): def setUp(self): super().setUp() if "website" in self.env: # Enable public signup in website if it is installed; otherwise # tests here would fail current_website = self.env["website"].get_current_website() current_website.auth_signup_uninvited = "b2c" self.env["ir.config_parameter"].set_param("auth_signup.invitation_scope", "b2c") self.data = { "csrf_token": self.csrf_token(), "name": "Somebody", } def html_doc(self, url="/web/signup", data=None, timeout=30): """Get an HTML LXML document.""" with patch(mail_template.__name__ + ".MailTemplate.send_mail"): resp = self.url_open(url, data=data, timeout=timeout) return document_fromstring(resp.content) def csrf_token(self): """Get a valid CSRF token.""" doc = self.html_doc() return doc.xpath("//input[@name='csrf_token']")[0].get("value") def test_bad_email(self): """Test rejection of bad emails.""" self.data["login"] = "bad email" doc = self.html_doc(data=self.data) self.assertTrue(doc.xpath('//p[@class="alert alert-danger"]')) @mute_logger("odoo.addons.auth_signup_verify_email.controllers.main") def test_good_email(self): """Test acceptance of good emails.""" self.data["login"] = "good@example.com" doc = self.html_doc(data=self.data) self.assertTrue(doc.xpath('//p[@class="alert alert-success"]'))