/*
* dnssecjava - a DNSSEC validating stub resolver for Java
* Copyright (c) 2013-2015 Ingo Bauersachs
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jitsi.dnssec;
import static org.junit.Assert.*;
import org.jitsi.dnssec.SRRset;
import org.jitsi.dnssec.validator.TrustAnchorStore;
import org.junit.Test;
import org.xbill.DNS.DClass;
import org.xbill.DNS.DNSKEYRecord;
import org.xbill.DNS.DSRecord;
import org.xbill.DNS.Name;
import org.xbill.DNS.RRset;
import org.xbill.DNS.TXTRecord;
import org.xbill.DNS.TextParseException;
public class TestTrustAnchorStore {
@Test
public void testNullKeyWhenNameNotUnderAnchor() throws TextParseException {
TrustAnchorStore tas = new TrustAnchorStore();
SRRset anchor = tas.find(Name.fromString("asdf.bla."), DClass.IN);
assertNull(anchor);
}
@Test
public void testKeyWhenNameUnderAnchorDS() throws TextParseException {
SRRset set = new SRRset(new RRset(new DSRecord(Name.fromString("bla."), DClass.IN, 0, 0, 0, 0, new byte[]{0})));
TrustAnchorStore tas = new TrustAnchorStore();
tas.store(set);
SRRset anchor = tas.find(Name.fromString("asdf.bla."), DClass.IN);
assertEquals(set, anchor);
}
@Test
public void testKeyWhenNameUnderAnchorDNSKEY() throws TextParseException {
SRRset set = new SRRset(new RRset(new DNSKEYRecord(Name.fromString("bla."), DClass.IN, 0, 0, 0, 0, new byte[]{0})));
TrustAnchorStore tas = new TrustAnchorStore();
tas.store(set);
SRRset anchor = tas.find(Name.fromString("asdf.bla."), DClass.IN);
assertEquals(set.getName(), anchor.getName());
}
@Test(expected = IllegalArgumentException.class)
public void testInvalidAnchorRecord() throws TextParseException {
SRRset set = new SRRset(new RRset(new TXTRecord(Name.fromString("bla."), DClass.IN, 0, "root")));
TrustAnchorStore tas = new TrustAnchorStore();
tas.store(set);
}
@Test
public void testClear() throws TextParseException {
SRRset set = new SRRset(new RRset(new DNSKEYRecord(Name.fromString("bla."), DClass.IN, 0, 0, 0, 0, new byte[]{0})));
TrustAnchorStore tas = new TrustAnchorStore();
tas.store(set);
SRRset anchor = tas.find(Name.fromString("asdf.bla."), DClass.IN);
assertNotNull(anchor);
tas.clear();
assertNull(tas.find(Name.fromString("asdf.bla."), DClass.IN));
}
}