def test_canvas_sync_metadata(self, app, metadata_db): """When given a job id, updates metadata on file sync.""" url = 'http://shakespeare.mit.edu/Poetry/sonnet.XLV.html' key = 'canvas/sonnet_submission_dim/sonnet-xlv.txt' with mock_s3(app): with open(_get_fixtures_path() + '/sonnet_xlv.html', 'r') as file: responses.add(responses.GET, url, body=file.read(), headers={'Content-Length': '767'}) # Run two successive sync jobs on the same file. The first succeeds, the second is skipped as # a duplicate. metadata.create_canvas_sync_status('job_1', 'sonnet-xlv.txt', 'sonnet_submission_dim', url) result = SyncFileToS3().run(url=url, key=key, canvas_sync_job_id='job_1') assert result is True metadata.create_canvas_sync_status('job_2', 'sonnet-xlv.txt', 'sonnet_submission_dim', url) result = SyncFileToS3().run(url=url, key=key, canvas_sync_job_id='job_2') assert result is False schema = app.config['REDSHIFT_SCHEMA_METADATA'] sync_metadata = redshift.fetch( f'SELECT * FROM {schema}.canvas_sync_job_status') snapshot_metadata = redshift.fetch( f'SELECT * FROM {schema}.canvas_synced_snapshots') assert len(sync_metadata) == 2 assert sync_metadata[0]['job_id'] == 'job_1' assert sync_metadata[0][ 'destination_url'] == 's3://mock-bucket/canvas/sonnet_submission_dim/sonnet-xlv.txt' assert sync_metadata[0]['status'] == 'complete' assert sync_metadata[0]['source_size'] == 767 assert sync_metadata[0]['destination_size'] == 767 assert sync_metadata[0]['updated_at'] > sync_metadata[0][ 'created_at'] assert sync_metadata[1]['job_id'] == 'job_2' assert sync_metadata[1][ 'destination_url'] == 's3://mock-bucket/canvas/sonnet_submission_dim/sonnet-xlv.txt' assert sync_metadata[1]['status'] == 'duplicate' assert sync_metadata[1]['source_size'] is None assert sync_metadata[1]['destination_size'] is None assert sync_metadata[1]['updated_at'] > sync_metadata[1][ 'created_at'] assert len(snapshot_metadata) == 1 assert snapshot_metadata[0]['filename'] == 'sonnet-xlv.txt' assert snapshot_metadata[0][ 'canvas_table'] == 'sonnet_submission_dim' assert snapshot_metadata[0][ 'url'] == 's3://mock-bucket/canvas/sonnet_submission_dim/sonnet-xlv.txt' assert snapshot_metadata[0]['size'] == 767 assert snapshot_metadata[0]['created_at'] assert snapshot_metadata[0]['deleted_at'] is None
def _create_fixtures(app, sample_csids): fixture_output = os.environ.get('FIXTURE_OUTPUT_PATH') or mockingbird._get_fixtures_path() cl = Client(app) cl.server.info.to_file(f'{fixture_output}/calnet_server_info.json') cl.server.schema.to_file(f'{fixture_output}/calnet_server_schema.json') conn = cl.connect() conn.search('ou=people,dc=berkeley,dc=edu', cl._csids_filter(sample_csids), attributes=ldap3.ALL_ATTRIBUTES) conn.response_to_file(f'{fixture_output}/calnet_search_entries.json', raw=True) conn.unbind()
def _fixture_path(pattern): fixtures_path = mockingbird._get_fixtures_path() return f'{fixtures_path}/calnet_{pattern}.json'