Skip to content
Snippets Groups Projects
Commit 02fd1efd authored by Antoine R. Dumont's avatar Antoine R. Dumont
Browse files

New upstream version 0.0.61

parents d0c30990 c0ebcaaf
No related branches found
Tags debian/upstream/0.0.11
No related merge requests found
Metadata-Version: 1.0
Name: swh.deposit
Version: 0.0.60
Version: 0.0.61
Summary: Software Heritage Deposit Server
Home-page: https://forge.softwareheritage.org/source/swh-deposit/
Author: Software Heritage developers
......
Metadata-Version: 1.0
Name: swh.deposit
Version: 0.0.60
Version: 0.0.61
Summary: Software Heritage Deposit Server
Home-page: https://forge.softwareheritage.org/source/swh-deposit/
Author: Software Heritage developers
......
......@@ -87,6 +87,7 @@ swh/deposit/api/service_document.py
swh/deposit/api/urls.py
swh/deposit/api/private/__init__.py
swh/deposit/api/private/deposit_check.py
swh/deposit/api/private/deposit_list.py
swh/deposit/api/private/deposit_read.py
swh/deposit/api/private/deposit_update_status.py
swh/deposit/api/private/urls.py
......@@ -149,6 +150,7 @@ swh/deposit/tests/api/test_deposit_atom.py
swh/deposit/tests/api/test_deposit_binary.py
swh/deposit/tests/api/test_deposit_check.py
swh/deposit/tests/api/test_deposit_delete.py
swh/deposit/tests/api/test_deposit_list.py
swh/deposit/tests/api/test_deposit_multipart.py
swh/deposit/tests/api/test_deposit_read_archive.py
swh/deposit/tests/api/test_deposit_read_metadata.py
......
# Copyright (C) 2018 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
from rest_framework.generics import ListAPIView
from rest_framework.pagination import PageNumberPagination
from rest_framework import serializers
from ...models import Deposit
class DefaultPagination(PageNumberPagination):
page_size = 100
page_size_query_param = 'page_size'
class DepositSerializer(serializers.ModelSerializer):
class Meta:
model = Deposit
fields = ('id', 'reception_date', 'complete_date', 'status',
'collection', 'external_id', 'client',
'swh_id', 'swh_id_context',
'swh_anchor_id', 'swh_anchor_id_context',
'status', 'status_detail', 'parent')
class DepositList(ListAPIView):
"""Deposit request class to list the deposit's status per page.
HTTP verbs supported: GET
"""
queryset = Deposit.objects.all().order_by('id')
serializer_class = DepositSerializer
pagination_class = DefaultPagination
# Copyright (C) 2017 The Software Heritage developers
# Copyright (C) 2017-2018 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
from django.conf.urls import url
from ...config import PRIVATE_GET_RAW_CONTENT
from ...config import PRIVATE_PUT_DEPOSIT, PRIVATE_GET_DEPOSIT_METADATA
from ...config import PRIVATE_CHECK_DEPOSIT
from ...config import (
PRIVATE_GET_RAW_CONTENT, PRIVATE_PUT_DEPOSIT, PRIVATE_GET_DEPOSIT_METADATA,
PRIVATE_CHECK_DEPOSIT, PRIVATE_LIST_DEPOSITS
)
from .deposit_read import SWHDepositReadArchives
from .deposit_read import SWHDepositReadMetadata
from .deposit_update_status import SWHUpdateStatusDeposit
from .deposit_check import SWHChecksDeposit
from .deposit_list import DepositList
urlpatterns = [
# Retrieve deposit's raw archives' content
......@@ -34,4 +36,6 @@ urlpatterns = [
url(r'^(?P<collection_name>[^/]+)/(?P<deposit_id>[^/]+)/check/$',
SWHChecksDeposit.as_view(),
name=PRIVATE_CHECK_DEPOSIT),
url(r'^deposits/$', DepositList.as_view(),
name=PRIVATE_LIST_DEPOSITS)
]
......@@ -20,6 +20,7 @@ PRIVATE_GET_RAW_CONTENT = 'private-download'
PRIVATE_CHECK_DEPOSIT = 'check-deposit'
PRIVATE_PUT_DEPOSIT = 'private-update'
PRIVATE_GET_DEPOSIT_METADATA = 'private-read'
PRIVATE_LIST_DEPOSITS = 'private-deposit-list'
ARCHIVE_KEY = 'archive'
METADATA_KEY = 'metadata'
......
......@@ -3,7 +3,6 @@
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
import json
import unittest
from django.core.urlresolvers import reverse
......@@ -56,7 +55,7 @@ class CheckDepositTest(APITestCase, WithAuthTestCase,
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = json.loads(response.content.decode('utf-8'))
data = response.json()
self.assertEqual(data['status'], DEPOSIT_STATUS_VERIFIED)
deposit = Deposit.objects.get(pk=deposit.id)
self.assertEquals(deposit.status, DEPOSIT_STATUS_VERIFIED)
......@@ -79,7 +78,7 @@ class CheckDepositTest(APITestCase, WithAuthTestCase,
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = json.loads(response.content.decode('utf-8'))
data = response.json()
self.assertEqual(data['status'], DEPOSIT_STATUS_REJECTED)
details = data['details']
# archive checks failure
......@@ -105,7 +104,7 @@ class CheckDepositTest(APITestCase, WithAuthTestCase,
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = json.loads(response.content.decode('utf-8'))
data = response.json()
self.assertEqual(data['status'], DEPOSIT_STATUS_REJECTED)
details = data['details']
# archive checks failure
......@@ -131,7 +130,7 @@ class CheckDepositTest(APITestCase, WithAuthTestCase,
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = json.loads(response.content.decode('utf-8'))
data = response.json()
self.assertEqual(data['status'], DEPOSIT_STATUS_REJECTED)
details = data['details']
# archive checks failure
......@@ -173,7 +172,7 @@ class CheckDepositTest(APITestCase, WithAuthTestCase,
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = json.loads(response.content.decode('utf-8'))
data = response.json()
self.assertEqual(data['status'], DEPOSIT_STATUS_VERIFIED)
deposit = Deposit.objects.get(pk=deposit.id)
......
# Copyright (C) 2017-2018 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
from django.core.urlresolvers import reverse
from nose.tools import istest
from nose.plugins.attrib import attr
from rest_framework import status
from rest_framework.test import APITestCase
from ...config import DEPOSIT_STATUS_PARTIAL, PRIVATE_LIST_DEPOSITS
from ..common import BasicTestCase, WithAuthTestCase, CommonCreationRoutine
@attr('fs')
class CheckDepositStatusesTest(APITestCase, WithAuthTestCase,
BasicTestCase, CommonCreationRoutine):
"""Check deposit statuses endpoints.
"""
def setUp(self):
super().setUp()
@istest
def deposit_list(self):
"""Deposit list api should return the deposits
"""
deposit_id = self.create_deposit_partial()
deposit_id2 = self.create_deposit_partial()
# NOTE: does not work as documented
# https://docs.djangoproject.com/en/1.11/ref/urlresolvers/#django.core.urlresolvers.reverse # noqa
# url = reverse(PRIVATE_LIST_DEPOSITS, kwargs={'page_size': 1})
main_url = reverse(PRIVATE_LIST_DEPOSITS)
url = '%s?page_size=1' % main_url
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.json()
self.assertEqual(data['count'], 2) # 2 deposits
expected_next = '%s?page=2&page_size=1' % main_url
self.assertTrue(data['next'].endswith(expected_next))
self.assertIsNone(data['previous'])
self.assertEqual(len(data['results']), 1) # page of size 1
deposit = data['results'][0]
self.assertEquals(deposit['id'], deposit_id)
self.assertEquals(deposit['status'], DEPOSIT_STATUS_PARTIAL)
# then 2nd page
response2 = self.client.get(expected_next)
self.assertEqual(response2.status_code, status.HTTP_200_OK)
data2 = response2.json()
self.assertEqual(data2['count'], 2) # still 2 deposits
self.assertIsNone(data2['next'])
expected_previous = '%s?page_size=1' % main_url
self.assertTrue(data2['previous'].endswith(expected_previous))
self.assertEqual(len(data2['results']), 1) # page of size 1
deposit2 = data2['results'][0]
self.assertEquals(deposit2['id'], deposit_id2)
self.assertEquals(deposit2['status'], DEPOSIT_STATUS_PARTIAL)
......@@ -3,7 +3,6 @@
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
import json
from django.core.urlresolvers import reverse
from nose.tools import istest
......@@ -41,7 +40,7 @@ class DepositReadMetadataTest(APITestCase, WithAuthTestCase, BasicTestCase,
status.HTTP_200_OK)
self.assertEquals(response._headers['content-type'][1],
'application/json')
data = json.loads(response.content.decode('utf-8'))
data = response.json()
expected_meta = {
'origin': {
......@@ -127,7 +126,7 @@ class DepositReadMetadataTest(APITestCase, WithAuthTestCase, BasicTestCase,
status.HTTP_200_OK)
self.assertEquals(response._headers['content-type'][1],
'application/json')
data = json.loads(response.content.decode('utf-8'))
data = response.json()
expected_meta = {
'origin': {
......
v0.0.60-0-gfc4a329
\ No newline at end of file
v0.0.61-0-gc0ebcaa
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment