The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use t::oEmbed;
plan tests => 1 * blocks;

use Web::oEmbed;

my $consumer = Web::oEmbed->new;

my $providers = read_json("t/providers.json");
for my $provider (@$providers) {
    $consumer->register_provider($provider);
}

run {
    my $block = shift;

    my $api_url = $consumer->request_url($block->input);
    is( canon($api_url), canon($block->output) );
};

sub canon {
    my $uri = URI->new(shift);
    my %params = $uri->query_form;
    $uri->query_form(map { $_ => $params{$_} } sort keys %params);
    $uri;
}

__END__
===
--- input: http://www.flickr.com/photos/bees/2362225867/
--- output: http://www.flickr.com/services/oembed/?url=http%3A%2F%2Fwww.flickr.com%2Fphotos%2Fbees%2F2362225867%2F&format=json

===
--- input: http://www.hulu.com/watch/20807/late-night-with-conan-obrien-wed-may-21-2008
--- output: http://www.hulu.com/api/oembed.json?url=http%3A//www.hulu.com/watch/20807/late-night-with-conan-obrien-wed-may-21-2008