def test_update_document_check_in_status(self):
        """
        tests DocumentService.update_document_check_in_status
        """
        document_service = DocumentService(self.vault)

        # validate document checked in
        resp = document_service.get_document(self.document_id)
        self.assertEqual(resp['meta']['status'], 200)
        self.assertEqual(resp['data']['documentId'], self.document_id)
        self.assertEqual(resp['data']['checkInStatus'], 0)

        # check out document in VV
        resp = document_service.update_document_check_in_status(
            self.document_id, 1)
        self.assertEqual(resp['meta']['status'], 200)
        self.assertEqual(resp['data']['documentId'], self.document_id)
        self.assertEqual(resp['data']['checkInStatus'], 1)

        # check in document in VV
        resp = document_service.update_document_check_in_status(
            self.document_id, 0)
        self.assertEqual(resp['meta']['status'], 200)
        self.assertEqual(resp['data']['documentId'], self.document_id)
        self.assertEqual(resp['data']['checkInStatus'], 0)
 def test_get_document(self):
     """
     tests DocumentService.get_document
     """
     document_service = DocumentService(self.vault)
     resp = document_service.get_document(self.document_id)
     self.assertEqual(resp['meta']['status'], 200)
     self.assertEqual(resp['data']['documentId'], self.document_id)
 def test_get_document_index_field(self):
     """
     tests DocumentService.get_document_index_field
     """
     document_service = DocumentService(self.vault)
     resp = document_service.get_document_index_field(
         self.document_id, self.index_field_id)
     self.assertEqual(resp['meta']['status'], 200)
     self.assertEqual(resp['data']['fieldId'], self.index_field_id)
 def test_get_document_index_fields(self):
     """
     tests DocumentService.get_document_index_fields
     """
     document_service = DocumentService(self.vault)
     resp = document_service.get_document_index_fields(self.document_id)
     self.assertEqual(resp['meta']['status'], 200)
     index_fields = resp['data']
     self.assertGreater(len(index_fields), 0)
     for index_field in index_fields:
         self.assertEqual(index_field['dataType'], 'DocumentIndexField')
 def test_get_document_revisions(self):
     """
     tests DocumentService.get_document_revisions
     """
     document_service = DocumentService(self.vault)
     resp = document_service.get_document_revisions(self.document_id)
     self.assertEqual(resp['meta']['status'], 200)
     documents = resp['data']
     self.assertGreater(len(documents), 0)
     for document in documents:
         self.assertEqual(document['documentId'], self.document_id)
 def test_get_documents(self):
     """
     tests DocumentService.get_documents
     """
     document_service = DocumentService(self.vault)
     resp = document_service.get_documents(self.query_string)
     self.assertEqual(resp['meta']['status'], 200)
     documents = resp['data']
     self.assertGreater(len(documents), 0)
     for document in documents:
         self.assertEqual(document['folderPath'], self.folder_path)
 def test_get_document_revision_index_fields(self):
     """
     tests DocumentService.get_document_revision_index_fields
     """
     document_service = DocumentService(self.vault)
     resp = document_service.get_document_revision_index_fields(
         self.document_id, self.revision_id)
     self.assertEqual(resp['meta']['status'], 200)
     index_fields = resp['data']
     self.assertGreater(len(index_fields), 0)
     for index_field in index_fields:
         self.assertEqual(index_field['fieldId'], self.index_field_id)
 def test_update_document_index_field(self):
     """
     tests DocumentService.update_document_index_field
     """
     document_service = DocumentService(self.vault)
     expected_value = generate_random_uuid()
     resp = document_service.update_document_index_field(
         self.document_id, self.index_field_id, expected_value)
     self.assertEqual(resp['meta']['status'], 200)
     self.assertEqual(resp['data']['fieldId'], self.index_field_id)
     self.assertEqual(resp['data']['value'], expected_value)
     new_value = document_service.get_document_index_field(
         self.document_id, self.index_field_id)['data']['value']
     self.assertEqual(new_value, expected_value)
 def test_update_document_index_fields(self):
     """
     tests DocumentService.update_document_index_fields
     """
     document_service = DocumentService(self.vault)
     expected_value = generate_random_uuid()
     fields_dict = str({self.index_field_name: expected_value})
     resp = document_service.update_document_index_fields(
         self.document_id, fields_dict)
     self.assertEqual(resp['meta']['status'], 200)
     self.assertEqual(len(resp['data']), 1)
     self.assertEqual(
         resp['data'][0]['fieldId'],
         self.index_field_id)  # TODO: report issue with UUID label
     # self.assertEqual(resp['data'][0]['value'], expected_value)  # TODO: uncomment when API resolves bug
     new_value = document_service.get_document_index_field(
         self.document_id, self.index_field_id)['data']['value']
     self.assertEqual(new_value, expected_value)
    def test_new_document_and_delete_document(self):
        """
        tests DocumentService.new_document and DocumentService.delete_document
        """
        document_service = DocumentService(self.vault)

        # new document
        resp = document_service.new_document(self.folder_id, 1, '_test_doc',
                                             '_test_doc description', '0',
                                             '_test.txt')
        self.assertEqual(resp['meta']['status'], 200)
        document_id = resp['data']['documentId']
        revision_id = resp['data']['id']

        # validate document exists in VV
        resp = document_service.get_document(document_id)
        self.assertEqual(resp['meta']['status'], 200)
        self.assertEqual(resp['data']['documentId'], document_id)
        self.assertEqual(resp['data']['archive'],
                         0)  # document not in recycle bin

        # delete document
        resp = document_service.delete_document(revision_id)
        self.assertEqual(resp['meta']['status'], 200)

        # validate document does not exist in VV
        resp = document_service.get_document(document_id)
        self.assertEqual(resp['meta']['status'], 200)
        self.assertEqual(resp['data']['archive'], 2)  # document in recycle bin
    def test_delete_document_revision(self):
        """
        tests DocumentService.delete_document_revision
        """
        document_service = DocumentService(self.vault)

        # new document
        resp = document_service.new_document(self.folder_id, 1, '_test_doc',
                                             '_test_doc description', '0',
                                             '_test.txt')
        self.assertEqual(resp['meta']['status'], 200)
        document_id = resp['data']['documentId']
        empty_revision_id = resp['data']['id']

        # validate document exists in VV
        resp = document_service.get_document(document_id)
        self.assertEqual(resp['meta']['status'], 200)
        self.assertEqual(resp['data']['documentId'], document_id)
        self.assertEqual(resp['data']['archive'],
                         0)  # document not in recycle bin

        # upload first revision
        file_upload_name = 'test_file.txt'
        expected_revision = generate_random_uuid()
        file_service = FileService(self.vault)
        resp = file_service.file_upload(
            document_id, 'unittest', expected_revision,
            'unittest change reason', 'Released', '', 'unittest.txt',
            test_file_path + '/' + file_upload_name)

        self.assertEqual(resp['meta']['status'], 200)
        self.assertEqual(resp['data']['documentId'], document_id)
        self.assertEqual(resp['data']['revision'], expected_revision)

        new_file_id = resp['data']['id']
        stream = file_service.get_file_stream(new_file_id)
        stream_stats = vars(stream)
        self.assertEqual(stream_stats['status_code'], 200)
        self.assertEqual(stream_stats['headers']['Content-Type'],
                         'application/octet-stream')

        # get new revision
        resp = document_service.get_document(document_id)
        self.assertEqual(resp['meta']['status'], 200)
        self.assertEqual(resp['data']['documentId'], document_id)
        new_revision = resp['data']['id']

        # upload second revision
        expected_revision = generate_random_uuid()
        file_service = FileService(self.vault)
        resp = file_service.file_upload(
            document_id, 'unittest', expected_revision,
            'unittest change reason', 'Released', '', 'unittest.txt',
            test_file_path + '/' + file_upload_name)

        self.assertEqual(resp['meta']['status'], 200)
        self.assertEqual(resp['data']['documentId'], document_id)
        self.assertEqual(resp['data']['revision'], expected_revision)

        new_file_id = resp['data']['id']
        stream = file_service.get_file_stream(new_file_id)
        stream_stats = vars(stream)
        self.assertEqual(stream_stats['status_code'], 200)
        self.assertEqual(stream_stats['headers']['Content-Type'],
                         'application/octet-stream')

        # get new revision
        resp = document_service.get_document(document_id)
        self.assertEqual(resp['meta']['status'], 200)
        self.assertEqual(resp['data']['documentId'], document_id)
        newest_revision = resp['data']['id']

        # validate newest revision has changed
        self.assertNotEqual(new_revision, newest_revision)

        # validate document is not deleted
        resp = document_service.get_document_revision(document_id,
                                                      new_revision)
        self.assertEqual(resp['meta']['status'], 200)
        self.assertEqual(resp['data']['archive'],
                         0)  # document not in recycle bin

        # validate number of revisions
        resp = document_service.get_document_revisions(document_id)
        self.assertEqual(resp['meta']['status'], 200)
        self.assertEqual(len(resp['data']), 3)
        revisions = [document['id'] for document in resp['data']]
        self.assertIn(empty_revision_id, revisions)
        self.assertIn(new_revision, revisions)
        self.assertIn(newest_revision, revisions)

        # delete document
        resp = document_service.delete_document_revision(new_revision)
        self.assertEqual(resp['meta']['status'], 200)

        # validate document is deleted
        resp = document_service.get_document_revisions(document_id)
        self.assertEqual(resp['meta']['status'], 200)
        self.assertEqual(len(resp['data']), 2)
        revisions = [document['id'] for document in resp['data']]
        self.assertIn(empty_revision_id, revisions)
        self.assertNotIn(new_revision, revisions)
        self.assertIn(newest_revision, revisions)

        # validate newest document is still newest_revision
        resp = document_service.get_document(document_id)
        self.assertEqual(resp['meta']['status'], 200)
        self.assertEqual(resp['data']['documentId'], document_id)
        self.assertEqual(resp['data']['id'], newest_revision)

        # delete document
        resp = document_service.delete_document(newest_revision)
        self.assertEqual(resp['meta']['status'], 200)

        # validate document does not exist in VV
        resp = document_service.get_document(document_id)
        self.assertEqual(resp['meta']['status'], 200)
        self.assertEqual(resp['data']['archive'], 2)  # document in recycle bin
Exemple #12
0
def setup_test_suite():
    """
    updates parameters.json for VVRestTestSuite
    """
    vault = get_vault_object()

    document_service = DocumentService(vault)
    folder_service = FolderService(vault)
    form_service = FormService(vault)
    index_field_service = IndexFieldService(vault)
    site_service = SiteService(vault)
    group_service = GroupService(vault)
    user_service = UserService(vault)
    file_service = FileService(vault)

    # create folder
    expected_folder_name = generate_random_uuid()
    expected_folder_description = expected_folder_name + ' description'
    resp = folder_service.new_folder(expected_folder_name,
                                     expected_folder_description, True)
    folder_id = resp['data']['id']
    folder_path = '/' + expected_folder_name
    query_string = "folderPath='" + folder_path + "'"

    # create sub folder
    expected_sub_folder_name = generate_random_uuid()
    expected_sub_folder_description = expected_sub_folder_name + ' description'
    resp = folder_service.new_sub_folder(folder_id, expected_sub_folder_name,
                                         expected_sub_folder_description, True)
    assert resp['meta']['status'] == 200
    sub_folder_id = resp['data']['id']
    sub_folder_path = folder_path + '/' + expected_sub_folder_name

    # create index field definition
    expected_label = get_random_string(10)
    expected_description = expected_label + ' description'
    resp = index_field_service.create_index_field(expected_label,
                                                  expected_description, 1,
                                                  True, 'DEFAULT')
    assert resp['meta']['status'] == 200
    index_field_id = resp['data']['id']
    index_field_name = expected_label

    # relate index field definition to folder
    resp = index_field_service.relate_index_field_to_folder(
        index_field_id, folder_id)
    assert resp['meta']['status'] == 200

    # create document
    resp = document_service.new_document(folder_id, 1, '_test_doc',
                                         '_test_doc description', '0',
                                         '_test.txt')
    assert resp['meta']['status'] == 200
    document_id = resp['data']['documentId']

    # create document revision (file upload)
    expected_revision = generate_random_uuid()
    resp = file_service.file_upload(document_id, 'unittest', expected_revision,
                                    'unittest change reason', 'Released', '',
                                    'unittest.txt',
                                    test_file_path + '/test_file.txt')

    assert resp['meta']['status'] == 200

    # get document revision
    resp = document_service.get_document(document_id)
    assert resp['meta']['status'] == 200
    document_revision_id = resp['data']['id']

    # create site
    expected_site_name = generate_random_uuid()
    expected_site_description = expected_site_name + ' description'
    resp = site_service.create_site(expected_site_name,
                                    expected_site_description)
    assert resp['meta']['status'] == 200
    site_id = resp['data']['id']

    # create new group
    expected_group_name = generate_random_uuid()
    expected_group_description = expected_group_name + ' description'
    resp = group_service.create_group(expected_group_name,
                                      expected_group_description, site_id)
    assert resp['meta']['status'] == 200
    group_id = resp['data']['id']

    # create user
    user_id = generate_random_uuid()
    first_name = 'test'
    last_name = 'test'
    email = '*****@*****.**'
    password = '******'
    resp = user_service.create_user(site_id, user_id, first_name, last_name,
                                    email, password)
    assert resp['meta']['status'] == 200
    user_id = resp['data']['id']

    # add user to group
    resp = group_service.add_user_to_group(group_id, user_id)
    assert resp['meta']['status'] == 201

    # get form params TODO: remove with API update
    parameters_json = get_parameters_json()
    form_template_id = parameters_json['form_template_id']
    form_instance_field_name = parameters_json['form_template_field_name']
    form_template_name = parameters_json['form_template_name']

    # create form instance
    form_instance_field_value = generate_random_uuid()
    payload = {form_instance_field_name: form_instance_field_value}

    resp = form_service.create_form_instance(form_template_id, payload)
    assert resp['meta']['status'] == 201
    form_instance_id = resp['data']['revisionId']
    form_instance_name = resp['data']['instanceName']

    # setup test_parameters json
    if os.path.isfile(parameters_file):
        parameters = get_parameters_json()
        parameters['folder_path'] = folder_path
        parameters['query_string'] = query_string
        parameters['document_id'] = document_id
        parameters['document_revision_id'] = document_revision_id
        parameters['index_field_id'] = index_field_id
        parameters['index_field_name'] = index_field_name
        parameters['folder_id'] = folder_id
        parameters['folder_name'] = expected_folder_name
        parameters['sub_folder_id'] = sub_folder_id
        parameters['sub_folder_path'] = sub_folder_path
        parameters['site_id'] = site_id
        parameters['group_id'] = group_id
        parameters['user_id'] = user_id
        parameters['form_instance_name'] = form_instance_name
        parameters['form_instance_id'] = form_instance_id
        parameters['form_instance_field_value'] = form_instance_field_value
    else:
        parameters = dict(folder_path=folder_path,
                          query_string=query_string,
                          document_id=document_id,
                          document_revision_id=document_revision_id,
                          index_field_id=index_field_id,
                          index_field_name=index_field_name,
                          folder_id=folder_id,
                          folder_name=expected_folder_name,
                          sub_folder_id=sub_folder_id,
                          sub_folder_path=sub_folder_path,
                          site_id=site_id,
                          group_id=group_id,
                          user_id=user_id,
                          form_instance_name=form_instance_name,
                          form_instance_id=form_instance_id,
                          form_instance_field_value=form_instance_field_value)

    with open(parameters_file, 'w+') as parameters_json:
        json.dump(parameters,
                  parameters_json)  # write test_parameters to parameters.json