text: from flask import url_for
  
  from app.extensions import db
  from app.models import User
  
  
  def test_auth_login_success_mfa_disabled(flask_client):
      User.create(email="a@b.c", password="password", name="Test User", activated=True)
      db.session.commit()
  
      r = flask_client.post(
          url_for("api.auth_login"),
          json={"email": "a@b.c", "password": "password", "device": "Test Device"},
      )
  
      assert r.status_code == 200
      assert r.json["api_key"]
      assert r.json["mfa_enabled"] == False
      assert r.json["mfa_key"] is None
      assert r.json["name"] == "Test User"
  
  
  def test_auth_login_success_mfa_enabled(flask_client):
      User.create(
          email="a@b.c",
          password="password",
          name="Test User",
          activated=True,
          enable_otp=True,
      )
      db.session.commit()
  
      r = flask_client.post(
          url_for("api.auth_login"),
          json={"email": "a@b.c", "password": "password", "device": "Test Device"},
      )
  
      assert r.status_code == 200
      assert r.json["api_key"] is None
      assert r.json["mfa_enabled"] == True
      assert r.json["mfa_key"]
      assert r.json["name"] == "Test User"
  
  
  def test_auth_login_device_exist(flask_client):
      User.create(email="a@b.c", password="password", name="Test User", activated=True)
      db.session.commit()
  
      r = flask_client.post(
          url_for("api.auth_login"),
          json={"email": "a@b.c", "password": "password", "device": "Test Device"},
      )
  
      assert r.status_code == 200
      api_key = r.json["api_key"]
      assert r.json["mfa_enabled"] == False
      assert r.json["mfa_key"] is None
      assert r.json["name"] == "Test User"
  
      # same device, should return same api_key
      r = flask_client.post(
          url_for("api.auth_login"),
          json={"email": "a@b.c", "password": "password", "device": "Test Device"},
      )
      assert r.json["api_key"] == api_key
  