mirror of
https://github.com/haiwen/seahub.git
synced 2025-10-21 10:51:17 +00:00
[api2] Add "created at" field in token V2
This commit is contained in:
@@ -3,7 +3,9 @@ import hmac
|
||||
import datetime
|
||||
import time
|
||||
from hashlib import sha1
|
||||
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
|
||||
from seahub.base.fields import LowerCaseCharField
|
||||
|
||||
@@ -144,6 +146,7 @@ class TokenV2(models.Model):
|
||||
|
||||
last_login_ip = models.GenericIPAddressField(null=True, default=None)
|
||||
|
||||
created_at = models.DateTimeField(default=timezone.now)
|
||||
wiped_at = models.DateTimeField(null=True)
|
||||
|
||||
objects = TokenV2Manager()
|
||||
|
@@ -20,6 +20,8 @@ from seahub.utils import mkstemp
|
||||
class Fixtures(Exam):
|
||||
user_password = 'secret'
|
||||
admin_password = 'secret'
|
||||
ip = '127.0.0.1'
|
||||
ip_v6 = '2001:0db8:85a3:0000:0000:8a2e:0370:7334'
|
||||
|
||||
@fixture
|
||||
def fake_request(self):
|
||||
|
0
tests/api/models/__init__.py
Normal file
0
tests/api/models/__init__.py
Normal file
87
tests/api/models/test_token_v2.py
Normal file
87
tests/api/models/test_token_v2.py
Normal file
@@ -0,0 +1,87 @@
|
||||
from seahub.test_utils import BaseTestCase
|
||||
from seahub.api2.models import TokenV2, TokenV2Manager
|
||||
|
||||
class TokenV2ManagerTest(BaseTestCase):
|
||||
def setUp(self):
|
||||
assert len(TokenV2.objects.all()) == 0
|
||||
|
||||
token = TokenV2(user=self.user.username,
|
||||
platform='ios',
|
||||
device_id='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
device_name='fake device name',
|
||||
client_version='1.0.0',
|
||||
platform_version='0.0.1',
|
||||
last_login_ip=self.ip_v6)
|
||||
token.save()
|
||||
|
||||
assert len(TokenV2.objects.all()) == 1
|
||||
self.token = TokenV2.objects.all()[0]
|
||||
|
||||
def test_get_devices(self):
|
||||
d = TokenV2.objects.get_devices('', 0, 10)
|
||||
assert len(d) == 1
|
||||
|
||||
def test_get_user_devices(self):
|
||||
d = TokenV2.objects.get_user_devices(self.user.username)
|
||||
assert len(d) == 1
|
||||
|
||||
def test_get_or_create_token(self):
|
||||
# get exist token
|
||||
t = TokenV2.objects.get_or_create_token(
|
||||
self.token.user, self.token.platform, self.token.device_id,
|
||||
self.token.device_name, '1.1.1', '0.1.1', self.ip_v6)
|
||||
assert t.key == self.token.key
|
||||
|
||||
# create new token
|
||||
t = TokenV2.objects.get_or_create_token(
|
||||
self.admin.username, self.token.platform, self.token.device_id,
|
||||
self.token.device_name, '1.1.1', '0.1.1', self.ip_v6)
|
||||
assert len(TokenV2.objects.all()) == 2
|
||||
assert TokenV2.objects.all()[1].user == self.admin.username
|
||||
|
||||
def test_delete_device_token(self):
|
||||
TokenV2.objects.delete_device_token(
|
||||
self.token.user, self.token.platform, self.token.device_id)
|
||||
assert len(TokenV2.objects.all()) == 0
|
||||
|
||||
def test_mark_device_to_be_remote_wipted(self):
|
||||
assert TokenV2.objects.all()[0].wiped_at is None
|
||||
|
||||
TokenV2.objects.mark_device_to_be_remote_wiped(
|
||||
self.token.user, self.token.platform, self.token.device_id)
|
||||
assert TokenV2.objects.all()[0].wiped_at is not None
|
||||
|
||||
|
||||
class TokenV2Test(BaseTestCase):
|
||||
def test_save(self):
|
||||
assert len(TokenV2.objects.all()) == 0
|
||||
|
||||
token = TokenV2(user=self.user.username,
|
||||
platform='ios',
|
||||
device_id='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
device_name='fake device name',
|
||||
client_version='1.0.0',
|
||||
platform_version='0.0.1',
|
||||
last_login_ip=self.ip_v6)
|
||||
token.save()
|
||||
|
||||
assert len(TokenV2.objects.all()) == 1
|
||||
|
||||
t = TokenV2.objects.all()[0]
|
||||
assert len(t.key) == 40
|
||||
assert t.user == self.user.username
|
||||
assert t.created_at is not None
|
||||
assert t.last_accessed is not None
|
||||
assert t.wiped_at is None
|
||||
|
||||
def test_as_dict(self):
|
||||
token = TokenV2(user=self.user.username,
|
||||
platform='ios',
|
||||
device_id='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
||||
device_name='fake device name',
|
||||
client_version='1.0.0',
|
||||
platform_version='0.0.1',
|
||||
last_login_ip=self.ip_v6)
|
||||
token.save()
|
||||
t = TokenV2.objects.all()[0]
|
||||
assert len(t.as_dict()) == 10
|
Reference in New Issue
Block a user