1
0
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:
zhengxie
2016-07-20 16:02:17 +08:00
parent 603f88c6ab
commit f1aaea96f1
4 changed files with 92 additions and 0 deletions

View File

@@ -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()

View File

@@ -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):

View File

View 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