def test_historical_check_percentage(subscribers_list_importer, logger, mocked_statsd, db_conn, metadata_db_conn, mocked_config, tmpdir): """Verify that the subscribers list data is not imported if it fails the historical check.""" expect_success(subscribers_list_importer, 5, db_conn, logger) # size increased, importer succeeds with get_importer( SubscribersListImporter, db_conn, metadata_db_conn, mocked_config.db_config, tmpdir, logger, mocked_statsd, SubscribersListParams( filename='sample_subscribers_list_large.csv', import_size_variation_percent=mocked_config. subscribers_threshold_config.import_size_variation_percent, import_size_variation_absolute=mocked_config. subscribers_threshold_config.import_size_variation_absolute) ) as imp: expect_success(imp, 99, db_conn, logger) # importing file with drop in size greater then 5% with get_importer( SubscribersListImporter, db_conn, metadata_db_conn, mocked_config.db_config, tmpdir, logger, mocked_statsd, SubscribersListParams( filename= 'sample_subscribers_list_large_drop_5_percent_greater.csv', import_size_variation_percent=mocked_config. subscribers_threshold_config.import_size_variation_percent, import_size_variation_absolute=mocked_config. subscribers_threshold_config.import_size_variation_absolute) ) as imp: expect_failure(imp, exc_message='Failed import size historic check') # importing file with drop in size greater then 5% with get_importer( SubscribersListImporter, db_conn, metadata_db_conn, mocked_config.db_config, tmpdir, logger, mocked_statsd, SubscribersListParams( filename= 'sample_subscribers_list_large_drop_5_percent_less.csv', import_size_variation_percent=mocked_config. subscribers_threshold_config.import_size_variation_percent, import_size_variation_absolute=mocked_config. subscribers_threshold_config.import_size_variation_absolute) ) as imp: expect_success(imp, 95, db_conn, logger)
def test_repeat_import(subscribers_list_importer, logger, mocked_statsd, db_conn, metadata_db_conn, mocked_config, tmpdir): """Verify that same import doesn't affect db.""" expect_success(subscribers_list_importer, 5, db_conn, logger) # importing same file with get_importer( SubscribersListImporter, db_conn, metadata_db_conn, mocked_config.db_config, tmpdir, logger, mocked_statsd, SubscribersListParams( filename='sample_subscriberslist.csv')) as imp: expect_success(imp, 5, db_conn, logger)
def test_override_historical_check(subscribers_list_importer, logger, mocked_statsd, db_conn, metadata_db_conn, mocked_config, tmpdir): """Verify that the user can override historical checks when importing subscribers list data.""" expect_success(subscribers_list_importer, 5, db_conn, logger) with get_importer( SubscribersListImporter, db_conn, metadata_db_conn, mocked_config.db_config, tmpdir, logger, mocked_statsd, SubscribersListParams( filename='sample_subscriberslist_historial_check.csv', perform_historic_check=False)) as imp: expect_success(imp, 0, db_conn, logger)
def test_historical_check_empty(subscribers_list_importer, logger, mocked_statsd, db_conn, metadata_db_conn, mocked_config, tmpdir): """Verify that subscribers list data is not imported if it fails historical check.""" expect_success(subscribers_list_importer, 5, db_conn, logger) # attempting to import empty subscribers list with get_importer( SubscribersListImporter, db_conn, metadata_db_conn, mocked_config.db_config, tmpdir, logger, mocked_statsd, SubscribersListParams( filename='sample_subscriberslist_historial_check.csv')) as imp: expect_failure(imp, exc_message='Failed import size historic check')
def test_delta_file_prevalidation(logger, db_conn, metadata_db_conn, mocked_config, tmpdir, mocked_statsd, subscribers_list_importer): """Test delta file pre-validation schemas.""" # update change-type is not allowed here expect_failure( subscribers_list_importer, exc_message= 'Pre-validation failed: b\'Error: regex("^(add|remove)$") fails for line: 2, ' 'column: change_type, value: "update"\\nFAIL') # change-type must be lower case with get_importer( SubscribersListImporter, db_conn, metadata_db_conn, mocked_config.db_config, tmpdir, logger, mocked_statsd, SubscribersListParams(content='uid,imsi,change_type\n' '12345678901234,11111111111111,ADD', delta=True)) as imp: expect_failure( imp, exc_message= 'Pre-validation failed: b\'Error: regex("^(add|remove)$") fails for line: ' '1, column: change_type, value: "ADD"\\nFAIL')
with db_conn.cursor() as cursor: cursor.execute( 'SELECT uid, imsi FROM subscribers_registration_list ORDER BY uid, imsi' ) # noqa: Q440 res = {(res.uid, res.imsi) for res in cursor.fetchall()} assert result.exit_code == 0 assert len(res) == 3 assert res == {('3536260220456285', '11108080805796'), ('3541200302086361', '11108951160476'), ('3567120606015081', '11108864102404')} @pytest.mark.parametrize('subscribers_list_importer', [ SubscribersListParams(filename='subscribers_list_insensitive_header.csv') ], indirect=True) def test_case_insensitive_headers(subscribers_list_importer, logger, db_conn): """Verify that the subscribers list file is accepted and imported if the headers have mixed cases.""" expect_success(subscribers_list_importer, 1, db_conn, logger) @pytest.mark.parametrize( 'subscribers_list_importer', [SubscribersListParams(filename='subscribers_list_duplicate_record.csv')], indirect=True) def test_duplicate_check_override(subscribers_list_importer, logger, db_conn): """Verify that if duplicate record exists in the file, only one record gets written to the db.""" expect_success(subscribers_list_importer, 1, db_conn, logger)