@Test public void testGetQueryAcls_deny() { SearchFiltersQuestion question = SearchFiltersQuestion.builder().setFilterSpecifier(ACL.getName()).setAction("deny").build(); SearchFiltersAnswerer answerer = new SearchFiltersAnswerer(question, _batfish); List<Triple<String, String, IpAccessList>> queryAcls = answerer.getQueryAcls(question); assertThat(queryAcls, hasSize(1)); String queryConfig = queryAcls.get(0).getLeft(); String queryAclName = queryAcls.get(0).getMiddle(); IpAccessList queryAcl = queryAcls.get(0).getRight(); assertThat(queryConfig, equalTo(_config.getHostname())); assertThat(queryAclName, equalTo(ACL.getName())); assertThat(queryAcl.getName(), equalTo(NEGATED_RENAMER.apply(ACL.getName()))); assertThat(queryAcl, is(DENY_ACL)); }
@Test public void testGetQueryAcls_matchLine2() { SearchFiltersQuestion question = SearchFiltersQuestion.builder() .setFilterSpecifier(ACL.getName()) .setAction("matchLine 2") .build(); SearchFiltersAnswerer answerer = new SearchFiltersAnswerer(question, _batfish); List<Triple<String, String, IpAccessList>> queryAcls = answerer.getQueryAcls(question); assertThat(queryAcls, hasSize(1)); String queryConfig = queryAcls.get(0).getLeft(); String queryAclName = queryAcls.get(0).getMiddle(); IpAccessList queryAcl = queryAcls.get(0).getRight(); assertThat(queryConfig, equalTo(_config.getHostname())); assertThat(queryAclName, equalTo(ACL.getName())); assertThat(queryAcl.getName(), equalTo(MATCH_LINE_RENAMER.apply(2, ACL.getName()))); assertThat(queryAcl, is(MATCH_LINE2_ACL)); }
@Test public void testGetQueryAcls_permit() { SearchFiltersQuestion question = SearchFiltersQuestion.builder() .setFilterSpecifier(ACL.getName()) .setAction("permit") .build(); SearchFiltersAnswerer answerer = new SearchFiltersAnswerer(question, _batfish); List<Triple<String, String, IpAccessList>> queryAcls = answerer.getQueryAcls(question); assertThat(queryAcls, hasSize(1)); String queryConfig = queryAcls.get(0).getLeft(); String queryAclName = queryAcls.get(0).getMiddle(); IpAccessList queryAcl = queryAcls.get(0).getRight(); assertThat(queryConfig, equalTo(_config.getHostname())); assertThat(queryAclName, equalTo(ACL.getName())); assertThat(queryAcl, is(ACL)); }
SearchFiltersQuestion.builder() .setStartLocation("enter(.*)") .setAction("deny") .setGenerateExplanations(true) .build(),
@Test public void testAnswerWithRenamingAndExplanations() { SearchFiltersQuestion question = SearchFiltersQuestion.builder().setGenerateExplanations(true).setAction("deny").build(); SearchFiltersAnswerer answerer = new SearchFiltersAnswerer(question, _batfish); TableAnswerElement ae = (TableAnswerElement) answerer.answer(); assertThat( ae, hasRows( containsInAnyOrder( ImmutableList.of( allOf( hasColumn(COL_ACTION, equalTo("DENY"), Schema.STRING), hasColumn(COL_FILTER_NAME, equalTo(ACL.getName()), Schema.STRING)), allOf( hasColumn(COL_ACTION, equalTo("DENY"), Schema.STRING), hasColumn( COL_FILTER_NAME, equalTo(BLOCKED_LINE_ACL.getName()), Schema.STRING)), allOf( hasColumn(COL_ACTION, equalTo("DENY"), Schema.STRING), hasColumn(COL_FILTER_NAME, equalTo(SRC_ACL.getName()), Schema.STRING)))))); }
@Test public void testSetQuery() { SearchFiltersQuestion question = new SearchFiltersQuestion(); assertThat(question.getType(), is(Type.PERMIT)); assertThat(question.getLineNumber(), nullValue()); question = SearchFiltersQuestion.builder().setAction("deny").build(); assertThat(question.getType(), is(Type.DENY)); assertThat(question.getLineNumber(), nullValue()); question = SearchFiltersQuestion.builder().setAction("matchLine 5").build(); assertThat(question.getType(), is(Type.MATCH_LINE)); assertThat(question.getLineNumber(), is(5)); question = SearchFiltersQuestion.builder().setAction("permit").build(); assertThat(question.getType(), is(Type.PERMIT)); assertThat(question.getLineNumber(), nullValue()); exception.expect(BatfishException.class); exception.expectMessage("Unrecognized query: foo"); SearchFiltersQuestion.builder().setAction("foo").build(); }
@Test public void testReachFilterNodeSpecifierDefault() { SearchFiltersQuestion q = new SearchFiltersQuestion(); Set<String> nodes = q.getNodesSpecifier().resolve(_batfish.specifierContext()); assertThat(nodes, contains(_config.getHostname())); q = SearchFiltersQuestion.builder() .setFilterSpecifier(ACL.getName()) .setAction("permit") .setNodeSpecifier("UNMATCHABLE") .build(); nodes = q.getNodesSpecifier().resolve(_batfish.specifierContext()); assertThat(nodes, emptyIterable()); }