amazon-cloudfront-client-routing-lib 1.0.0

a library to encode and decode dns labels
Documentation
#[cfg(test)]
mod test_encode_request_data {
    use amazon_cloudfront_client_routing_lib::decode_request_data;

    #[test]
    fn validate_decode_with_ipv4() {
        let decoded_label = match decode_request_data("abfku6xaaaaaaaamotptyubibrji6") {
            Ok(label) => label,
            Err(e) => panic!("{}", e),
        };

        assert_eq!(1, decoded_label.client_sdk_version);
        assert_eq!(16843032286346126622, decoded_label.cgid);
        assert_eq!(24, decoded_label.subnet_mask);
        assert_eq!(false, decoded_label.is_ipv6);
        assert_eq!([85, 83, 215, 0, 0, 0, 0, 0], decoded_label.client_subnet);
    }

    #[test]
    fn validate_decode_with_ipv6() {
        let decoded_label = match decode_request_data("abydhs4fyq6iaaaykudpmaxncecqs") {
            Ok(label) => label,
            Err(e) => panic!("{}", e),
        };

        assert_eq!(1, decoded_label.client_sdk_version);
        assert_eq!(12253709671023643154, decoded_label.cgid);
        assert_eq!(48, decoded_label.subnet_mask);
        assert_eq!(true, decoded_label.is_ipv6);
        assert_eq!(
            [0x81, 0x9e, 0x5c, 0x2e, 0x21, 0xe4, 0, 0],
            decoded_label.client_subnet
        );
    }

    #[test]
    fn validate_decode_with_fqdn() {
        let decoded_label = match decode_request_data("abydhs4fyq6iaaaykudpmaxncecqs.example.com") {
            Ok(label) => label,
            Err(e) => panic!("{}", e),
        };

        assert_eq!(1, decoded_label.client_sdk_version);
        assert_eq!(12253709671023643154, decoded_label.cgid);
        assert_eq!(48, decoded_label.subnet_mask);
        assert_eq!(true, decoded_label.is_ipv6);
        assert_eq!(
            [0x81, 0x9e, 0x5c, 0x2e, 0x21, 0xe4, 0, 0],
            decoded_label.client_subnet
        );

        let decoded_label = match decode_request_data("abfku6xaaaaaaaamotptyubibrji6.vod1.example.com") {
            Ok(label) => label,
            Err(e) => panic!("{}", e),
        };

        assert_eq!(1, decoded_label.client_sdk_version);
        assert_eq!(16843032286346126622, decoded_label.cgid);
        assert_eq!(24, decoded_label.subnet_mask);
        assert_eq!(false, decoded_label.is_ipv6);
        assert_eq!([85, 83, 215, 0, 0, 0, 0, 0], decoded_label.client_subnet);
    }

    #[test]
    fn validate_decode_with_no_client_subnet() {
        let decoded_label = match decode_request_data("abaaaaaaaaaaaaaaoqysz2z3j45da") {
            Ok(label) => label,
            Err(e) => panic!("{}", e),
        };

        assert_eq!(1, decoded_label.client_sdk_version);
        assert_eq!(16745045142164894816, decoded_label.cgid);
        assert_eq!(0, decoded_label.subnet_mask);
        assert_eq!(false, decoded_label.is_ipv6);
        assert_eq!([0, 0, 0, 0, 0, 0, 0, 0], decoded_label.client_subnet);
    }

    #[test]
    fn validate_decode_with_no_cgid() {
        let decoded_label = match decode_request_data("abc4aydaaaaaaaamaaaaaaaaaaaaa") {
            Ok(label) => label,
            Err(e) => panic!("{}", e),
        };

        assert_eq!(1, decoded_label.client_sdk_version);
        assert_eq!(0, decoded_label.cgid);
        assert_eq!(24, decoded_label.subnet_mask);
        assert_eq!(false, decoded_label.is_ipv6);
        assert_eq!([46, 3, 3, 0, 0, 0, 0, 0], decoded_label.client_subnet);
    }

    #[test]
    fn validate_decode_with_no_client_subnet_no_cgid() {
        let decoded_label = match decode_request_data("abaaaaaaaaaaaaaaaaaaaaaaaaaaa") {
            Ok(label) => label,
            Err(e) => panic!("{}", e),
        };

        assert_eq!(1, decoded_label.client_sdk_version);
        assert_eq!(0, decoded_label.cgid);
        assert_eq!(0, decoded_label.subnet_mask);
        assert_eq!(false, decoded_label.is_ipv6);
        assert_eq!([0, 0, 0, 0, 0, 0, 0, 0], decoded_label.client_subnet);
    }

    #[test]
    fn validate_decode_with_too_small_client_routing_label_returns_error() {
        match decode_request_data("abydhs4fyq6iaaaykudpmaxnce") {
            Ok(_dns_label) => {
                panic!("Didn't return an error when it should have")
            }
            Err(_e) => (),
        };
    }

    #[test]
    fn validate_decode_with_too_large_client_routing_label_returns_error() {
        match decode_request_data("abydhs4fyq6iaaaykudpmaxncecqsaaaa") {
            Ok(_dns_label) => {
                panic!("Didn't return an error when it should have")
            }
            Err(_e) => (),
        };
    }

    #[test]
    fn validate_decode_with_empty_domain_returns_error() {
        match decode_request_data("") {
            Ok(_dns_label) => {
                panic!("Didn't return an error when it should have")
            }
            Err(_e) => (),
        };
    }

    #[test]
    fn validate_decode_with_client_routing_label_not_first_dns_label_returns_error() {
        match decode_request_data("vod1.abfku6xaaaaaaaamotptyubibrji6.example.com") {
            Ok(_dns_label) => {
                panic!("Didn't return an error when it should have")
            }
            Err(_e) => (),
        };
    }
}