mirror of
https://github.com/haiwen/seahub.git
synced 2025-10-22 03:16:34 +00:00
[api2] Add "created at" field in token V2
This commit is contained in:
@@ -3,7 +3,9 @@ import hmac
|
|||||||
import datetime
|
import datetime
|
||||||
import time
|
import time
|
||||||
from hashlib import sha1
|
from hashlib import sha1
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
from seahub.base.fields import LowerCaseCharField
|
from seahub.base.fields import LowerCaseCharField
|
||||||
|
|
||||||
@@ -144,6 +146,7 @@ class TokenV2(models.Model):
|
|||||||
|
|
||||||
last_login_ip = models.GenericIPAddressField(null=True, default=None)
|
last_login_ip = models.GenericIPAddressField(null=True, default=None)
|
||||||
|
|
||||||
|
created_at = models.DateTimeField(default=timezone.now)
|
||||||
wiped_at = models.DateTimeField(null=True)
|
wiped_at = models.DateTimeField(null=True)
|
||||||
|
|
||||||
objects = TokenV2Manager()
|
objects = TokenV2Manager()
|
||||||
|
@@ -20,6 +20,8 @@ from seahub.utils import mkstemp
|
|||||||
class Fixtures(Exam):
|
class Fixtures(Exam):
|
||||||
user_password = 'secret'
|
user_password = 'secret'
|
||||||
admin_password = 'secret'
|
admin_password = 'secret'
|
||||||
|
ip = '127.0.0.1'
|
||||||
|
ip_v6 = '2001:0db8:85a3:0000:0000:8a2e:0370:7334'
|
||||||
|
|
||||||
@fixture
|
@fixture
|
||||||
def fake_request(self):
|
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