예제 #1
0
    def test_add_content(self, _, input_directory):
        # Arrange
        lcp_server = LCPServer(
            self._configuration_storage,
            self._configuration_factory,
            self._hasher_factory,
            self._credential_factory,
        )
        encrypted_content = LCPEncryptionResult(
            content_id=fixtures.CONTENT_ID,
            content_encryption_key="12345",
            protected_content_location="/opt/readium/files/encrypted",
            protected_content_disposition="encrypted_book",
            protected_content_type="application/epub+zip",
            protected_content_length=12345,
            protected_content_sha256="12345",
        )
        expected_protected_content_disposition = os.path.join(
            input_directory, encrypted_content.protected_content_disposition)

        with self._configuration_factory.create(
                self._configuration_storage, self._db,
                LCPServerConfiguration) as configuration:
            configuration.lcpserver_url = fixtures.LCPSERVER_URL
            configuration.lcpserver_user = fixtures.LCPSERVER_USER
            configuration.lcpserver_password = fixtures.LCPSERVER_PASSWORD
            configuration.lcpserver_input_directory = input_directory
            configuration.provider_name = fixtures.PROVIDER_NAME
            configuration.passphrase_hint = fixtures.TEXT_HINT
            configuration.encryption_algorithm = (
                LCPServerConfiguration.DEFAULT_ENCRYPTION_ALGORITHM)

            with requests_mock.Mocker() as request_mock:
                url = urllib.parse.urljoin(
                    fixtures.LCPSERVER_URL,
                    "/contents/{0}".format(fixtures.CONTENT_ID))
                request_mock.put(url)

                # Act
                lcp_server.add_content(self._db, encrypted_content)

                # Assert
                assert request_mock.called == True

                json_request = json.loads(request_mock.last_request.text)
                assert json_request[
                    "content-id"] == encrypted_content.content_id
                assert (json_request["content-encryption-key"] ==
                        encrypted_content.content_encryption_key)
                assert (json_request["protected-content-location"] ==
                        expected_protected_content_disposition)
                assert (json_request["protected-content-disposition"] ==
                        encrypted_content.protected_content_disposition)
                assert (json_request["protected-content-type"] ==
                        encrypted_content.protected_content_type)
                assert (json_request["protected-content-length"] ==
                        encrypted_content.protected_content_length)
                assert (json_request["protected-content-sha256"] ==
                        encrypted_content.protected_content_sha256)
예제 #2
0
    def test_add_content(self, _, input_directory):
        # Arrange
        lcp_server = LCPServer(self._configuration_storage,
                               self._configuration_factory,
                               self._hasher_factory, self._credential_factory)
        encrypted_content = LCPEncryptionResult(
            content_id=fixtures.CONTENT_ID,
            content_encryption_key='12345',
            protected_content_location='/opt/readium/files/encrypted',
            protected_content_disposition='encrypted_book',
            protected_content_type='application/epub+zip',
            protected_content_length=12345,
            protected_content_sha256='12345')
        expected_protected_content_disposition = os.path.join(
            input_directory, encrypted_content.protected_content_disposition)

        with self._configuration_factory.create(
                self._configuration_storage, self._db,
                LCPServerConfiguration) as configuration:
            configuration.lcpserver_url = fixtures.LCPSERVER_URL
            configuration.lcpserver_user = fixtures.LCPSERVER_USER
            configuration.lcpserver_password = fixtures.LCPSERVER_PASSWORD
            configuration.lcpserver_input_directory = input_directory
            configuration.provider_name = fixtures.PROVIDER_NAME
            configuration.passphrase_hint = fixtures.TEXT_HINT
            configuration.encryption_algorithm = LCPServerConfiguration.DEFAULT_ENCRYPTION_ALGORITHM

            with requests_mock.Mocker() as request_mock:
                url = urlparse.urljoin(
                    fixtures.LCPSERVER_URL,
                    '/contents/{0}'.format(fixtures.CONTENT_ID))
                request_mock.put(url)

                # Act
                lcp_server.add_content(self._db, encrypted_content)

                # Assert
                eq_(request_mock.called, True)

                json_request = json.loads(request_mock.last_request.text)
                eq_(json_request['content-id'], encrypted_content.content_id)
                eq_(json_request['content-encryption-key'],
                    encrypted_content.content_encryption_key)
                eq_(json_request['protected-content-location'],
                    expected_protected_content_disposition)
                eq_(json_request['protected-content-disposition'],
                    encrypted_content.protected_content_disposition)
                eq_(json_request['protected-content-type'],
                    encrypted_content.protected_content_type)
                eq_(json_request['protected-content-length'],
                    encrypted_content.protected_content_length)
                eq_(json_request['protected-content-sha256'],
                    encrypted_content.protected_content_sha256)