Changeset View
Changeset View
Standalone View
Standalone View
swh/deposit/tests/loader/test_loader.py
# Copyright (C) 2017-2018 The Software Heritage developers | # Copyright (C) 2017-2018 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import os | import os | ||||
import unittest | import unittest | ||||
import shutil | import shutil | ||||
from nose.tools import istest | from nose.tools import istest | ||||
from nose.plugins.attrib import attr | from nose.plugins.attrib import attr | ||||
from rest_framework.test import APITestCase | from rest_framework.test import APITestCase | ||||
from swh.model import hashutil | from swh.model import hashutil | ||||
from swh.deposit.models import Deposit | |||||
from swh.deposit.loader import loader | from swh.deposit.loader import loader | ||||
from swh.deposit.config import PRIVATE_GET_RAW_CONTENT | from swh.deposit.config import ( | ||||
from swh.deposit.config import PRIVATE_GET_DEPOSIT_METADATA | PRIVATE_GET_RAW_CONTENT, PRIVATE_GET_DEPOSIT_METADATA, PRIVATE_PUT_DEPOSIT | ||||
from swh.deposit.config import PRIVATE_PUT_DEPOSIT | ) | ||||
from django.core.urlresolvers import reverse | from django.core.urlresolvers import reverse | ||||
from .common import SWHDepositTestClient, CLIENT_TEST_CONFIG | from .common import SWHDepositTestClient, CLIENT_TEST_CONFIG | ||||
from .. import TEST_LOADER_CONFIG | from .. import TEST_LOADER_CONFIG | ||||
from ..common import BasicTestCase, WithAuthTestCase, CommonCreationRoutine | from ..common import (BasicTestCase, WithAuthTestCase, | ||||
from ..common import FileSystemCreationRoutine | CommonCreationRoutine, | ||||
FileSystemCreationRoutine) | |||||
TOOL_ID = 99 | TOOL_ID = 99 | ||||
PROVIDER_ID = 12 | PROVIDER_ID = 12 | ||||
class DepositLoaderInhibitsStorage: | class DepositLoaderInhibitsStorage: | ||||
"""Mixin class to inhibit the persistence and keep in memory the data | """Mixin class to inhibit the persistence and keep in memory the data | ||||
▲ Show 20 Lines • Show All 217 Lines • ▼ Show 20 Lines | def inject_deposit_verify_metadata(self): | ||||
self.assertEquals(len(self.loader.state['revision']), 1) | self.assertEquals(len(self.loader.state['revision']), 1) | ||||
self.assertEquals(len(self.loader.state['release']), 0) | self.assertEquals(len(self.loader.state['release']), 0) | ||||
self.assertEquals(len(self.loader.state['snapshot']), 1) | self.assertEquals(len(self.loader.state['snapshot']), 1) | ||||
self.assertEquals(len(self.loader.state['origin_metadata']), 1) | self.assertEquals(len(self.loader.state['origin_metadata']), 1) | ||||
self.assertEquals(len(self.loader.state['tool']), 1) | self.assertEquals(len(self.loader.state['tool']), 1) | ||||
self.assertEquals(len(self.loader.state['provider']), 1) | self.assertEquals(len(self.loader.state['provider']), 1) | ||||
codemeta = 'codemeta:' | codemeta = 'codemeta:' | ||||
origin_url = 'https://hal-test.archives-ouvertes.fr/hal-01243065' | |||||
expected_origin_metadata = { | expected_origin_metadata = { | ||||
'@xmlns': 'http://www.w3.org/2005/Atom', | '@xmlns': 'http://www.w3.org/2005/Atom', | ||||
'@xmlns:codemeta': 'https://doi.org/10.5063/SCHEMA/CODEMETA-2.0', | '@xmlns:codemeta': 'https://doi.org/10.5063/SCHEMA/CODEMETA-2.0', | ||||
'author': { | 'author': { | ||||
'email': 'hal@ccsd.cnrs.fr', | 'email': 'hal@ccsd.cnrs.fr', | ||||
'name': 'HAL' | 'name': 'HAL' | ||||
}, | }, | ||||
codemeta + 'url': | codemeta + 'url': origin_url, | ||||
'https://hal-test.archives-ouvertes.fr/hal-01243065', | |||||
codemeta + 'runtimePlatform': 'phpstorm', | codemeta + 'runtimePlatform': 'phpstorm', | ||||
codemeta + 'license': [ | codemeta + 'license': [ | ||||
{ | { | ||||
codemeta + 'name': 'GNU General Public License v3.0 only' | codemeta + 'name': 'GNU General Public License v3.0 only' | ||||
}, | }, | ||||
{ | { | ||||
codemeta + 'name': 'CeCILL Free Software License Agreement v1.1' # noqa | codemeta + 'name': 'CeCILL Free Software License Agreement v1.1' # noqa | ||||
} | } | ||||
Show All 12 Lines | def inject_deposit_verify_metadata(self): | ||||
'client': 'hal', | 'client': 'hal', | ||||
codemeta + 'keywords': 'DSP programming,Web', | codemeta + 'keywords': 'DSP programming,Web', | ||||
codemeta + 'developmentStatus': 'stable' | codemeta + 'developmentStatus': 'stable' | ||||
} | } | ||||
result = self.loader.state['origin_metadata'][0] | result = self.loader.state['origin_metadata'][0] | ||||
self.assertEquals(result['metadata'], expected_origin_metadata) | self.assertEquals(result['metadata'], expected_origin_metadata) | ||||
self.assertEquals(result['tool_id'], TOOL_ID) | self.assertEquals(result['tool_id'], TOOL_ID) | ||||
self.assertEquals(result['provider_id'], PROVIDER_ID) | self.assertEquals(result['provider_id'], PROVIDER_ID) | ||||
deposit = Deposit.objects.get(pk=self.deposit_id) | |||||
self.assertRegex(deposit.swh_id, r'^swh:1:dir:.*') | |||||
self.assertEquals(deposit.swh_id_context, '%s;origin=%s' % ( | |||||
deposit.swh_id, origin_url | |||||
)) | |||||
self.assertRegex(deposit.swh_anchor_id, r'^swh:1:rev:.*') | |||||
self.assertEquals(deposit.swh_anchor_id_context, '%s;origin=%s' % ( | |||||
deposit.swh_anchor_id, origin_url | |||||
)) |