App-dnsq

 view release on metacpan or  search on metacpan

t/validator.t  view on Meta::CPAN

    ok($valid, 'Valid IPv4: 8.8.8.8');
    
    ($valid, $error) = validate_ip('192.168.1.1');
    ok($valid, 'Valid IPv4: 192.168.1.1');
    
    # Valid IPv6
    ($valid, $error) = validate_ip('2001:4860:4860::8888');
    ok($valid, 'Valid IPv6: 2001:4860:4860::8888');
    
    # Invalid IPs
    ($valid, $error) = validate_ip('256.1.1.1');
    ok(!$valid, 'Invalid IPv4 octet rejected');
    
    ($valid, $error) = validate_ip('not.an.ip');
    ok(!$valid, 'Non-IP string rejected');
};

# Test query type validation
subtest 'Query type validation' => sub {
    my ($valid, $error);
    
    # Valid types
    ($valid, $error) = validate_query_type('A');
    ok($valid, 'Valid type: A');
    
    ($valid, $error) = validate_query_type('AAAA');
    ok($valid, 'Valid type: AAAA');
    
    ($valid, $error) = validate_query_type('mx');
    ok($valid, 'Valid type: mx (case insensitive)');
    
    # Invalid types
    ($valid, $error) = validate_query_type('INVALID');
    ok(!$valid, 'Invalid type rejected');
    
    ($valid, $error) = validate_query_type('');
    ok(!$valid, 'Empty type rejected');
};

# Test port validation
subtest 'Port validation' => sub {
    my ($valid, $error);
    
    ($valid, $error) = validate_port(53);
    ok($valid, 'Valid port: 53');
    
    ($valid, $error) = validate_port(8053);
    ok($valid, 'Valid port: 8053');
    
    ($valid, $error) = validate_port(0);
    ok(!$valid, 'Port 0 rejected');
    
    ($valid, $error) = validate_port(65536);
    ok(!$valid, 'Port > 65535 rejected');
    
    ($valid, $error) = validate_port('abc');
    ok(!$valid, 'Non-numeric port rejected');
};

# Test timeout validation
subtest 'Timeout validation' => sub {
    my ($valid, $error);
    
    ($valid, $error) = validate_timeout(5);
    ok($valid, 'Valid timeout: 5');
    
    ($valid, $error) = validate_timeout(1);
    ok($valid, 'Valid timeout: 1');
    
    ($valid, $error) = validate_timeout(0);
    ok(!$valid, 'Timeout 0 rejected');
    
    ($valid, $error) = validate_timeout(-1);
    ok(!$valid, 'Negative timeout rejected');
};

# Test constants
subtest 'Constants' => sub {
    ok($DNSQuery::Constants::VALID_QUERY_TYPES{A}, 'A type exists in constants');
    ok($DNSQuery::Constants::VALID_QUERY_TYPES{AAAA}, 'AAAA type exists in constants');
    ok($DNSQuery::Constants::VALID_QUERY_TYPES{MX}, 'MX type exists in constants');
    
    ok($DNSQuery::Constants::VALID_QUERY_CLASSES{IN}, 'IN class exists in constants');
    
    is($DNSQuery::Constants::MIN_PORT, 1, 'MIN_PORT is 1');
    is($DNSQuery::Constants::MAX_PORT, 65535, 'MAX_PORT is 65535');
    is($DNSQuery::Constants::MAX_DOMAIN_LENGTH, 253, 'MAX_DOMAIN_LENGTH is 253');
};

done_testing();



( run in 2.131 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )