Lines 30-69
use Mojolicious::Lite;
Link Here
|
30 |
plugin 'Koha::REST::Plugin::Auth::IdP'; |
30 |
plugin 'Koha::REST::Plugin::Auth::IdP'; |
31 |
|
31 |
|
32 |
post '/register_user' => sub { |
32 |
post '/register_user' => sub { |
33 |
my $c = shift; |
33 |
my $c = shift; |
34 |
my $params = $c->req->json; |
34 |
my $params = $c->req->json; |
35 |
try { |
35 |
try { |
36 |
my $domain = Koha::Auth::Identity::Provider::Domains->find($params->{domain_id}); |
36 |
my $domain = Koha::Auth::Identity::Provider::Domains->find( $params->{domain_id} ); |
37 |
my $patron = $c->auth->register({ |
37 |
my $patron = $c->auth->register( |
38 |
data => $params->{data}, |
38 |
{ data => $params->{data}, |
39 |
domain => $domain, |
39 |
domain => $domain, |
40 |
interface => $params->{interface} |
40 |
interface => $params->{interface} |
41 |
}); |
41 |
} |
42 |
$c->render(status => 200, json => $patron->to_api); |
42 |
); |
43 |
} catch { |
43 |
$c->render( status => 200, json => $patron->to_api ); |
44 |
if ( ref($_) eq 'Koha::Exceptions::Auth::Unauthorized' ) { |
44 |
} catch { |
45 |
$c->render(status => 401, json => {message => 'unauthorized'}); |
45 |
if ( ref($_) eq 'Koha::Exceptions::Auth::Unauthorized' ) { |
46 |
} else { |
46 |
$c->render( status => 401, json => { message => 'unauthorized' } ); |
47 |
$c->render(status => 500, json => {message => 'other error'}); |
47 |
} else { |
|
|
48 |
$c->render( status => 500, json => { message => 'other error' } ); |
49 |
} |
48 |
} |
50 |
} |
49 |
} |
|
|
50 |
}; |
51 |
}; |
51 |
|
52 |
|
52 |
post '/start_session' => sub { |
53 |
post '/start_session' => sub { |
53 |
my $c = shift; |
54 |
my $c = shift; |
54 |
my $userid = my $params = $c->req->json->{userid}; |
55 |
my $userid = my $params = $c->req->json->{userid}; |
55 |
|
56 |
|
56 |
try { |
57 |
try { |
57 |
my $patron = Koha::Patrons->search({userid => $userid}); |
58 |
my $patron = Koha::Patrons->search( { userid => $userid } ); |
58 |
my ($status, $cookie, $session_id) = $c->auth->session($patron->next); |
59 |
my ( $status, $cookie, $session_id ) = $c->auth->session({ patron => $patron->next, interface => 'opac' }); |
59 |
$c->render(status => 200, json => {status => $status}); |
60 |
$c->render( status => 200, json => { status => $status } ); |
60 |
} catch { |
61 |
} catch { |
61 |
if ( ref($_) eq 'Koha::Exceptions::Auth::CannotCreateSession' ) { |
62 |
if ( ref($_) eq 'Koha::Exceptions::Auth::CannotCreateSession' ) { |
62 |
$c->render(status => 401, json => {message => 'unauthorized'}); |
63 |
$c->render( status => 401, json => { message => 'unauthorized' } ); |
63 |
} else { |
64 |
} else { |
64 |
$c->render(status => 500, json => {message => 'other error'}); |
65 |
$c->render( status => 500, json => { message => 'other error' } ); |
|
|
66 |
} |
65 |
} |
67 |
} |
66 |
} |
|
|
67 |
}; |
68 |
}; |
68 |
|
69 |
|
69 |
use Test::More tests => 2; |
70 |
use Test::More tests => 2; |
Lines 81-133
my $builder = t::lib::TestBuilder->new;
Link Here
|
81 |
t::lib::Mocks::mock_preference( 'SessionStorage', 'tmp' ); |
82 |
t::lib::Mocks::mock_preference( 'SessionStorage', 'tmp' ); |
82 |
|
83 |
|
83 |
subtest 'auth.register helper' => sub { |
84 |
subtest 'auth.register helper' => sub { |
84 |
plan tests => 6; |
85 |
plan tests => 6; |
85 |
|
86 |
|
86 |
$schema->storage->txn_begin; |
87 |
$schema->storage->txn_begin; |
87 |
|
88 |
|
88 |
# Remove existing patrons |
89 |
# Remove existing patrons |
89 |
Koha::Patrons->delete; |
90 |
Koha::Patrons->delete; |
90 |
my $provider = $builder->build_object( { class => 'Koha::Auth::Identity::Providers', value => { matchpoint => 'email' } } ); |
91 |
my $provider = $builder->build_object( { class => 'Koha::Auth::Identity::Providers', value => { matchpoint => 'email' } } ); |
91 |
my $domain_with_register = $builder->build_object( { class => 'Koha::Auth::Identity::Provider::Domains', value => { identity_provider_id => $provider->id, domain => 'domain1.com', auto_register => 1 } } ); |
92 |
my $domain_with_register = $builder->build_object( |
92 |
my $domain_without_register = $builder->build_object( { class => 'Koha::Auth::Identity::Provider::Domains', value => { identity_provider_id => $provider->id, domain => 'domain2.com', auto_register => 0 } } ); |
93 |
{ class => 'Koha::Auth::Identity::Provider::Domains', value => { identity_provider_id => $provider->id, domain => 'domain1.com', auto_register => 1 } } ); |
93 |
my $library = $builder->build_object({ class => 'Koha::Libraries'}); |
94 |
my $domain_without_register = $builder->build_object( |
94 |
my $category = $builder->build_object( {class => 'Koha::Patron::Categories'}); |
95 |
{ class => 'Koha::Auth::Identity::Provider::Domains', value => { identity_provider_id => $provider->id, domain => 'domain2.com', auto_register => 0 } } ); |
95 |
my $user_data = { |
96 |
my $library = $builder->build_object( { class => 'Koha::Libraries' } ); |
96 |
firstname => 'test', |
97 |
my $category = $builder->build_object( { class => 'Koha::Patron::Categories' } ); |
97 |
surname => 'test', |
98 |
my $user_data = { |
98 |
userid => 'id1', |
99 |
firstname => 'test', |
99 |
branchcode => $library->branchcode, |
100 |
surname => 'test', |
100 |
categorycode => $category->categorycode |
101 |
userid => 'id1', |
101 |
}; |
102 |
branchcode => $library->branchcode, |
102 |
|
103 |
categorycode => $category->categorycode |
103 |
my $t = Test::Mojo->new; |
104 |
}; |
104 |
|
105 |
|
105 |
$t->post_ok('/register_user' => json => {data => $user_data, domain_id => $domain_with_register->identity_provider_domain_id, interface => 'opac'}) |
106 |
my $t = Test::Mojo->new; |
106 |
->status_is(200) |
107 |
|
107 |
->json_has('/firstname', 'test'); |
108 |
$t->post_ok( '/register_user' => json => { data => $user_data, domain_id => $domain_with_register->identity_provider_domain_id, interface => 'opac' } )->status_is(200) |
108 |
|
109 |
->json_has( '/firstname', 'test' ); |
109 |
$t->post_ok('/register_user' => json => {data => $user_data, domain_id => $domain_without_register->identity_provider_domain_id, interface => 'opac'}) |
110 |
|
110 |
->status_is(401) |
111 |
$t->post_ok( '/register_user' => json => { data => $user_data, domain_id => $domain_without_register->identity_provider_domain_id, interface => 'opac' } )->status_is(401) |
111 |
->json_has('/message', 'unauthorized'); |
112 |
->json_has( '/message', 'unauthorized' ); |
112 |
$schema->storage->txn_rollback; |
113 |
$schema->storage->txn_rollback; |
113 |
}; |
114 |
}; |
114 |
|
115 |
|
115 |
subtest 'auth.session helper' => sub { |
116 |
subtest 'auth.session helper' => sub { |
116 |
plan tests => 3; |
117 |
plan tests => 3; |
117 |
|
118 |
|
118 |
$schema->storage->txn_begin; |
119 |
$schema->storage->txn_begin; |
119 |
|
120 |
|
120 |
# Remove existing patrons |
121 |
# Remove existing patrons |
121 |
Koha::Patrons->delete; |
122 |
Koha::Patrons->delete; |
122 |
my $patron = $builder->build_object( { class => 'Koha::Patrons' } ); |
123 |
my $patron = $builder->build_object( { class => 'Koha::Patrons' } ); |
123 |
|
124 |
|
|
|
125 |
my $t = Test::Mojo->new; |
126 |
$t->post_ok( '/start_session' => json => { userid => $patron->userid } )->status_is(200)->json_has( '/status', 'ok' ); |
124 |
|
127 |
|
125 |
my $t = Test::Mojo->new; |
128 |
$schema->storage->txn_rollback; |
126 |
$t->post_ok('/start_session' => json => {userid => $patron->userid}) |
|
|
127 |
->status_is(200) |
128 |
->json_has('/status', 'ok'); |
129 |
|
130 |
$schema->storage->txn_rollback; |
131 |
}; |
129 |
}; |
132 |
|
130 |
|
133 |
1; |
131 |
1; |
134 |
- |
|
|