Exemplo n.º 1
0
    def test_new_user_must_enter_their_name_on_the_welcome_page(self, app):
        from zam_repondeur.auth import generate_auth_token
        from zam_repondeur.models import DBSession, User
        from zam_repondeur.services.users import repository

        user = DBSession.query(User).filter_by(
            email="*****@*****.**").first()
        assert user is None

        token = generate_auth_token()

        repository.set_auth_token("*****@*****.**", token)

        resp = app.get("/authentification", params={"token": token})
        assert resp.status_code == 302
        assert (
            resp.location ==
            "https://zam.test/bienvenue?source=https%3A%2F%2Fzam.test%2Fdossiers%2F"
        )

        user = DBSession.query(User).filter_by(
            email="*****@*****.**").first()
        assert user.name is None

        resp = resp.follow()
        assert resp.form["name"].value == "Jane Doe"  # prefilled based on email

        resp.form["name"] = " Something Else  "
        resp.form.submit()

        user = DBSession.query(User).filter_by(
            email="*****@*****.**").first()
        assert user.name == "Something Else"
Exemplo n.º 2
0
def auth_token(email):
    from zam_repondeur.services.users import repository

    token = "FOOBA-RBAZQ-UXQUU-XQUUZ"
    repository.set_auth_token(email, token)
    yield token
    repository.delete_auth_token(token)
Exemplo n.º 3
0
Arquivo: auth.py Projeto: betagouv/zam
 def create_auth_token(self, email: str) -> str:
     while True:
         token = generate_auth_token()
         try:
             repository.set_auth_token(email=email, token=token)
         except TokenAlreadyExists:
             logger.warning("Random token already exists, generating a new one")
         else:
             return token
Exemplo n.º 4
0
    def user_login(self, email, headers=None):
        from zam_repondeur.auth import generate_auth_token
        from zam_repondeur.services.users import repository

        token = generate_auth_token()
        repository.set_auth_token(email, token)
        resp = self.get("/authentification",
                        params={"token": token},
                        headers=headers)
        assert resp.status_code == 302
Exemplo n.º 5
0
    def test_user_with_a_name_skips_the_welcome_page(self, app, user_david):
        from zam_repondeur.auth import generate_auth_token
        from zam_repondeur.models import DBSession
        from zam_repondeur.services.users import repository

        with transaction.manager:
            DBSession.add(user_david)

        assert user_david.name == "David"

        token = generate_auth_token()

        repository.set_auth_token(user_david.email, token)

        resp = app.get("/authentification", params={"token": token})
        assert resp.status_code == 302
        assert resp.location == "https://zam.test/dossiers/"
Exemplo n.º 6
0
def login(driver, base_url, email):
    wait = WebDriverWait(driver, 1)

    # Click on authentication link
    token = generate_auth_token()
    repository.set_auth_token(email, token)
    driver.get(f"{base_url}authentification?token={token}")

    # Submit name on first login
    welcome_url = f"{base_url}bienvenue"
    if not driver.current_url.startswith(welcome_url):
        return  # name already known
    assert (
        driver.find_element_by_css_selector("h1").text
        == "C’est votre première connexion…"
    )
    driver.find_element_by_css_selector("input[type='submit']").click()
    wait.until(lambda driver: not driver.current_url.startswith(welcome_url))