[package]
name = "hickory-integration"
publish = false

# A short blurb about the package. This is not rendered in any format when
# uploaded to crates.io (aka this is not markdown)
description = """
Hickory DNS integration testing library.
"""

# These URLs point to more information about the repository
documentation = "https://docs.rs/hickory-dns"

# This points to a file in the repository (relative to this Cargo.toml). The
# contents of this file are stored and indexed in the registry.
readme = "../README.md"

version.workspace = true
authors.workspace = true
edition.workspace = true
rust-version.workspace = true
homepage.workspace = true
repository.workspace = true
keywords.workspace = true
categories.workspace = true
license.workspace = true

[badges]
#github-actions = { repository = "bluejekyll/hickory", branch = "main", workflow = "test" }
codecov = { repository = "hickory-dns/hickory-dns", branch = "main", service = "github" }
maintenance = { status = "actively-developed" }

[lib]
name = "hickory_integration"
path = "src/lib.rs"

[features]
dnssec-openssl = [
    "dnssec",
    "hickory-resolver/dnssec-openssl",
    "hickory-server/dnssec-openssl",
    "hickory-client/dnssec-openssl",
    "hickory-proto/dnssec-openssl",
]
# TODO: dnssec-openssl is enabled for RSA support, we should add testing support for just the Ring toolchain
dnssec-ring = [
    "dnssec",
    "hickory-resolver/dnssec-ring",
    "hickory-server/dnssec-ring",
    "hickory-client/dnssec-ring",
    "hickory-client/dnssec-openssl",
    "hickory-proto/dnssec-ring",
]
dnssec = ["dep:openssl"]

# enables experimental the mDNS (multicast) feature
# TODO: revisit how mdns is implemented in resolver
# mdns = ["hickory-client/mdns", "hickory-proto/mdns", "hickory-resolver/mdns"]

dns-over-https-rustls = [
    "hickory-client/dns-over-https-rustls",
    "hickory-resolver/dns-over-https-rustls",
    "dns-over-https",
    "dep:rustls",
    "dep:webpki-roots",
]
dns-over-https = ["hickory-proto/dns-over-https"]
dns-over-quic = [
    "dns-over-rustls",
    "hickory-proto/dns-over-quic",
    "hickory-resolver/dns-over-quic",
]
dns-over-h3 = [
    "dns-over-rustls",
    "hickory-proto/dns-over-h3",
    "hickory-resolver/dns-over-h3",
]

# TODO: need to make server support rustls and native-tls
# dns-over-native-tls = ["dns-over-tls",  "hickory-resolver/dns-over-native-tls", "hickory-server/dns-over-native-tls"]
dns-over-openssl = [
    "dns-over-tls",
    "hickory-proto/dns-over-openssl",
    "hickory-resolver/dns-over-openssl",
    "hickory-server/dns-over-openssl",
]
dns-over-rustls = [
    "dns-over-tls",
    "hickory-proto/dns-over-rustls",
    "hickory-resolver/dns-over-rustls",
    "hickory-server/dns-over-rustls",
    "dep:rustls",
]
dns-over-tls = []

sqlite = ["rusqlite", "hickory-server/sqlite"]

[dependencies]
async-trait.workspace = true
futures = { workspace = true, features = ["executor"] }
once_cell.workspace = true
openssl = { workspace = true, optional = true, features = ["v102", "v110"] }
rand.workspace = true
rusqlite = { workspace = true, features = ["bundled"], optional = true }
rustls = { workspace = true, optional = true }
time.workspace = true
tokio = { workspace = true, features = ["time", "rt"] }
tracing.workspace = true
hickory-client.workspace = true
hickory-proto = { workspace = true, features = ["testing"] }
hickory-recursor = { workspace = true }
hickory-resolver = { workspace = true, features = ["tokio-runtime"] }
hickory-server = { workspace = true, features = ["testing"] }
webpki-roots = { workspace = true, optional = true }

[dev-dependencies]
futures = { workspace = true, features = ["thread-pool"] }
tokio = { workspace = true, features = ["macros", "rt"] }
tracing-subscriber = { workspace = true, features = [
    "std",
    "fmt",
    "env-filter",
] }
