diff --git a/adjutant/api/models.py b/adjutant/api/models.py index d8208ae..0bfccbe 100644 --- a/adjutant/api/models.py +++ b/adjutant/api/models.py @@ -126,6 +126,7 @@ class Token(models.Model): def to_dict(self): return { "task": self.task.uuid, + "task_type": self.task.task_type, "token": self.token, "created_on": self.created_on, "expires": self.expires diff --git a/adjutant/api/v1/tests/test_api_admin.py b/adjutant/api/v1/tests/test_api_admin.py index fcce348..21f5c82 100644 --- a/adjutant/api/v1/tests/test_api_admin.py +++ b/adjutant/api/v1/tests/test_api_admin.py @@ -187,6 +187,40 @@ class AdminAPITests(APITestCase): {'errors': ['This token does not exist or has expired.']}) self.assertEqual(0, Token.objects.count()) + def test_token_get(self): + """ + Token should contian task uuid, task_type, required fields, and it's + own value + """ + + user = mock.Mock() + user.id = 'user_id' + user.name = "test@example.com" + user.email = "test@example.com" + user.domain = 'default' + user.password = "test_password" + + setup_temp_cache({}, {user.id: user}) + + url = "/v1/actions/ResetPassword" + data = {'email': "test@example.com"} + response = self.client.post(url, data, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual( + response.json()['notes'], + ['If user with email exists, reset token will be issued.']) + + new_token = Token.objects.all()[0] + url = "/v1/tokens/" + new_token.token + response = self.client.get(url) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual( + response.json(), + {u'actions': [u'ResetUserPasswordAction'], + u'required_fields': [u'password'], + u'task_type': 'reset_password'}) + self.assertEqual(1, Token.objects.count()) + def test_task_complete(self): """ Can't approve a completed task. diff --git a/adjutant/api/v1/views.py b/adjutant/api/v1/views.py index 91029b4..b4a998b 100644 --- a/adjutant/api/v1/views.py +++ b/adjutant/api/v1/views.py @@ -692,7 +692,8 @@ class TokenDetail(APIViewWithLogger): required_fields.append(field) return Response({'actions': [str(act) for act in actions], - 'required_fields': required_fields}) + 'required_fields': required_fields, + 'task_type': token.task.task_type}) def post(self, request, id, format=None): """