Skip to content

Commit

Permalink
fix all server tests
Browse files Browse the repository at this point in the history
  • Loading branch information
bluejekyll committed Oct 12, 2017
1 parent 2bf5367 commit 2de88f0
Show file tree
Hide file tree
Showing 11 changed files with 235 additions and 138 deletions.
104 changes: 61 additions & 43 deletions Cargo.lock

Large diffs are not rendered by default.

16 changes: 16 additions & 0 deletions proto/src/rr/rr_set.rs
Expand Up @@ -158,6 +158,11 @@ impl RecordSet {
supported_algorithms: SupportedAlgorithms,
) -> Vec<&Record> {
if and_rrsigs {
// disable rfc 6975 when no supported_algorithms specified
if supported_algorithms.is_empty() {
return self.records.iter().chain(self.rrsigs.iter()).collect();
}

let rrsigs = self.rrsigs
.iter()
.filter(|record| if let &RData::SIG(ref rrsig) = record.rdata() {
Expand All @@ -170,6 +175,7 @@ impl RecordSet {
} else {
Algorithm::RSASHA1
});

self.records.iter().chain(rrsigs).collect()
} else {
self.records.iter().collect()
Expand Down Expand Up @@ -785,5 +791,15 @@ mod test {
false
}
}));

let mut supported_algorithms = SupportedAlgorithms::new();
supported_algorithms.set(Algorithm::ED25519);
assert!(rrset.records(true, supported_algorithms).iter().any(|r| {
if let &RData::SIG(ref sig) = r.rdata() {
sig.algorithm() == Algorithm::ED25519
} else {
false
}
}));
}
}
221 changes: 134 additions & 87 deletions server/tests/config_tests.rs
Expand Up @@ -15,6 +15,7 @@
*/
extern crate log;
extern crate trust_dns;
extern crate trust_dns_proto;
extern crate trust_dns_server;

use std::env;
Expand All @@ -36,9 +37,11 @@ fn test_read_config() {
let path: PathBuf = PathBuf::from(server_path).join("tests/named_test_configs/example.toml");

if !path.exists() {
assert!(false,
"can't locate example.toml and other configs: {:?}",
path)
assert!(
false,
"can't locate example.toml and other configs: {:?}",
path
)
}

println!("reading config");
Expand All @@ -50,45 +53,61 @@ fn test_read_config() {
assert_eq!(config.get_tcp_request_timeout(), Duration::from_secs(5));
assert_eq!(config.get_log_level(), LogLevel::Info);
assert_eq!(config.get_directory(), Path::new("/var/named"));
assert_eq!(config.get_zones(),
[ZoneConfig::new("localhost".into(),
ZoneType::Master,
"default/localhost.zone".into(),
None,
None,
vec![]),
ZoneConfig::new("0.0.127.in-addr.arpa".into(),
ZoneType::Master,
"default/127.0.0.1.zone".into(),
None,
None,
vec![]),
ZoneConfig::new("0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.\
assert_eq!(
config.get_zones(),
[
ZoneConfig::new(
"localhost".into(),
ZoneType::Master,
"default/localhost.zone".into(),
None,
None,
vec![],
),
ZoneConfig::new(
"0.0.127.in-addr.arpa".into(),
ZoneType::Master,
"default/127.0.0.1.zone".into(),
None,
None,
vec![],
),
ZoneConfig::new(
"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.\
ip6.arpa"
.into(),
ZoneType::Master,
"default/ipv6_1.zone".into(),
None,
None,
vec![]),
ZoneConfig::new("255.in-addr.arpa".into(),
ZoneType::Master,
"default/255.zone".into(),
None,
None,
vec![]),
ZoneConfig::new("0.in-addr.arpa".into(),
ZoneType::Master,
"default/0.zone".into(),
None,
None,
vec![]),
ZoneConfig::new("example.com".into(),
ZoneType::Master,
"example.com.zone".into(),
None,
None,
vec![])]);
.into(),
ZoneType::Master,
"default/ipv6_1.zone".into(),
None,
None,
vec![],
),
ZoneConfig::new(
"255.in-addr.arpa".into(),
ZoneType::Master,
"default/255.zone".into(),
None,
None,
vec![],
),
ZoneConfig::new(
"0.in-addr.arpa".into(),
ZoneType::Master,
"default/0.zone".into(),
None,
None,
vec![],
),
ZoneConfig::new(
"example.com".into(),
ZoneType::Master,
"example.com.zone".into(),
None,
None,
vec![],
),
]
);
}

#[test]
Expand All @@ -97,23 +116,33 @@ fn test_parse_toml() {
assert_eq!(config.get_listen_port(), 2053);

let config: Config = "listen_addrs_ipv4 = [\"0.0.0.0\"]".parse().unwrap();
assert_eq!(config.get_listen_addrs_ipv4(),
vec![Ipv4Addr::new(0, 0, 0, 0)]);
assert_eq!(
config.get_listen_addrs_ipv4(),
vec![Ipv4Addr::new(0, 0, 0, 0)]
);

let config: Config = "listen_addrs_ipv4 = [\"0.0.0.0\", \"127.0.0.1\"]"
.parse()
.unwrap();
assert_eq!(config.get_listen_addrs_ipv4(),
vec![Ipv4Addr::new(0, 0, 0, 0), Ipv4Addr::new(127, 0, 0, 1)]);
assert_eq!(
config.get_listen_addrs_ipv4(),
vec![Ipv4Addr::new(0, 0, 0, 0), Ipv4Addr::new(127, 0, 0, 1)]
);

let config: Config = "listen_addrs_ipv6 = [\"::0\"]".parse().unwrap();
assert_eq!(config.get_listen_addrs_ipv6(),
vec![Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0)]);
assert_eq!(
config.get_listen_addrs_ipv6(),
vec![Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0)]
);

let config: Config = "listen_addrs_ipv6 = [\"::0\", \"::1\"]".parse().unwrap();
assert_eq!(config.get_listen_addrs_ipv6(),
vec![Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0),
Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)]);
assert_eq!(
config.get_listen_addrs_ipv6(),
vec![
Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0),
Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1),
]
);

let config: Config = "tcp_request_timeout = 25".parse().unwrap();
assert_eq!(config.get_tcp_request_timeout(), Duration::from_secs(25));
Expand Down Expand Up @@ -149,39 +178,55 @@ algorithm = \
signer_name = \"ns.example.com.\"
"
.parse()
.unwrap();
assert_eq!(config.get_zones()[0].get_keys()[0].key_path(),
Path::new("/path/to/my_ed25519.pem"));
assert_eq!(config.get_zones()[0].get_keys()[0]
.algorithm()
.unwrap(),
Algorithm::ED25519);
assert_eq!(config.get_zones()[0].get_keys()[0]
.signer_name()
.unwrap()
.unwrap(),
Name::parse("ns.example.com.", None).unwrap());
assert_eq!(config.get_zones()[0].get_keys()[0].is_zone_signing_key(),
false);
assert_eq!(config.get_zones()[0].get_keys()[0].is_zone_update_auth(),
true);

assert_eq!(config.get_zones()[0].get_keys()[1].key_path(),
Path::new("/path/to/my_rsa.pem"));
assert_eq!(config.get_zones()[0].get_keys()[1]
.algorithm()
.unwrap(),
Algorithm::RSASHA256);
assert_eq!(config.get_zones()[0].get_keys()[1]
.signer_name()
.unwrap()
.unwrap(),
Name::parse("ns.example.com.", None).unwrap());
assert_eq!(config.get_zones()[0].get_keys()[1].is_zone_signing_key(),
false);
assert_eq!(config.get_zones()[0].get_keys()[1].is_zone_update_auth(),
false);
.parse()
.unwrap();
assert_eq!(
config.get_zones()[0].get_keys()[0].key_path(),
Path::new("/path/to/my_ed25519.pem")
);
assert_eq!(
config.get_zones()[0].get_keys()[0].algorithm().unwrap(),
Algorithm::ED25519
);
assert_eq!(
config.get_zones()[0].get_keys()[0]
.signer_name()
.unwrap()
.unwrap(),
Name::parse("ns.example.com.", None).unwrap()
);
assert_eq!(
config.get_zones()[0].get_keys()[0].is_zone_signing_key(),
false
);
assert_eq!(
config.get_zones()[0].get_keys()[0].is_zone_update_auth(),
true
);

assert_eq!(
config.get_zones()[0].get_keys()[1].key_path(),
Path::new("/path/to/my_rsa.pem")
);
assert_eq!(
config.get_zones()[0].get_keys()[1].algorithm().unwrap(),
Algorithm::RSASHA256
);
assert_eq!(
config.get_zones()[0].get_keys()[1]
.signer_name()
.unwrap()
.unwrap(),
Name::parse("ns.example.com.", None).unwrap()
);
assert_eq!(
config.get_zones()[0].get_keys()[1].is_zone_signing_key(),
false
);
assert_eq!(
config.get_zones()[0].get_keys()[1].is_zone_update_auth(),
false
);
}

#[test]
Expand All @@ -196,10 +241,12 @@ fn test_parse_tls() {
tls_cert = { path = \"path/to/some.pkcs12\" }
tls_listen_port = 8853
"
.parse()
.unwrap();
.parse()
.unwrap();

assert_eq!(config.get_tls_listen_port(), 8853);
assert_eq!(config.get_tls_cert().unwrap().get_path(),
Path::new("path/to/some.pkcs12"));
assert_eq!(
config.get_tls_cert().unwrap().get_path(),
Path::new("path/to/some.pkcs12")
);
}
1 change: 1 addition & 0 deletions server/tests/persistence_tests.rs
@@ -1,5 +1,6 @@
extern crate rusqlite;
extern crate trust_dns;
extern crate trust_dns_proto;
extern crate trust_dns_server;

use std::net::*;
Expand Down
4 changes: 2 additions & 2 deletions server/tests/server_harness/mod.rs
Expand Up @@ -18,7 +18,7 @@ use trust_dns::op::Message;
use trust_dns::rr::*;
use trust_dns::rr::dnssec::*;

use self::mut_message_client::MutMessageClient;
use self::mut_message_client::MutMessageHandle;

/// Spins up a Server and handles shutting it down after running the test
#[allow(dead_code)]
Expand Down Expand Up @@ -178,7 +178,7 @@ pub fn query_all_dnssec(
with_rfc6975: bool,
) {
let name = Name::from_str("example.com.").unwrap();
let mut client = MutMessageClient::new(client);
let mut client = MutMessageHandle::new(client);
client.dnssec_ok = true;
if with_rfc6975 {
client.support_algorithms = Some(SupportedAlgorithms::from_vec(&[algorithm]));
Expand Down
20 changes: 15 additions & 5 deletions server/tests/server_harness/mut_message_client.rs
Expand Up @@ -5,26 +5,29 @@ use trust_dns::rr::dnssec::*;
use trust_dns::rr::rdata::opt::EdnsOption;
use trust_dns::error::*;
use trust_dns::op::*;
use trust_dns_proto::DnsHandle;

#[derive(Clone)]
pub struct MutMessageClient<C: ClientHandle> {
pub struct MutMessageHandle<C: ClientHandle> {
client: C,
pub dnssec_ok: bool,
pub support_algorithms: Option<SupportedAlgorithms>,
}

impl<C: ClientHandle> MutMessageClient<C> {
impl<C: ClientHandle> MutMessageHandle<C> {
pub fn new(client: C) -> Self {
MutMessageClient {
MutMessageHandle {
client,
dnssec_ok: false,
support_algorithms: None,
}
}
}

impl<C: ClientHandle> ClientHandle for MutMessageClient<C> {
fn send(&mut self, mut message: Message) -> Box<Future<Item = Message, Error = ClientError>> {
impl<C: ClientHandle> DnsHandle for MutMessageHandle<C> {
type Error = ClientError;

fn send(&mut self, mut message: Message) -> Box<Future<Item = Message, Error = Self::Error>> {
{
// mutable block
let edns = message.edns_mut();
Expand All @@ -35,6 +38,13 @@ impl<C: ClientHandle> ClientHandle for MutMessageClient<C> {
}
}

println!("sending message");
self.client.send(message)
}
}

impl<C: ClientHandle> ClientHandle for MutMessageHandle<C> {
fn is_verifying_dnssec(&self) -> bool {
true
}
}
1 change: 1 addition & 0 deletions server/tests/timeout_stream_tests.rs
@@ -1,5 +1,6 @@
extern crate futures;
extern crate tokio_core;
extern crate trust_dns_proto;
extern crate trust_dns_server;

use std::io;
Expand Down
1 change: 1 addition & 0 deletions server/tests/txt_tests.rs
@@ -1,4 +1,5 @@
extern crate trust_dns;
extern crate trust_dns_proto;
extern crate trust_dns_server;

use std::net::{Ipv4Addr, Ipv6Addr};
Expand Down

0 comments on commit 2de88f0

Please sign in to comment.