Comments (2)
I haven't used Django for a while but I think there's 2 options to do this: Either write a fixture that logs in using the django client and get the cookies:
import http.cookies
from django.test import Client
def django_cookies(client: Client) -> http.cookies.SimpleCookie:
client.login("username", "password")
return client.cookies
---
test_name: Use Django client to create cookies
marks:
- usefixtures: django_login
stages:
- name: Do a request with cookies
request:
url: "{host}/thing"
method: GET
cookies:
- my_cookie_name: "{django_cookies.my_cookie_name}"
If that doesn't work, you'd probably have to write a plugin that
logged in via the Django authentication system and then used the client to do all future http requests
from tavern.
Hi @michaelboulton, thank you for the prompt reply.
I haven't tried writing a custom plugin, but passing a sessionid
in cookies works like a charm. The issue is that I have many tests, and passing the cookies with every request looks tedious. I tried to use the pytest_tavern_beta_before_every_request
hook, but it didn't work.
So, I decided to mock OAuth
:
from unittest import mock
class MockOAuth():
class MockOktaUserInfoResponse():
def __init__(self, email):
self.email = email
def raise_for_status(*args, **kwargs):
return None
def json(self):
if self.email:
return { "email": self.email }
else:
return {}
class MockOkta():
def authorize_access_token(self, request):
return request.POST.get("email")
def get(self, userinfo_uri, token):
return MockOAuth.MockOktaUserInfoResponse(email=token)
def __init__(self):
self.okta = MockOAuth.MockOkta()
def register(*args, **kwargs):
return True
@pytest.fixture(autouse=True)
def mock_okta():
with mock.patch("authlib.integrations.django_client.OAuth", new=MockOAuth):
yield
from tavern.
Related Issues (20)
- Version 2.0.x broke tavern tests which were working with version 1.25.2 HOT 2
- Unable to use external function in MQTT publish HOT 3
- Deadlock when executing mqtt-tests HOT 2
- question about nullable fields. HOT 1
- __main__.py: error: unrecognized arguments: --tavern-merge-ext-function-values HOT 3
- How feasible would be write a plugin to transform a shared stage into a session-scoped fixture? HOT 1
- Tavern Marks Broken with Pytest 7.3.0 HOT 5
- Question about external function kwargs in requests HOT 1
- verify_response_with not working on mqtt_response HOT 2
- Try to use the external function in the URL HOT 1
- Variable in skip when on test HOT 2
- Curly braces in JSON values of criteria causes error when test fails HOT 1
- "finally" block errors with BadSchemaError HOT 1
- How to measure coverage for tavern tests? HOT 1
- Parametrize for request parameters (path, query) HOT 1
- Support for YAML Indexing and Advanced Assertions HOT 1
- DeprecationWarning with jsonschema > 4 HOT 1
- INQUIRY: upload multipart form file using external functions HOT 1
- 3.0 Release HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tavern.