コード例 #1
0
    def test_delete_dataverse(self):
        connection = Connection(TEST_HOST, self.token)
        alias = str(uuid.uuid1())   # must be unique
        dataverse = connection.create_dataverse(
            alias,
            'Test Name',
            '*****@*****.**',
        )

        connection.delete_dataverse(dataverse)
        dataverse = connection.get_dataverse(alias)

        assert dataverse is None
コード例 #2
0
    def test_get_dataverse(self):
        connection = Connection(TEST_HOST, self.token)
        alias = str(uuid.uuid1())   # must be unique
        assert connection.get_dataverse(alias) is None

        dataverse = connection.create_dataverse(
            alias,
            'Test Name',
            '*****@*****.**',
        )

        try:
            assert dataverse is not None
            assert dataverse.alias == alias
        finally:
            connection.delete_dataverse(dataverse)
コード例 #3
0
    def test_connect_unknown_failure(self):
        httpretty.register_uri(
            httpretty.GET,
            'https://{host}/dvn/api/data-deposit/v1.1/swordv2/service-document'
            .format(host=TEST_HOST),
            status=400,
        )

        with pytest.raises(exceptions.ConnectionError):
            Connection(TEST_HOST, self.token)
コード例 #4
0
    def setUpClass(self):

        print "Connecting to DVN."
        self.dvc = Connection(
            username=DEFAULT_USERNAME,
            password=DEFAULT_PASSWORD,
            host=DEFAULT_HOST,
            disable_ssl=True
        )

        print "Getting Dataverse"
        self.dv = self.dvc.get_dataverses()[0]
        self.dv.is_released

        print "Removing any existing studies."
        studies = self.dv.get_studies()
        for study in studies :
            if study.get_state() != 'DEACCESSIONED':
                self.dv.delete_study(study)
        print 'Dataverse emptied.'
コード例 #5
0
    def setup_class(cls):
        print 'Connecting to Dataverse host at {0}'.format(TEST_HOST)
        cls.connection = Connection(TEST_HOST, TEST_TOKEN)

        print 'Creating test Dataverse'
        cls.alias = str(uuid.uuid1())
        cls.connection.create_dataverse(
            cls.alias,
            'Test Dataverse',
            '*****@*****.**',
        )
        cls.dataverse = cls.connection.get_dataverse(cls.alias, True)
        assert cls.dataverse
コード例 #6
0
    def setup_class(cls):
        super(TestDatasetOperations, cls).setup_class()

        print('Connecting to Dataverse host at {0}'.format(TEST_HOST))
        cls.connection = Connection(TEST_HOST, cls.token)

        print('Creating test Dataverse')
        cls.alias = str(uuid.uuid1())
        cls.connection.create_dataverse(
            cls.alias,
            'Test Dataverse',
            '*****@*****.**',
        )
        cls.dataverse = cls.connection.get_dataverse(cls.alias, True)
        assert cls.dataverse
コード例 #7
0
    def test_create_dataverse(self):
        connection = Connection(TEST_HOST, self.token)
        alias = str(uuid.uuid1())  # must be unique
        connection.create_dataverse(
            alias,
            'Test Name',
            '*****@*****.**',
        )

        dataverse = connection.get_dataverse(alias, True)
        try:
            assert dataverse.alias == alias
            assert dataverse.title == 'Test Name'
        finally:
            connection.delete_dataverse(dataverse)
コード例 #8
0
    def test_delete_dataverse(self):
        connection = Connection(TEST_HOST, self.token)
        alias = str(uuid.uuid1())  # must be unique
        dataverse = connection.create_dataverse(
            alias,
            'Test Name',
            '*****@*****.**',
        )

        connection.delete_dataverse(dataverse)
        dataverse = connection.get_dataverse(alias)

        assert dataverse is None
コード例 #9
0
    def setUpClass(self):
        print "Connecting to DVN."
        self.dvc = Connection(TEST_HOST, TEST_TOKEN)

        print "Getting Dataverse"
        dataverses = self.dvc.get_dataverses()
        if not dataverses:
            raise DataverseError(
                'You must have a Dataverse to run these tests.'
            )

        self.dv = dataverses[0]

        print "Removing any existing datasets."
        datasets = self.dv.get_datasets()
        for dataset in datasets:
            if dataset.get_state() != 'DEACCESSIONED':
                self.dv.delete_dataset(dataset)
        print 'Dataverse emptied.'
コード例 #10
0
    def test_create_dataverse(self):
        connection = Connection(TEST_HOST, self.token)
        alias = str(uuid.uuid1())   # must be unique
        connection.create_dataverse(
            alias,
            'Test Name',
            '*****@*****.**',
        )

        dataverse = connection.get_dataverse(alias, True)
        try:
            assert dataverse.alias == alias
            assert dataverse.title == 'Test Name'
        finally:
            connection.delete_dataverse(dataverse)
コード例 #11
0
    def test_get_dataverse(self):
        connection = Connection(TEST_HOST, self.token)
        alias = str(uuid.uuid1())  # must be unique
        assert connection.get_dataverse(alias) is None

        dataverse = connection.create_dataverse(
            alias,
            'Test Name',
            '*****@*****.**',
        )

        try:
            assert dataverse is not None
            assert dataverse.alias == alias
        finally:
            connection.delete_dataverse(dataverse)
コード例 #12
0
    def test_get_dataverses(self):
        connection = Connection(TEST_HOST, self.token)
        original_dataverses = connection.get_dataverses()
        assert isinstance(original_dataverses, list)

        alias = str(uuid.uuid1())  # must be unique

        dataverse = connection.create_dataverse(
            alias,
            'Test Name',
            '*****@*****.**',
        )

        current_dataverses = connection.get_dataverses()
        try:
            assert len(current_dataverses) == len(original_dataverses) + 1
            assert alias in [dv.alias for dv in current_dataverses]
        finally:
            connection.delete_dataverse(dataverse)

        current_dataverses = connection.get_dataverses()
        assert [dv.alias for dv in current_dataverses
                ] == [dv.alias for dv in original_dataverses]
コード例 #13
0
    def test_get_dataverses(self):
        connection = Connection(TEST_HOST, self.token)
        original_dataverses = connection.get_dataverses()
        assert isinstance(original_dataverses, list)

        alias = str(uuid.uuid1())   # must be unique

        dataverse = connection.create_dataverse(
            alias,
            'Test Name',
            '*****@*****.**',
        )

        current_dataverses = connection.get_dataverses()
        try:
            assert len(current_dataverses) == len(original_dataverses) + 1
            assert alias in [dv.alias for dv in current_dataverses]
        finally:
            connection.delete_dataverse(dataverse)

        current_dataverses = connection.get_dataverses()
        assert [dv.alias for dv in current_dataverses] == [dv.alias for dv in original_dataverses]
コード例 #14
0
    def test_connect(self):
        connection = Connection(TEST_HOST, TEST_TOKEN)

        assert connection.host == TEST_HOST
        assert connection.token == TEST_TOKEN
        assert connection._service_document
コード例 #15
0
def main():

    dv = None  # declare outside so except clause has access
    try:
        dvc = Connection(
            username=DEFAULT_USERNAME,
            password=DEFAULT_PASSWORD,
            host=DEFAULT_HOST,
            disable_ssl=True,
        )

        dvs = dvc.get_dataverses()
        for dv in dvs:
            print dv

        dv = dvs[0]

        # clean up the test dataverse
        # for study in dv.get_studies():
        #     dv.delete_study(study)
        # print "RELEASED:", dv.is_released()

        s = dv.get_studies()[0]
        # s = Study(EXAMPLE_DICT)
        # s = Study(EXAMPLE_FILE)

        # print s
        print s.doi

        # s.delete_all_files()
        # s.add_file("dataverseclient/resources/test/one.txt")
        # s.delete_file(s.get_file("one.txt"))

        # s.add_file("dataverseclient/resources/test")

        s.get_statement()
        print s.get_entry()

        # s.add_files([INGEST_FILES])
        # print s.get_citation()
        # print s.get_state()

        # sleep(3) #wait for ingest`

        # fs = s.get_files()
        # print "FILES: ", len(fs)
        # s.delete_file(fs[-1])
        # fs = s.get_files()
        # print "FILES: ", len(fs)
        # s.delete_all_files()
        # fs = s.get_files()
        # print "FILES: ", len(fs)

        # s.release()

        # s.hostDataverse.delete_study(s)

        print "\n\nclient succeeded"

    except Exception as e:
        sleep(1)
        traceback.print_exc()
        sleep(1)
        if dv:
            try:
                dv.swordConnection.history = json.dumps(
                    dv.connection.swordConnection.history, indent=True)
            except:
                pass
コード例 #16
0
class TestStudyOperations(unittest.TestCase):
    @classmethod
    def setUpClass(self):

        print "Connecting to DVN."
        self.dvc = Connection(
            username=DEFAULT_USERNAME,
            password=DEFAULT_PASSWORD,
            host=DEFAULT_HOST,
            disable_ssl=True
        )

        print "Getting Dataverse"
        self.dv = self.dvc.get_dataverses()[0]
        self.dv.is_released

        print "Removing any existing studies."
        studies = self.dv.get_studies()
        for study in studies :
            if study.get_state() != 'DEACCESSIONED':
                self.dv.delete_study(study)
        print 'Dataverse emptied.'

    def setUp(self):
        #runs before each test method

        #create a study for each test
        s = Study(**PICS_OF_CATS_STUDY)
        self.dv.add_study(s)
        doi = s.doi
        self.s = self.dv.get_study_by_doi(doi)
        self.assertEqual(doi, self.s.doi)
        return

    def tearDown(self):
        try:
            self.dv.delete_study(self.s)
        finally:
            return

    def test_create_study_from_xml(self):
        new_study = Study.from_xml_file(ATOM_STUDY)
        self.dv.add_study(new_study)
        retrieved_study = self.dv.get_study_by_title("Roasting at Home")
        self.assertTrue(retrieved_study)
        self.dv.delete_study(retrieved_study)

    def test_add_files(self):
        self.s.add_files(['test_dvn.py', 'config.py'])
        sleep(3) #wait for ingest
        actual_files = [f.name for f in self.s.get_files()]

        self.assertIn('test_dvn.py', actual_files)
        self.assertIn('config.py', actual_files)

    def test_upload_file(self):
        self.s.upload_file('file.txt', 'This is a simple text file!')
        self.s.upload_file('file2.txt', 'This is the second simple text file!')
        sleep(3) #wait for ingest
        actual_files = [f.name for f in self.s.get_files()]

        self.assertIn('file.txt', actual_files)
        self.assertIn('file2.txt', actual_files)

    def test_display_atom_entry(self):
        # this just tests we can get an entry back, but does
        # not do anything with that xml yet. however, we do use get_entry
        # in other methods so this test case is probably covered
        self.assertTrue(self.s.get_entry())
        
    def test_display_study_statement(self):
        # this just tests we can get an entry back, but does
        # not do anything with that xml yet. however, we do use get_statement
        # in other methods so this test case is probably covered
        self.assertTrue(self.s.get_statement())
    
    def test_delete_a_file(self):
        self.s.upload_file('cat.jpg', b'Whatever a cat looks like goes here.')
        
        #add file and confirm
        files = self.s.get_files()
        cat_file = [f for f in files if f.name == 'cat.jpg']
        self.assertTrue(len(cat_file) == 1)
        
        #delete file and confirm
        self.s.delete_file(cat_file[0])
        files = self.s.get_files()
        cat_file = [f for f in files if f.name == "cat.jpg"]
        self.assertTrue(len(cat_file) == 0)
        
    def test_delete_a_study(self):
        xmlStudy = Study.from_xml_file(ATOM_STUDY)
        self.dv.add_study(xmlStudy)
        atomStudy = self.dv.get_study_by_title("Roasting at Home")
        self.assertTrue(atomStudy)

        startingNumberOfStudies = len(self.dv.get_studies())
        self.assertTrue(startingNumberOfStudies > 0)
        self.dv.delete_study(atomStudy)
        self.assertEqual(atomStudy.get_state(refresh=True), 'DEACCESSIONED')
        self.assertEqual(len(self.dv.get_studies()), startingNumberOfStudies - 1)
        
    def test_release_study(self):
        self.assertTrue(self.s.get_state() == "DRAFT")
        self.s.release()
        self.assertTrue(self.s.get_state() == "RELEASED")
        self.dv.delete_study(self.s)
        self.assertTrue(self.s.get_state(refresh=True) == "DEACCESSIONED")
    
    def test_dataverse_released(self):
        self.assertTrue(self.dv.is_released)
コード例 #17
0
 def test_connect_unauthorized(self):
     with pytest.raises(exceptions.UnauthorizedError):
         Connection(TEST_HOST, 'wrong-token')
コード例 #18
0
    def test_connect(self):
        connection = Connection(TEST_HOST, self.token)

        assert connection.host == TEST_HOST
        assert connection.token == self.token
        assert connection._service_document
コード例 #19
0
def main():
    
    dv = None # declare outside so except clause has access
    try:
        dvc = Connection(
            username=DEFAULT_USERNAME,
            password=DEFAULT_PASSWORD,
            host=DEFAULT_HOST,
            disable_ssl=True,
        )
                        
        
        dvs = dvc.get_dataverses()
        for dv in dvs:
            print dv
            
        
        dv = dvs[0]
      
        # clean up the test dataverse
        # for study in dv.get_studies():
        #     dv.delete_study(study)
        # print "RELEASED:", dv.is_released()

        s = dv.get_studies()[0]
        # s = Study(EXAMPLE_DICT)
        # s = Study(EXAMPLE_FILE)

        # print s
        print s.doi

        # s.delete_all_files()
        # s.add_file("dataverseclient/resources/test/one.txt")
        # s.delete_file(s.get_file("one.txt"))

        # s.add_file("dataverseclient/resources/test")

        s.get_statement()
        print s.get_entry()

        # s.add_files([INGEST_FILES])
        # print s.get_citation()
        # print s.get_state()

        # sleep(3) #wait for ingest`
        
        # fs = s.get_files()
        # print "FILES: ", len(fs)
        # s.delete_file(fs[-1])
        # fs = s.get_files()
        # print "FILES: ", len(fs)
        # s.delete_all_files()
        # fs = s.get_files()
        # print "FILES: ", len(fs)
        
        # s.release()

        # s.hostDataverse.delete_study(s)

        print "\n\nclient succeeded"
        
    except Exception as e:
        sleep(1)
        traceback.print_exc()
        sleep(1)
        if dv:
            try:
                dv.swordConnection.history = json.dumps(dv.connection.swordConnection.history, indent=True)
            except:
                pass
コード例 #20
0
class TestDatasetOperations(unittest.TestCase):

    @classmethod
    def setUpClass(self):
        print "Connecting to DVN."
        self.dvc = Connection(TEST_HOST, TEST_TOKEN)

        print "Getting Dataverse"
        dataverses = self.dvc.get_dataverses()
        if not dataverses:
            raise DataverseError(
                'You must have a Dataverse to run these tests.'
            )

        self.dv = dataverses[0]

        print "Removing any existing datasets."
        datasets = self.dv.get_datasets()
        for dataset in datasets:
            if dataset.get_state() != 'DEACCESSIONED':
                self.dv.delete_dataset(dataset)
        print 'Dataverse emptied.'

    def setUp(self):
        # runs before each test method

        # create a dataset for each test
        s = Dataset(**PICS_OF_CATS_DATASET)
        self.dv.add_dataset(s)
        doi = s.doi
        self.s = self.dv.get_dataset_by_doi(doi)
        self.assertEqual(doi, self.s.doi)
        return

    def tearDown(self):
        try:
            self.dv.delete_dataset(self.s)
        finally:
            return

    def test_create_dataset_from_xml(self):
        new_dataset = Dataset.from_xml_file(ATOM_DATASET)
        self.dv.add_dataset(new_dataset)
        retrieved_dataset = self.dv.get_dataset_by_title("Roasting at Home")
        self.assertTrue(retrieved_dataset)
        self.dv.delete_dataset(retrieved_dataset)

    def test_add_files(self):
        self.s.add_files(['test_dataverse.py', 'config.py'])
        actual_files = [f.name for f in self.s.get_files()]

        self.assertIn('test_dataverse.py', actual_files)
        self.assertIn('config.py', actual_files)

    def test_upload_file(self):
        self.s.upload_file('file.txt', 'This is a simple text file!')
        self.s.upload_file('file2.txt', 'This is the second simple text file!')
        actual_files = [f.name for f in self.s.get_files()]

        self.assertIn('file.txt', actual_files)
        self.assertIn('file2.txt', actual_files)

    def test_display_atom_entry(self):
        # this just tests we can get an entry back, but does
        # not do anything with that xml yet. however, we do use get_entry
        # in other methods so this test case is probably covered
        self.assertTrue(self.s.get_entry())
        
    def test_display_dataset_statement(self):
        # this just tests we can get an entry back, but does
        # not do anything with that xml yet. however, we do use get_statement
        # in other methods so this test case is probably covered
        self.assertTrue(self.s.get_statement())
    
    def test_delete_a_file(self):
        self.s.upload_file('cat.jpg', b'Whatever a cat looks like goes here.')
        
        #add file and confirm
        files = self.s.get_files()
        cat_file = [f for f in files if f.name == 'cat.jpg']
        self.assertTrue(len(cat_file) == 1)
        
        #delete file and confirm
        self.s.delete_file(cat_file[0])
        files = self.s.get_files()
        cat_file = [f for f in files if f.name == "cat.jpg"]
        self.assertTrue(len(cat_file) == 0)
        
    def test_delete_a_dataset(self):
        xmlDataset = Dataset.from_xml_file(ATOM_DATASET)
        self.dv.add_dataset(xmlDataset)
        atomDataset = self.dv.get_dataset_by_title("Roasting at Home")
        self.assertTrue(atomDataset)

        num_datasets = len(self.dv.get_datasets())
        self.assertTrue(num_datasets > 0)
        self.dv.delete_dataset(atomDataset)
        self.assertEqual(atomDataset.get_state(refresh=True), 'DEACCESSIONED')
        self.assertEqual(len(self.dv.get_datasets()), num_datasets - 1)

    @unittest.skip('Published datasets can no longer be deaccessioned via API')
    def test_publish_dataset(self):
        self.assertTrue(self.s.get_state() == "DRAFT")
        self.s.publish()
        self.assertTrue(self.s.get_state() == "PUBLISHED")
        self.dv.delete_dataset(self.s)
        self.assertTrue(self.s.get_state(refresh=True) == "DEACCESSIONED")