Release v1.1.0

This commit is contained in:
thakares committed 2026-09-02 15:19:19 +05:30
1 parent 34227efd2b
commit edc710cbd2
46 files changed
+5324 -190

No files matched your search

@@ -4,7 +4,7 @@ use chrono::Utc;
use ipnet::IpNet;
use nx9_wg_core::crypto::{generate_keypair, generate_preshared_key};
use nx9_wg_core::types::wireguard::{
Interface, Peer, PeerProfile, PeerState, PeerType, WireGuardPublicKey,
Interface, InterfaceRole, Peer, PeerProfile, PeerState, PeerType, WireGuardPublicKey,
};
use nx9_wg_db::Store;
use std::str::FromStr;
@@ -22,9 +22,10 @@ async fn test_interface_and_peer_crud_and_cascade() {
let iface = Interface {
id: iface_id,
name: "wg0".to_string(),
role: InterfaceRole::Overlay,
private_key: priv_k.clone(),
public_key: pub_k.clone(),
listen_port: 51820,
listen_port: Some(51820),
address_v4: IpNet::from_str("10.0.0.1/24").expect("valid cidr"),
address_v6: Some(IpNet::from_str("fd00::1/64").expect("valid cidr")),
mtu: Some(1420),
@@ -50,7 +51,8 @@ async fn test_interface_and_peer_crud_and_cascade() {
.expect("get_interface")
.expect("iface found");
assert_eq!(fetched.name, "wg0");
assert_eq!(fetched.listen_port, 51820);
assert_eq!(fetched.role, InterfaceRole::Overlay);
assert_eq!(fetched.listen_port, Some(51820));
assert_eq!(fetched.address_v4.to_string(), "10.0.0.1/24");
assert_eq!(fetched.mtu, Some(1420));
@@ -65,9 +67,10 @@ async fn test_interface_and_peer_crud_and_cascade() {
let dup_iface = Interface {
id: Uuid::new_v4(),
name: "wg0".to_string(),
role: InterfaceRole::Overlay,
private_key: priv_k.clone(),
public_key: pub_k.clone(),
listen_port: 51821,
listen_port: Some(51821),
address_v4: IpNet::from_str("10.0.1.1/24").unwrap(),
address_v6: None,
mtu: None,
@@ -233,14 +236,37 @@ async fn test_interface_and_peer_crud_and_cascade() {
.expect("list peers");
assert_eq!(peer_list.len(), 1);
// Test cascade delete: deleting interface must cascade and delete its peers
// Test upstream interface with listen_port = None
let upstream_id = Uuid::new_v4();
let upstream_iface = Interface {
id: upstream_id,
name: "proton0".to_string(),
role: InterfaceRole::Upstream,
private_key: priv_k.clone(),
public_key: pub_k.clone(),
listen_port: None,
address_v4: IpNet::from_str("10.2.0.2/32").unwrap(),
address_v6: None,
mtu: Some(1420),
dns: Some("10.2.0.1".to_string()),
enabled: true,
pre_up: None,
post_up: None,
pre_down: None,
post_down: None,
created_at: now,
updated_at: now,
};
store
.delete_interface(iface_id)
.create_interface(&upstream_iface)
.await
.expect("delete interface");
assert!(store.get_interface(iface_id).await.expect("get").is_none());
assert!(
store.get_peer(peer_id).await.expect("get").is_none(),
"peer must be cascade-deleted with interface"
);
.expect("create upstream interface");
let fetched_upstream = store
.get_interface(upstream_id)
.await
.expect("get")
.expect("upstream found");
assert_eq!(fetched_upstream.name, "proton0");
assert_eq!(fetched_upstream.role, InterfaceRole::Upstream);
assert_eq!(fetched_upstream.listen_port, None);
}