diff --git a/t/kalamar_user_client.t b/t/kalamar_user_client.t
new file mode 100644
index 0000000..4c79c53
--- /dev/null
+++ b/t/kalamar_user_client.t
@@ -0,0 +1,92 @@
+use Mojo::Base -strict;
+use Test::Mojo;
+use Test::More;
+use Mojolicious::Lite;
+use lib 'lib', '../lib';
+
+my $t = Test::Mojo->new;
+my $app = $t->app;
+
+# Add additional plugin path
+push(@{app->plugins->namespaces}, 'Kalamar::Plugin');
+
+plugin 'CHI' => {
+  user => {
+    driver => 'Memory',
+    global => 1
+  }
+};
+
+plugin 'KalamarUser' => {
+  api => 'http://10.0.10.51:7070/api/v0.1/'
+};
+
+post '/acct/login' => sub {
+  my $c = shift;
+  my $user = $c->param('user');
+  my $pwd  = $c->param('pwd');
+  return $c->redirect_to('index') if $c->user->login($user, $pwd);
+  return $c->redirect_to;
+} => 'login';
+
+
+get '/' => sub {
+  my $c = shift;
+  my $details = $c->user->get('details');
+  return $c->redirect_to('login') unless $details;
+  $c->render(json => $details);
+} => 'index';
+
+
+get '/acct/settings' => sub {
+  my $c = shift;
+  my $settings = $c->user->get('settings');
+  return $c->redirect_to('login') unless $settings;
+  $c->render(json => $settings);
+};
+
+
+$t->get_ok('/')
+  ->status_is(302)
+  ->header_is('location', '/acct/login');
+
+# Tests
+$t->post_ok('/acct/login' => {} => form => {
+  user => 'kustvakt',
+  pwd => 'kustvakt2015'
+})
+  ->status_is(302)
+  ->header_is('location', '/');
+
+$t->get_ok('/')
+  ->status_is(200)
+  ->json_is('/country', 'Germany')
+  ->json_is('/firstName', 'Kustvakt')
+  ->json_is('/lastName', 'KorAP')
+  ->json_is('/email', 'kustvakt@ids-mannheim.de')
+  ;
+
+$t->get_ok('/acct/settings')
+  ->status_is(200)
+  ->json_is('/queryLanguage', 'COSMAS2')
+  ->json_is('/constFoundry', 'mate')
+  ->json_is('/relFoundry', 'mate')
+  ->json_is('/lemmaFoundry', 'tt')
+  ->json_is('/POSFoundry', 'tt')
+  ;
+
+done_testing;
+
+__END__
+
+# print Dumper $user->user_query;
+# print Dumper $user->get_collection_stat('242eea9442fcba4e4f51e4ff292eebe2aca4e7f3');
+# print Dumper $user->user_settings;
+print Dumper $user->collections;
+
+#print "\n";
+
+# my $x = 'ZGU0ZTllNTFkYzc3M2VhZmViYzdkYWE2ODI5NDc3NTk4NGQ1YThhOTMwOTNhOWYxNWMwN2M3Y2YyZmE3N2RlNQ==';
+# print b($x)->b64_decode,"\n";
+
+my $user = Kalamar::User->new->authorize_jwt('kustvakt', 'kustvakt2015');
