This repository was archived by the owner on Jun 13, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 30
Expand file tree
/
Copy pathtest_delete_session.py
More file actions
82 lines (64 loc) · 2.61 KB
/
test_delete_session.py
File metadata and controls
82 lines (64 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
from django.contrib import auth
from django.test import TransactionTestCase
from django.utils import timezone
from shared.django_apps.codecov_auth.tests.factories import OwnerFactory, UserFactory
from codecov_auth.models import DjangoSession, Session
from graphql_api.tests.helper import GraphQLTestHelper
query = """
mutation($input: DeleteSessionInput!) {
deleteSession(input: $input) {
error {
__typename
}
}
}
"""
class DeleteSessionTestCase(GraphQLTestHelper, TransactionTestCase):
def setUp(self):
self.owner = OwnerFactory(username="codecov-user")
user = self.user = UserFactory()
self.owner.user = user
self.owner.save()
# clear pre-existing login sessions, as some testcase seems to leak these
DjangoSession.objects.all().delete()
def test_when_unauthenticated(self):
data = self.gql_request(query, variables={"input": {"sessionid": 1}})
assert data["deleteSession"]["error"]["__typename"] == "UnauthenticatedError"
def test_when_authenticated(self):
login_query = "{ me { user { username }} }"
self.gql_request(login_query, owner=self.owner)
user = auth.get_user(self.client)
assert user.is_authenticated
django_session_id = DjangoSession.objects.all()
assert len(django_session_id) == 1
django_session_id = django_session_id[0]
sessionid = Session.objects.create(
lastseen=timezone.now(),
useragent="Firefox",
ip="0.0.0.0",
login_session=django_session_id,
type=Session.SessionType.LOGIN,
owner=self.owner,
).sessionid
self.gql_request(
query, owner=self.owner, variables={"input": {"sessionid": sessionid}}
)
assert len(Session.objects.filter(sessionid=sessionid)) == 0
def test_when_authenticated_session_not_valid(self):
login_query = "{ me { user { username }} }"
self.gql_request(login_query, owner=self.owner)
user = auth.get_user(self.client)
assert user.is_authenticated
django_session_id = DjangoSession.objects.all()
assert len(django_session_id) == 1
django_session_id = django_session_id[0]
Session.objects.create(
lastseen=timezone.now(),
useragent="Firefox",
ip="0.0.0.0",
login_session=django_session_id,
type=Session.SessionType.LOGIN,
owner=self.owner,
).sessionid
self.gql_request(query, owner=self.owner, variables={"input": {"sessionid": 0}})
assert len(Session.objects.all()) == 1