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)
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)
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'
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!'
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'