NAME

Test::URI - Check Uniform Resource Identifiers

SYNOPSIS

use Test::More tests => 5;
use Test::URI;

my $uri = 'http://www.example.com:8080/index.html#name'

uri_scheme_ok( $uri, 'http' );
uri_host_ok( $uri, 'www.example.com' );
uri_port_ok( $uri, '8080' );
uri_path_ok( $uri, '/index.html' );
uri_fragment_ok( $uri, 'name' );

DESCRIPTION

Check various parts of Uniform Resource Locators

FUNCTIONS

uri_scheme_ok( STRING|URI, SCHEME )

Ok is the STRING is a valid URI, in any format that URI accepts, and the URI uses the same SCHEME (i.e. protocol: http, ftp, ...). SCHEME is not case sensitive.

STRING can be an URI object.

uri_host_ok( STRING|URI, HOST )

Ok is the STRING is a valid URI, in any format that URI accepts, and the URI uses the same HOST. HOST is not case sensitive.

Not Ok is the URI scheme does not have a host portion.

STRING can be an URI object.

uri_port_ok( STRING|URI, PORT )

Ok is the STRING is a valid URI, in any format that URI accepts, and the URI uses the same PORT.

Not Ok is the URI scheme does not have a port portion.

STRING can be an URI object.

uri_canonical_ok

UNIMPLEMENTED. I'm not sure why I thought this should be a test. If anyone else knows, I'll implement it.

uri_path_ok( STRING|URI, PATH )

Ok is the STRING is a valid URI, in any format that URI accepts, and the URI has the path PATH. Remember that paths start with a /, even if it doesn't look like there is anything after the host parts.

STRING can be an URI object.

uri_fragment_ok( STRING|URI, FRAGMENT )

Ok is the STRING is a valid URI, in any format that URI accepts, and the URI has the fragment FRAGMENT.

STRING can be an URI object.

TO DO

  • add methods: uri_canonical_ok, uri_query_string_ok

  • add convenience methods such as uri_is_web, uri_is_ftp

SOURCE AVAILABILITY

This source is in GitHub

https://github.com/briandfoy/test-uri

AUTHOR

brian d foy, <briandfoy@pobox.com>

COPYRIGHT AND LICENSE

Copyright © 2004-2024, brian d foy <briandfoy@pobox.com>. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0.