Ë
    +Ñ¦h¡  ã                   ó\   — d Z ddlZ	 ddlmZ ej
                  d„ «       Zy# e$ r dZY Œw xY w)a  
Flask-Dance provides a handy Pytest_ fixture named
``betamax_record_flask_dance`` that wraps Flask-Dance
sessions with Betamax_ to record and replay HTTP requests.
In order to use this fixture, you must install Betamax in your testing
environment. You must also define two other Pytest fixtures:
``app`` and ``flask_dance_sessions``. The ``app`` fixture must
return the Flask app that is being tested, and the
``flask_dance_sessions`` fixture must return the Flask-Dance
session or sessions that should be wrapped using Betamax.

For example:

.. code-block:: python

    from flask_dance.contrib.github import github
    from myapp import app as _app


    @pytest.fixture
    def app():
        return _app


    @pytest.fixture
    def flask_dance_sessions():
        return github

The ``flask_dance_sessions`` fixture can return either a single
session, or a list/tuple of sessions.

To use this fixture, it's generally easiest to decorate your test
with :func:`pytest.mark.usefixtures`, like this:

.. code-block:: python
    :emphasize-lines: 1

    @pytest.mark.usefixtures("betamax_record_flask_dance")
    def test_home_page(app):
        with app.test_client() as client:
            response = client.get("/", base_url="https://example.com")
        assert response.status_code == 200

é    N)ÚBetamaxc                 ó¾  ‡ ‡‡‡‡— t         st        d«      ‚t        |t        t        f«      r:t        |«      D ��cg c]"  \  }}||j                  j                  › d|› �f‘Œ$ c}}Šn|}||j                  j                  fgŠg Š‰ j                  ˆˆfd„«       Š|j                  ˆ ˆfd„«       ‰ j                  ˆfd„«       Š|j                  ˆ ˆfd„«       ‰ S c c}}w )a>  
    Wraps the specified Flask-Dance sessions with Betamax

    This allows you to record and re-play HTTP requests from Flask-Dance
    sessions. Requires the Betamax library. You must also define a
    `flask_dance_sessions` fixture, that defines the session or sessions
    that should be wrapped with Betamax.
    zHThe `betamax_record_flask_dance` fixture depends on the `betamax` moduleú-c                  ó�   •— ‰D ]@  \  } }t        | «      j                  |«      }‰j                  |«       |j                  «        ŒB y ©N)r   Úuse_cassetteÚappendÚstart)ÚsessionÚcassette_nameÚrecorderÚbetamax_setup_infoÚ	recorderss      €€úS/var/www/timesheet/venv/lib/python3.12/site-packages/flask_dance/fixtures/pytest.pyÚwrap_flask_dance_with_betamaxzAbetamax_record_flask_dance.<locals>.wrap_flask_dance_with_betamaxT   sD   ø€ à&8ò 	Ñ"ˆG�]Ü˜wÓ'×4Ñ4°]ÓCˆHØ×Ñ˜XÔ&Ø�N‰NÕñ	ó    c                  ó@   •— ‰ j                   d    j                  ‰«      S r   )Úbefore_request_funcsÚremove)Úappr   s   €€r   ú<lambda>z,betamax_record_flask_dance.<locals>.<lambda>\   s   ø€ �×(Ñ(¨Ñ.×5Ñ5Ð6SÓT€ r   c                 ó6   •— ‰D ]  }|j                  «        Œ | S r   )Ústop)Úresponser   r   s     €r   Úunwrapz*betamax_record_flask_dance.<locals>.unwrap_   s    ø€ à!ò 	ˆHØ�M‰M�Oð	àˆr   c                  ó@   •— ‰ j                   d    j                  ‰«      S r   )Úafter_request_funcsr   )r   r   s   €€r   r   z,betamax_record_flask_dance.<locals>.<lambda>e   s   ø€  ×!8Ñ!8¸Ñ!>×!EÑ!EÀfÓ!M€ r   )r   ÚImportErrorÚ
isinstanceÚlistÚtupleÚ	enumerateÚnodeÚnameÚbefore_requestÚaddfinalizerÚafter_request)	r   Úflask_dance_sessionsÚrequestÚindexr   r   r   r   r   s	   `    @@@@r   Úbetamax_record_flask_dancer+   6   sõ   ü€ õ Üð#ó
ð 	
ô
 Ð&¬¬u¨Ô6ô #,Ð,@Ó"A÷
ñ
 ��wð Ø—<‘<×$Ñ$Ð% Q u gÐ.òó
Ñð 'ˆØ&¨¯©×(9Ñ(9Ð:Ð;Ðà€Ià×Ñôó ðð ×ÑÜTôð 	×Ñóó ðð
 ×ÑÔMÔNà€JùóA
s   »'C)Ú__doc__ÚpytestÚbetamaxr   r   Úfixturer+   © r   r   ú<module>r1      sF   ðñ+óZ ðÝð
 ‡�ñ0ó ñ0øð ò Ø‚Gðús   ˆ! ¡+ª+