App-Phoebe
view release on metacpan or search on metacpan
t/Oddmuse.t view on Meta::CPAN
$page = query_gemini("$base/M%C3%ABtal/page/Test");
like($page, qr(Chloë), "Page (namespace)");
like(query_gemini("$base/do/rss"), qr(Test.*Alex)s, "RSS");
like(query_gemini("$base/Travels/do/rss"), qr(Test.*Berta)s, "RSS (namespace)");
like(query_gemini("$base/do/atom"), qr(Test.*Alex)s, "Atom");
like(query_gemini("$base/Travels/do/atom"), qr(Test.*Berta)s, "Atom (namespace)");
my $titan = "titan://$host:$port";
my $haiku = <<EOT;
The soundtrack of my
mysterious, dangerous
life plays in this bar
EOT
$page = query_gemini("$titan/raw/Haiku;size=66;mime=text/plain;token=hello", $haiku);
like($page, qr/^30 $base\/page\/Haiku\r$/, "Titan Haiku");
like(query_gemini("$base/page/Haiku"), qr(soundtrack), "Gemini proxy for Oddmuse");
$haiku = <<EOT;
Rain drumming on my
window blinds, relentlessly
and into the snow
EOT
$page = query_gemini("$titan/Travels/raw/Haiku;size=66;mime=text/plain;token=hello", $haiku);
like($page, qr/^30 $base\/Travels\/page\/Haiku\r$/, "Titan Haiku");
like(query_gemini("$base/Travels/page/Haiku"), qr(drumming), "Gemini proxy for Oddmuse");
# Formatting the main page
$res = $ua->get("http://localhost:$oddmuse_port/wiki?title=Welcome&text=Hello")->result;
is($res->code, 302, "Oddmuse save Welcome page");
$res = $ua->get("http://localhost:$oddmuse_port/wiki?title=2021-06-28&text=Hoi")->result;
is($res->code, 302, "Oddmuse save blog page");
like(query_gemini("$base"), qr(^Hello\n\nBlog:\n)m, "Main page including Welcome");
like(query_gemini("$base/do/blog"), qr(2021-06-28)m, "Blog including 2021-06-28");
# Leaving a comment
like(query_gemini("$base/page/2021-06-28"),
qr(=> $base/do/comment/2021-06-28 Leave a short comment)m,
"2021-06-28 has link to comments");
like(query_gemini("$base/do/comment/2021-06-28", undef, 0), # no cert!
qr(^60)m, "Client certificate required in order to comment");
like(query_gemini("$base/do/comment/2021-06-28"),
qr(^10)m, "Token required");
like(query_gemini("$base/do/comment/2021-06-28?lalala"),
qr(^59)m, "Wrong token");
like(query_gemini("$base/do/comment/2021-06-28?hello"),
qr(^10)m, "Input required");
$haiku = <<EOT;
The+city cries but
Our metal worms dig deeper
Every day, alas.
EOT
like(query_gemini("$base/do/comment/2021-06-28?" . uri_escape($haiku)),
qr(^30 $base/page/Comments_on_2021-06-28)m, "Redirect");
like(query_gemini("$base/page/Comments_on_2021-06-28"),
qr(The city cries), "Comment saved, plusses handled");
# Unit testing of text formatting rules
ok(require App::Phoebe, "load phoebe");
ok(require App::Phoebe::Oddmuse, "load oddmuse.pl");
$page = App::Phoebe::Oddmuse::oddmuse_gemini_text(undef, $host, "", "Testing [Foo:Bar baz]");
like($page, qr(^Testing baz$)m, "Namespace link with text, text");
like($page, qr(^=> gemini://localhost:1965/Foo/page/Bar baz$)m, "Namespace link with text, link");
$page = App::Phoebe::Oddmuse::oddmuse_gemini_text(undef, $host, "", "e.g. ★ is â
");
like($page, qr(^e.g. â
is â
$)m, "HTML entities that look like hash tags");
$page = App::Phoebe::Oddmuse::oddmuse_gemini_text(undef, $host, "", "it has [Tau_Subsector:?action=index 39 pages]");
like($page, qr(^it has 39 pages$)m, "index link inline text");
like($page, qr(^=> gemini://localhost:1965/Tau_Subsector/do/index 39 pages$)m, "index link");
$page = App::Phoebe::Oddmuse::oddmuse_gemini_text(undef, $host, "", qq{
This is a table.
|hello|
|kitten|
And this is the end.});
like($page, qr(^This is a table\.\n\n```\n\|hello\|\n\|kitten\|\n```\n\nAnd this is the end\.$)m, "table");
$page = App::Phoebe::Oddmuse::oddmuse_gemini_text(undef, $host, "", qq{
This is a list.
* first
- second
And this is the end.});
like($page, qr(^This is a list\.\n\n\* first\n\* second\n\nAnd this is the end\.$)m, "list");
$page = App::Phoebe::Oddmuse::oddmuse_gemini_text(undef, $host, "", qq{
[[image:https://alexschroeder.ch/podcast/logo-small.png]]
x});
like($page, qr(^=> https://alexschroeder.ch/podcast/logo-small.png https://alexschroeder.ch/podcast/logo-small.png \(image\)\n)m, "image 1a");
like($page, qr(^x$)m, "image x");
$page = App::Phoebe::Oddmuse::oddmuse_gemini_text(undef, $host, "", qq{
[[image:https://alexschroeder.ch/podcast/logo-small.png|Halberds and Helmets]]
x});
like($page, qr(^=> https://alexschroeder.ch/podcast/logo-small.png Halberds and Helmets \(image\)\n)m, "image 2a");
like($page, qr(^x$)m, "image x");
$page = App::Phoebe::Oddmuse::oddmuse_gemini_text(undef, $host, "", qq{
[[image:https://alexschroeder.ch/podcast/logo-small.png|Halberds and Helmets|Halberds and Helmets Podcast]]
x});
like($page, qr(^=> https://alexschroeder.ch/podcast/logo-small.png Halberds and Helmets \(image\)\n)m, "image 3a1");
like($page, qr(^=> gemini://localhost:1965/page/Halberds_and_Helmets_Podcast Halberds and Helmets \(follow-up\)\n)m, "image 3a2");
like($page, qr(^x$)m, "image x");
$page = App::Phoebe::Oddmuse::oddmuse_gemini_text(undef, $host, "", qq{
[[image/right:https://alexschroeder.ch/podcast/logo-small.png]]
x});
( run in 0.965 second using v1.01-cache-2.11-cpan-5a3173703d6 )