diff --git a/t/meta-robots.t b/t/meta-robots.t
new file mode 100644
index 0000000..75273b9
--- /dev/null
+++ b/t/meta-robots.t
@@ -0,0 +1,88 @@
+package Kalamar::Plugin::Test;
+use Mojo::Base 'Mojolicious::Plugin';
+
+
+sub register {
+  my ($plugin, $app, $param) = @_;
+
+  # Add entry to settings navigation
+  $app->navi->add(settings => (
+    'OAuth Token Management', 'oauth'
+  ));
+
+  $app->routes->get('/settings/oauth')->to(
+    cb => sub {
+      my $c = shift;
+      $c->res->headers->header('X-Robots' => 'noindex');
+      $c->content_with(settings => '<p id="abc">My Settings</p>');
+      return $c->render('settings');
+    }
+  );
+};
+
+package main;
+use Mojo::Base -strict;
+use Test::More;
+use Test::Mojo;
+use Mojo::File qw/path/;
+
+
+#####################
+# Start Fake server #
+#####################
+my $mount_point = '/realapi/';
+$ENV{KALAMAR_API} = $mount_point;
+
+my $t = Test::Mojo->new('Kalamar' => {
+  Kalamar => {
+    plugins => ['Test']
+  }
+});
+
+# Mount fake backend
+# Get the fixture path
+my $fixtures_path = path(Mojo::File->new(__FILE__)->dirname, 'server');
+my $fake_backend = $t->app->plugin(
+  Mount => {
+    $mount_point =>
+      $fixtures_path->child('mock.pl')
+  }
+);
+# Configure fake backend
+$fake_backend->pattern->defaults->{app}->log($t->app->log);
+
+# Test robots meta tag
+
+$t->get_ok('/')
+  ->attr_is('meta[name=robots]', 'content', 'index,follow')
+  ->header_isnt('X-Robots', 'noindex')
+  ;
+
+$t->get_ok('/doc/ql/poliqarp-plus')
+  ->attr_is('meta[name=robots]', 'content', 'index,follow')
+  ->header_isnt('X-Robots', 'noindex')
+  ;
+
+$t->get_ok('/corpus')
+  ->status_is(200)
+  ->header_is('X-Robots', 'noindex')
+  ;
+
+$t->get_ok('/corpus/WPD15/232/39681/p2133-2134?spans=false&foundry=*&format=json')
+  ->status_is(200)
+  ->header_is('X-Robots', 'noindex')
+  ;
+
+$t->get_ok('/settings')
+  ->attr_is('meta[name=robots]', 'content', 'noindex')
+  ->header_is('X-Robots', 'noindex')
+  ;
+
+$t->get_ok('/?q=baum')
+  ->status_is(200)
+  ->text_is('#total-results', 51)
+  ->attr_is('meta[name=robots]', 'content', 'noindex')
+  ->header_is('X-Robots', 'noindex')
+  ;
+
+done_testing;
