Пример #1
0
def test_create_batch_change(vinyldns_test_context):
    changes = [
        AddRecord('change-test.vinyldns.', RecordType.A, 200,
                  AData('192.0.2.111')),
        AddRecord('192.0.2.111', RecordType.PTR, 200,
                  PTRData('change-test.vinyldns.'))
    ]
    r = vinyldns_test_context.client.create_batch_change(
        BatchChangeRequest(changes, 'comments',
                           vinyldns_test_context.group.id))
    assert r.user_id == 'ok'
    assert r.user_name == 'ok'
    assert r.comments == 'comments'
    assert r.approval_status == 'AutoApproved'

    change1 = r.changes[0]
    assert change1.input_name == 'change-test.vinyldns.'
    assert change1.ttl == 200
    assert change1.record.address == '192.0.2.111'
    assert change1.type == RecordType.A

    change2 = r.changes[1]
    assert change2.input_name == '192.0.2.111'
    assert change2.ttl == 200
    assert change2.record.ptrdname == 'change-test.vinyldns.'
    assert change2.type == RecordType.PTR
def test_create_batch_change(mocked_responses, vinyldns_client):
    ar = AddRecord('foo.bar.com', RecordType.A, 100, '1.2.3.4')
    drs = DeleteRecordSet('baz.bar.com', RecordType.A)

    arc = AddRecordChange(forward_zone.id, forward_zone.name, 'foo', 'foo.bar.com', RecordType.A, '1.2.3.4',
                          'Complete', 'id1', 'system-message', 'rchangeid1', 'rsid1')
    drc = DeleteRecordSetChange(forward_zone.id, forward_zone.name, 'baz', 'baz.bar.com', RecordType.A, 'Complete',
                                'id2', 'system-message', 'rchangeid2', 'rsid2')
    bc = BatchChange('user-id', 'user-name', 'batch change test', datetime.utcnow(), [arc, drc], 'bcid')
    mocked_responses.add(
        responses.POST, 'http://test.com/zones/batchrecordchanges',
        body=to_json_string(bc), status=200
    )
    r = vinyldns_client.create_batch_change(
        BatchChangeRequest(
            changes=[ar, drs],
            comments='batch change test'
        ))

    assert r.user_id == bc.user_id
    assert r.user_name == bc.user_name
    assert r.comments == bc.comments
    assert r.created_timestamp == bc.created_timestamp
    assert r.id == bc.id
    for l, r in zip(r.changes, bc.changes):
        check_single_changes_are_same(l, r)
Пример #3
0
def test_create_batch_change(mocked_responses, vinyldns_client):
    ar = AddRecord('foo.baa.com', RecordType.A, 100, AData('1.2.3.4'))
    drs = DeleteRecordSet('baz.bar.com', RecordType.A)
    drs_with_data = DeleteRecordSet('baz-with-data.bar.com', RecordType.A,
                                    AData('5.6.7.8'))

    arc = AddRecordChange(forward_zone.id, forward_zone.name,
                          'foo', 'foo.bar.com', RecordType.A, 200,
                          AData('1.2.3.4'), 'Complete', 'id1', [],
                          'system-message', 'rchangeid1', 'rsid1')

    drc = DeleteRecordSetChange(forward_zone.id, forward_zone.name, 'baz',
                                'baz.bar.com', RecordType.A, 'Complete', 'id2',
                                [], 'system-message', 'rchangeid2', 'rsid2')

    drc_with_data = DeleteRecordSetChange(forward_zone.id, forward_zone.name,
                                          'baz-with-data',
                                          'baz-with-data.bar.com',
                                          RecordType.A, 'Complete', 'id2', [],
                                          'system-message', 'rchangeid3',
                                          'rsid3', AData('5.6.7.8'))

    # Python 2/3 compatibility
    try:
        tomorrow = datetime.now().astimezone() + timedelta(1)
    except TypeError:
        tomorrow = datetime.now(tzlocal()).astimezone(tzlocal()) + timedelta(1)

    bc = BatchChange('user-id',
                     'user-name',
                     datetime.utcnow(), [arc, drc, drc_with_data],
                     'bcid',
                     'Scheduled',
                     'PendingReview',
                     comments='batch change test',
                     owner_group_id='owner-group-id',
                     scheduled_time=tomorrow)

    mocked_responses.add(responses.POST,
                         'http://test.com/zones/batchrecordchanges',
                         body=to_json_string(bc),
                         status=200)

    r = vinyldns_client.create_batch_change(
        BatchChangeRequest(changes=[ar, drs, drs_with_data],
                           comments='batch change test',
                           owner_group_id='owner-group-id',
                           scheduled_time=tomorrow))

    check_batch_changes_are_same(r, bc)
Пример #4
0
def test_batch_change_review_process_cancel(vinyldns_test_context):
    changes = [
        AddRecord('test-approve-success.not.loaded.', RecordType.A, 200,
                  AData("4.3.2.1"))
    ]

    bc = vinyldns_test_context.client.create_batch_change(
        BatchChangeRequest(changes, 'comments',
                           vinyldns_test_context.group.id))

    assert bc.status == 'PendingReview'
    assert bc.approval_status == 'PendingReview'
    assert len(bc.changes[0].validation_errors) == 1

    cancelled_bc = vinyldns_test_context.client.cancel_batch_change(bc.id)

    assert cancelled_bc.status == 'Cancelled'
    assert cancelled_bc.approval_status == 'Cancelled'
Пример #5
0
def test_batch_change_review_process_approve(vinyldns_test_context):
    approver = vinyldns_test_context.support_client

    changes = [
        AddRecord('test-approve-success.not.loaded.', RecordType.A, 200,
                  AData("4.3.2.1"))
    ]

    bc = vinyldns_test_context.client.create_batch_change(
        BatchChangeRequest(changes, 'comments',
                           vinyldns_test_context.group.id))

    assert bc.status == 'PendingReview'
    assert bc.approval_status == 'PendingReview'
    assert len(bc.changes[0].validation_errors) == 1

    # need to create the zone so the change can succeed
    zone = {
        'name': 'not.loaded.',
        'email': '*****@*****.**',
        'adminGroupId': vinyldns_test_context.group.id,
        'backendId': 'func-test-backend',
        'shared': True
    }
    zone_create = approver.connect_zone(zone)
    to_disconnect = zone_create.zone
    wait_until_zone_exists(approver, to_disconnect.id)

    vinyldns_test_context.support_client.approve_batch_change(
        bc.id, 'all good!')

    completed_bc = vinyldns_test_context.client.get_batch_change(bc.id)

    assert completed_bc.approval_status == 'ManuallyApproved'
    assert completed_bc.reviewer_id == 'support-user-id'
    assert completed_bc.reviewer_user_name == 'support-user'
    assert completed_bc.review_comment == 'all good!'
Пример #6
0
def test_batch_change_review_process_reject(vinyldns_test_context):
    changes = [
        AddRecord('test-approve-success.not.loaded.', RecordType.A, 200,
                  AData("4.3.2.1"))
    ]

    bc = vinyldns_test_context.client.create_batch_change(
        BatchChangeRequest(changes, 'comments',
                           vinyldns_test_context.group.id))

    assert bc.status == 'PendingReview'
    assert bc.approval_status == 'PendingReview'
    assert len(bc.changes[0].validation_errors) == 1

    vinyldns_test_context.support_client.reject_batch_change(
        bc.id, 'cannot create the zone')

    completed_bc = vinyldns_test_context.client.get_batch_change(bc.id)

    assert completed_bc.status == 'Rejected'
    assert completed_bc.approval_status == 'ManuallyRejected'
    assert completed_bc.reviewer_id == 'support-user-id'
    assert completed_bc.reviewer_user_name == 'support-user'
    assert completed_bc.review_comment == 'cannot create the zone'