mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-27 10:18:54 +00:00
chore(connlib): unit tests for additional fields in messages (#4337)
Fixes #4308
This commit is contained in:
@@ -297,6 +297,199 @@ mod test {
|
||||
assert_eq!(m, ingress_message);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn messages_ignore_additional_fields() {
|
||||
let m = PhoenixMessage::new_message(
|
||||
"client",
|
||||
IngressMessages::Init(InitClient {
|
||||
interface: Interface {
|
||||
ipv4: "100.72.112.111".parse().unwrap(),
|
||||
ipv6: "fd00:2021:1111::13:efb9".parse().unwrap(),
|
||||
upstream_dns: vec![],
|
||||
},
|
||||
resources: vec![
|
||||
ResourceDescription::Cidr(ResourceDescriptionCidr {
|
||||
id: "73037362-715d-4a83-a749-f18eadd970e6".parse().unwrap(),
|
||||
address: "172.172.0.0/16".parse().unwrap(),
|
||||
name: "172.172.0.0/16".to_string(),
|
||||
}),
|
||||
ResourceDescription::Dns(ResourceDescriptionDns {
|
||||
id: "03000143-e25e-45c7-aafb-144990e57dcd".parse().unwrap(),
|
||||
address: "gitlab.mycorp.com".to_string(),
|
||||
name: "gitlab.mycorp.com".to_string(),
|
||||
}),
|
||||
],
|
||||
}),
|
||||
None,
|
||||
);
|
||||
let message = r#"{
|
||||
"event": "init",
|
||||
"payload": {
|
||||
"interface": {
|
||||
"ipv4": "100.72.112.111",
|
||||
"ipv6": "fd00:2021:1111::13:efb9",
|
||||
"upstream_dns": [],
|
||||
"extra_config": "foo"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"address": "172.172.0.0/16",
|
||||
"id": "73037362-715d-4a83-a749-f18eadd970e6",
|
||||
"name": "172.172.0.0/16",
|
||||
"type": "cidr",
|
||||
"not": "relevant"
|
||||
},
|
||||
{
|
||||
"address": "gitlab.mycorp.com",
|
||||
"id": "03000143-e25e-45c7-aafb-144990e57dcd",
|
||||
"ipv4": "100.126.44.50",
|
||||
"ipv6": "fd00:2021:1111::e:7758",
|
||||
"name": "gitlab.mycorp.com",
|
||||
"type": "dns",
|
||||
"not": "relevant"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ref": null,
|
||||
"topic": "client"
|
||||
}"#;
|
||||
let ingress_message: PhoenixMessage<IngressMessages, ReplyMessages> =
|
||||
serde_json::from_str(message).unwrap();
|
||||
assert_eq!(m, ingress_message);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn messages_ignore_additional_bool_fields() {
|
||||
let m = PhoenixMessage::new_message(
|
||||
"client",
|
||||
IngressMessages::Init(InitClient {
|
||||
interface: Interface {
|
||||
ipv4: "100.72.112.111".parse().unwrap(),
|
||||
ipv6: "fd00:2021:1111::13:efb9".parse().unwrap(),
|
||||
upstream_dns: vec![],
|
||||
},
|
||||
resources: vec![],
|
||||
}),
|
||||
None,
|
||||
);
|
||||
let message = r#"{
|
||||
"event": "init",
|
||||
"payload": {
|
||||
"interface": {
|
||||
"ipv4": "100.72.112.111",
|
||||
"ipv6": "fd00:2021:1111::13:efb9",
|
||||
"upstream_dns": [],
|
||||
"additional": true
|
||||
},
|
||||
"resources": []
|
||||
},
|
||||
"ref": null,
|
||||
"topic": "client"
|
||||
}"#;
|
||||
let ingress_message: PhoenixMessage<IngressMessages, ReplyMessages> =
|
||||
serde_json::from_str(message).unwrap();
|
||||
assert_eq!(m, ingress_message);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn messages_ignore_additional_number_fields() {
|
||||
let m = PhoenixMessage::new_message(
|
||||
"client",
|
||||
IngressMessages::Init(InitClient {
|
||||
interface: Interface {
|
||||
ipv4: "100.72.112.111".parse().unwrap(),
|
||||
ipv6: "fd00:2021:1111::13:efb9".parse().unwrap(),
|
||||
upstream_dns: vec![],
|
||||
},
|
||||
resources: vec![],
|
||||
}),
|
||||
None,
|
||||
);
|
||||
let message = r#"{
|
||||
"event": "init",
|
||||
"payload": {
|
||||
"interface": {
|
||||
"ipv4": "100.72.112.111",
|
||||
"ipv6": "fd00:2021:1111::13:efb9",
|
||||
"upstream_dns": [],
|
||||
"additional": 0.3
|
||||
},
|
||||
"resources": []
|
||||
},
|
||||
"ref": null,
|
||||
"topic": "client"
|
||||
}"#;
|
||||
let ingress_message: PhoenixMessage<IngressMessages, ReplyMessages> =
|
||||
serde_json::from_str(message).unwrap();
|
||||
assert_eq!(m, ingress_message);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn messages_ignore_additional_object_fields() {
|
||||
let m = PhoenixMessage::new_message(
|
||||
"client",
|
||||
IngressMessages::Init(InitClient {
|
||||
interface: Interface {
|
||||
ipv4: "100.72.112.111".parse().unwrap(),
|
||||
ipv6: "fd00:2021:1111::13:efb9".parse().unwrap(),
|
||||
upstream_dns: vec![],
|
||||
},
|
||||
resources: vec![],
|
||||
}),
|
||||
None,
|
||||
);
|
||||
let message = r#"{
|
||||
"event": "init",
|
||||
"payload": {
|
||||
"interface": {
|
||||
"ipv4": "100.72.112.111",
|
||||
"ipv6": "fd00:2021:1111::13:efb9",
|
||||
"upstream_dns": [],
|
||||
"additional": { "ignored": "field" }
|
||||
},
|
||||
"resources": []
|
||||
},
|
||||
"ref": null,
|
||||
"topic": "client"
|
||||
}"#;
|
||||
let ingress_message: PhoenixMessage<IngressMessages, ReplyMessages> =
|
||||
serde_json::from_str(message).unwrap();
|
||||
assert_eq!(m, ingress_message);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn messages_ignore_additional_array_fields() {
|
||||
let m = PhoenixMessage::new_message(
|
||||
"client",
|
||||
IngressMessages::Init(InitClient {
|
||||
interface: Interface {
|
||||
ipv4: "100.72.112.111".parse().unwrap(),
|
||||
ipv6: "fd00:2021:1111::13:efb9".parse().unwrap(),
|
||||
upstream_dns: vec![],
|
||||
},
|
||||
resources: vec![],
|
||||
}),
|
||||
None,
|
||||
);
|
||||
let message = r#"{
|
||||
"event": "init",
|
||||
"payload": {
|
||||
"interface": {
|
||||
"ipv4": "100.72.112.111",
|
||||
"ipv6": "fd00:2021:1111::13:efb9",
|
||||
"upstream_dns": [],
|
||||
"additional": [true, false]
|
||||
},
|
||||
"resources": []
|
||||
},
|
||||
"ref": null,
|
||||
"topic": "client"
|
||||
}"#;
|
||||
let ingress_message: PhoenixMessage<IngressMessages, ReplyMessages> =
|
||||
serde_json::from_str(message).unwrap();
|
||||
assert_eq!(m, ingress_message);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn list_relays_message() {
|
||||
let m = PhoenixMessage::<EgressMessages, ()>::new_message(
|
||||
|
||||
@@ -202,6 +202,7 @@ mod test {
|
||||
// TODO: We are just testing we can deserialize for now.
|
||||
let _: PhoenixMessage<IngressMessages, ()> = serde_json::from_str(message).unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn init_phoenix_message() {
|
||||
let m = InitMessage::Init(InitGateway {
|
||||
@@ -220,4 +221,118 @@ mod test {
|
||||
let ingress_message = serde_json::from_str::<InitMessage<InitGateway>>(message).unwrap();
|
||||
assert_eq!(m, ingress_message);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn additional_fields_are_ignore() {
|
||||
let m = InitMessage::Init(InitGateway {
|
||||
interface: Interface {
|
||||
ipv4: "100.115.164.78".parse().unwrap(),
|
||||
ipv6: "fd00:2021:1111::2c:f6ab".parse().unwrap(),
|
||||
upstream_dns: vec![],
|
||||
},
|
||||
config: Config {
|
||||
ipv4_masquerade_enabled: true,
|
||||
ipv6_masquerade_enabled: true,
|
||||
},
|
||||
});
|
||||
|
||||
let message = r#"{"event":"init","ref":null,"topic":"gateway","irrelevant":"field","payload":{"more":"info","interface":{"ipv6":"fd00:2021:1111::2c:f6ab","ipv4":"100.115.164.78"},"config":{"ipv4_masquerade_enabled":true,"ipv6_masquerade_enabled":true,"ignored":"field"}}}"#;
|
||||
let ingress_message = serde_json::from_str::<InitMessage<InitGateway>>(message).unwrap();
|
||||
assert_eq!(m, ingress_message);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn additional_null_fields_are_ignored() {
|
||||
let m = InitMessage::Init(InitGateway {
|
||||
interface: Interface {
|
||||
ipv4: "100.115.164.78".parse().unwrap(),
|
||||
ipv6: "fd00:2021:1111::2c:f6ab".parse().unwrap(),
|
||||
upstream_dns: vec![],
|
||||
},
|
||||
config: Config {
|
||||
ipv4_masquerade_enabled: true,
|
||||
ipv6_masquerade_enabled: true,
|
||||
},
|
||||
});
|
||||
|
||||
let message = r#"{"event":"init","ref":null,"topic":"gateway","payload":{"additional":null,"interface":{"ipv6":"fd00:2021:1111::2c:f6ab","ipv4":"100.115.164.78"},"config":{"ipv4_masquerade_enabled":true,"ipv6_masquerade_enabled":true}}}"#;
|
||||
let ingress_message = serde_json::from_str::<InitMessage<InitGateway>>(message).unwrap();
|
||||
assert_eq!(m, ingress_message);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn additional_number_fields_are_ignored() {
|
||||
let m = InitMessage::Init(InitGateway {
|
||||
interface: Interface {
|
||||
ipv4: "100.115.164.78".parse().unwrap(),
|
||||
ipv6: "fd00:2021:1111::2c:f6ab".parse().unwrap(),
|
||||
upstream_dns: vec![],
|
||||
},
|
||||
config: Config {
|
||||
ipv4_masquerade_enabled: true,
|
||||
ipv6_masquerade_enabled: true,
|
||||
},
|
||||
});
|
||||
|
||||
let message = r#"{"event":"init","ref":null,"topic":"gateway","payload":{"additional":0.3,"interface":{"ipv6":"fd00:2021:1111::2c:f6ab","ipv4":"100.115.164.78"},"config":{"ipv4_masquerade_enabled":true,"ipv6_masquerade_enabled":true}}}"#;
|
||||
let ingress_message = serde_json::from_str::<InitMessage<InitGateway>>(message).unwrap();
|
||||
assert_eq!(m, ingress_message);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn additional_boolean_fields_are_ignored() {
|
||||
let m = InitMessage::Init(InitGateway {
|
||||
interface: Interface {
|
||||
ipv4: "100.115.164.78".parse().unwrap(),
|
||||
ipv6: "fd00:2021:1111::2c:f6ab".parse().unwrap(),
|
||||
upstream_dns: vec![],
|
||||
},
|
||||
config: Config {
|
||||
ipv4_masquerade_enabled: true,
|
||||
ipv6_masquerade_enabled: true,
|
||||
},
|
||||
});
|
||||
|
||||
let message = r#"{"event":"init","ref":null,"topic":"gateway","payload":{"additional":true,"interface":{"ipv6":"fd00:2021:1111::2c:f6ab","ipv4":"100.115.164.78"},"config":{"ipv4_masquerade_enabled":true,"ipv6_masquerade_enabled":true}}}"#;
|
||||
let ingress_message = serde_json::from_str::<InitMessage<InitGateway>>(message).unwrap();
|
||||
assert_eq!(m, ingress_message);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn additional_object_fields_are_ignored() {
|
||||
let m = InitMessage::Init(InitGateway {
|
||||
interface: Interface {
|
||||
ipv4: "100.115.164.78".parse().unwrap(),
|
||||
ipv6: "fd00:2021:1111::2c:f6ab".parse().unwrap(),
|
||||
upstream_dns: vec![],
|
||||
},
|
||||
config: Config {
|
||||
ipv4_masquerade_enabled: true,
|
||||
ipv6_masquerade_enabled: true,
|
||||
},
|
||||
});
|
||||
|
||||
let message = r#"{"event":"init","ref":null,"topic":"gateway","payload":{"additional":{"ignored":"field"},"interface":{"ipv6":"fd00:2021:1111::2c:f6ab","ipv4":"100.115.164.78"},"config":{"ipv4_masquerade_enabled":true,"ipv6_masquerade_enabled":true}}}"#;
|
||||
let ingress_message = serde_json::from_str::<InitMessage<InitGateway>>(message).unwrap();
|
||||
assert_eq!(m, ingress_message);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn additional_array_fields_are_ignored() {
|
||||
let m = InitMessage::Init(InitGateway {
|
||||
interface: Interface {
|
||||
ipv4: "100.115.164.78".parse().unwrap(),
|
||||
ipv6: "fd00:2021:1111::2c:f6ab".parse().unwrap(),
|
||||
upstream_dns: vec![],
|
||||
},
|
||||
config: Config {
|
||||
ipv4_masquerade_enabled: true,
|
||||
ipv6_masquerade_enabled: true,
|
||||
},
|
||||
});
|
||||
|
||||
let message = r#"{"event":"init","ref":null,"topic":"gateway","payload":{"additional":[true,false],"interface":{"ipv6":"fd00:2021:1111::2c:f6ab","ipv4":"100.115.164.78"},"config":{"ipv4_masquerade_enabled":true,"ipv6_masquerade_enabled":true}}}"#;
|
||||
let ingress_message = serde_json::from_str::<InitMessage<InitGateway>>(message).unwrap();
|
||||
assert_eq!(m, ingress_message);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user