Ejemplo n.º 1
0
    def test_upload_generator(self):
        # test uploading content from a generator
        def data_generator():
            yield 'line one of text\n'
            yield 'line two of text\n'
            yield 'line three of text\n'

        text_content = ''.join(data_generator())
        content_md5 = md5sum(text_content)
        size = len(text_content)

        upload_id = self.rest_api.upload(data_generator(), size=size, content_type='text/plain')
        pattern = re.compile('uploaded://[0-9]+')
        self.assertTrue(pattern.match(upload_id))

        # check that the *right* content was uploaded by adding
        # a datastream using the computed MD5 and generated upload id
        obj = load_fixture_data('basic-object.foxml')
        response = self.rest_api.ingest(obj)
        pid = response.text
        add_response = self.rest_api.addDatastream(pid, 'text', controlGroup='M',
            dsLocation=upload_id, mimeType='text/plain',
            checksumType='MD5', checksum=content_md5)
        self.assertTrue(add_response.status_code, requests.codes.created)
        # get the content from fedora and confirm it matches what was sent
        dsresponse = self.rest_api.getDatastreamDissemination(pid, 'text')
        self.assertEqual(text_content, dsresponse.text)

        # clean up test object
        self.rest_api.purgeObject(pid)
Ejemplo n.º 2
0
    def test_upload_generator(self):
        # test uploading content from a generator
        def data_generator():
            yield 'line one of text\n'
            yield 'line two of text\n'
            yield 'line three of text\n'

        text_content = ''.join(data_generator())
        content_md5 = md5sum(text_content)
        size = len(text_content)

        upload_id = self.rest_api.upload(data_generator(), size=size,
                                         content_type='text/plain')
        pattern = re.compile('uploaded://[0-9]+')
        self.assertTrue(pattern.match(upload_id))

        # check that the *right* content was uploaded by adding
        # a datastream using the computed MD5 and generated upload id
        obj = load_fixture_data('basic-object.foxml')
        response = self.rest_api.ingest(obj)
        pid = response.text
        add_response = self.rest_api.addDatastream(pid, 'text', controlGroup='M',
            dsLocation=upload_id, mimeType='text/plain',
            checksumType='MD5', checksum=content_md5)
        self.assertTrue(add_response.status_code, requests.codes.created)
        # get the content from fedora and confirm it matches what was sent
        dsresponse = self.rest_api.getDatastreamDissemination(pid, 'text')
        self.assertEqual(text_content, dsresponse.text)

        # clean up test object
        self.rest_api.purgeObject(pid)
Ejemplo n.º 3
0
    def test_purgeObject(self):
        object = load_fixture_data("basic-object.foxml")
        pid = self.rest_api.ingest(object)
        purged, message = self.rest_api.purgeObject(pid)
        self.assertTrue(purged)

        # NOTE: fedora doesn't notice the object has been purged right away
        sleep(7)  # 5-6 was fastest this worked; padding to avoid spurious failures
        self.assertRaises(Exception, self.rest_api.getObjectProfile, pid)

        # bad pid
        self.assertRaises(RequestFailed, self.rest_api.purgeObject, "bogus:pid")
Ejemplo n.º 4
0
    def test_ingest(self):
        object = load_fixture_data("basic-object.foxml")
        pid = self.rest_api.ingest(object)
        self.assertTrue(pid)
        self.rest_api.purgeObject(pid)

        # test ingesting with log message
        pid = self.rest_api.ingest(object, "this is my test ingest message")
        # ingest message is stored in AUDIT datastream
        # - can currently only be accessed by retrieving entire object xml
        xml, url = self.rest_api.getObjectXML(pid)
        self.assertTrue("this is my test ingest message" in xml)
        self.rest_api.purgeObject(pid, "removing test ingest object")
Ejemplo n.º 5
0
    def test_ingest(self):
        object = load_fixture_data('basic-object.foxml')
        pid = self.rest_api.ingest(object)
        self.assertTrue(pid)
        self.rest_api.purgeObject(pid)

        # test ingesting with log message
        pid = self.rest_api.ingest(object, "this is my test ingest message")
        # ingest message is stored in AUDIT datastream
        # - can currently only be accessed by retrieving entire object xml
        xml, url = self.rest_api.getObjectXML(pid)
        self.assertTrue("this is my test ingest message" in xml)
        self.rest_api.purgeObject(pid, "removing test ingest object")
Ejemplo n.º 6
0
    def test_purgeObject(self):
        obj = load_fixture_data('basic-object.foxml')
        r = self.rest_api.ingest(obj)
        pid = r.text
        r = self.rest_api.purgeObject(pid)
        purged = (r.status_code == requests.codes.ok)
        self.assertTrue(purged)

        # NOTE: fedora doesn't notice the object has been purged right away
        sleep(7)    # 5-6 was fastest this worked; padding to avoid spurious failures
        self.assertRaises(Exception, self.rest_api.getObjectProfile, pid)

        # bad pid
        self.assertRaises(RequestFailed, self.rest_api.purgeObject, "bogus:pid")
Ejemplo n.º 7
0
    def test_ingest_without_pid(self):
        object = load_fixture_data('basic-object.foxml')
        pid = self.repo.ingest(object)
        self.assertTrue(pid)
        self.repo.purge_object(pid)

        # test ingesting with log message
        pid = self.repo.ingest(object, "this is my test ingest message")
        # ingest message is stored in AUDIT datastream
        # - can currently only be accessed by retrieving entire object xml
        r = self.repo.api.getObjectXML(pid)
        self.assertTrue("this is my test ingest message" in r.content)
        purged = self.repo.purge_object(pid, "removing test ingest object")
        self.assertTrue(purged)
Ejemplo n.º 8
0
    def test_purgeObject(self):
        obj = load_fixture_data('basic-object.foxml')
        r = self.rest_api.ingest(obj)
        pid = r.content
        r = self.rest_api.purgeObject(pid)
        purged = (r.status_code == requests.codes.ok)
        self.assertTrue(purged)

        # NOTE: fedora doesn't notice the object has been purged right away
        sleep(7)    # 5-6 was fastest this worked; padding to avoid spurious failures
        self.assertRaises(Exception, self.rest_api.getObjectProfile, pid)

        # bad pid
        self.assertRaises(RequestFailed, self.rest_api.purgeObject, "bogus:pid")
Ejemplo n.º 9
0
    def test_ingest_without_pid(self):
        object = load_fixture_data('basic-object.foxml')
        pid = self.repo.ingest(object)
        self.assertTrue(pid)
        self.repo.purge_object(pid)

        # test ingesting with log message
        pid = self.repo.ingest(object, "this is my test ingest message")
        # ingest message is stored in AUDIT datastream
        # - can currently only be accessed by retrieving entire object xml
        r = self.repo.api.getObjectXML(pid)
        self.assertTrue("this is my test ingest message" in r.content)
        purged = self.repo.purge_object(pid, "removing test ingest object")
        self.assertTrue(purged)
Ejemplo n.º 10
0
    def test_ingest(self):
        obj = load_fixture_data('basic-object.foxml')
        r = self.rest_api.ingest(obj)
        pid = r.content
        self.assertTrue(pid)
        self.rest_api.purgeObject(pid)

        # test ingesting with log message
        r = self.rest_api.ingest(obj, "this is my test ingest message")
        pid = r.content
        # ingest message is stored in AUDIT datastream
        # - can currently only be accessed by retrieving entire object xml
        r = self.rest_api.getObjectXML(pid)
        self.assertTrue("this is my test ingest message" in r.content)
        self.rest_api.purgeObject(pid, "removing test ingest object")