private void setFiltersFromStrings(String dbWhitelist, String dbBlacklist, String tableWhitelist, String tableBlacklist) { Predicate<String> dbFilter = Selectors.databaseSelector() .includeDatabases(dbWhitelist) .excludeDatabases(dbBlacklist) .build(); // Define the filter using the whitelists and blacklists for tables and database names ... Predicate<TableId> tableFilter = Selectors.tableSelector() .includeDatabases(dbWhitelist) .excludeDatabases(dbBlacklist) .includeTables(tableWhitelist) .excludeTables(tableBlacklist) .build(); // Ignore built-in databases and tables ... if (config.getBoolean(MySqlConnectorConfig.TABLES_IGNORE_BUILTIN)) { this.tableFilter = tableFilter.and(isBuiltInTable.negate()); this.dbFilter = dbFilter.and(isBuiltInDb.negate()); } else { this.tableFilter = tableFilter; this.dbFilter = dbFilter; } }
@Test public void shouldCreateFilterWithDatabaseBlacklistAndTableBlacklist() { filter = Selectors.tableSelector() .excludeDatabases("db3,db4") .excludeTables("db1\\.A,db1\\.B,db2\\.C") .build(); assertNotAllowed(filter, "db1", "A"); assertNotAllowed(filter, "db1", "B"); assertAllowed(filter, "db1", "D"); assertAllowed(filter, "db1", "E"); assertAllowed(filter, "db1", "F"); assertNotAllowed(filter, "db2", "C"); assertAllowed(filter, "db2", "G"); assertAllowed(filter, "db2", "H"); assertNotAllowed(filter, "db3", "A"); assertNotAllowed(filter, "db4", "A"); }
@Test public void shouldCreateFilterWithDatabaseBlacklistAndTableWhitelist() { filter = Selectors.tableSelector() .excludeDatabases("db3,db4") .includeTables("db1\\.A,db1\\.B,db2\\.C") .build(); assertAllowed(filter, "db1", "A"); assertAllowed(filter, "db1", "B"); assertNotAllowed(filter, "db1", "D"); assertNotAllowed(filter, "db1", "E"); assertNotAllowed(filter, "db1", "F"); assertAllowed(filter, "db2", "C"); assertNotAllowed(filter, "db2", "G"); assertNotAllowed(filter, "db2", "H"); assertNotAllowed(filter, "db3", "A"); assertNotAllowed(filter, "db4", "A"); }
@Test public void shouldCreateFilterWithAllLists() { filter = Selectors.tableSelector() .includeDatabases("connector_test") .excludeDatabases("") .includeTables("") .excludeTables("") .build(); assertAllowed(filter, "connector_test", "A"); assertAllowed(filter, "connector_test", "B"); assertNotAllowed(filter, "other_test", "A"); assertNotAllowed(filter, "other_test", "B"); }
@Test public void shouldCreateFilterWithDatabaseBlacklistAndNoTableFilter() { filter = Selectors.tableSelector() .excludeDatabases("db1,db2") .build(); assertNotAllowed(filter, "db1", "A"); assertNotAllowed(filter, "db2", "A"); assertAllowed(filter, "db3", "A"); assertAllowed(filter, "db4", "A"); }