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]
Esempio n. 2
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]
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
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)
Esempio n. 5
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
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")