diff --git a/seahub/api2/serializers.py b/seahub/api2/serializers.py index 1c734f581b..bed022ba09 100644 --- a/seahub/api2/serializers.py +++ b/seahub/api2/serializers.py @@ -29,8 +29,8 @@ class AuthTokenSerializer(serializers.Serializer): device_name = serializers.CharField(required=False) # These fields may be needed in the future - client_version = serializers.CharField(required=False) - platform_version = serializers.CharField(required=False) + client_version = serializers.CharField(required=False, default='') + platform_version = serializers.CharField(required=False, default='') def validate(self, attrs): login_id = attrs.get('username') diff --git a/tests/api/test_obtain_auth_token.py b/tests/api/test_obtain_auth_token.py index d2de1ccae7..771c7798aa 100644 --- a/tests/api/test_obtain_auth_token.py +++ b/tests/api/test_obtain_auth_token.py @@ -1,5 +1,6 @@ import json +from seahub.api2.models import TokenV2 from seahub.profile.models import Profile from seahub.test_utils import BaseTestCase from .urls import TOKEN_URL @@ -52,3 +53,22 @@ class ObtainAuthTokenTest(BaseTestCase): self.assertEqual(400, resp.status_code) json_resp = json.loads(resp.content) assert json_resp['username'] == [u'This field may not be blank.'] + + def test_can_obtain_token_v2(self): + resp = self.client.post(TOKEN_URL, { + 'username': self.p.login_id, + 'password': self.user_password, + 'platform': 'windows', + 'device_id': 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', + 'device_name': 'fake-device-name', + 'client_version': '4.1.0', + 'platform_version': '', + }) + + json_resp = json.loads(resp.content) + assert json_resp['token'] is not None + assert len(json_resp['token']) == 40 + + t = TokenV2.objects.get(key=json_resp['token']) + assert t.client_version == '4.1.0' + assert t.platform_version == ''