View | Details | Raw Unified | Return to bug 40847
Collapse All | Expand All

(-)a/api/v1/swagger/paths/oauth.yaml (+3 lines)
Lines 63-68 Link Here
63
        description: Name of the interface this login is for
63
        description: Name of the interface this login is for
64
        required: true
64
        required: true
65
        type: string
65
        type: string
66
        enum:
67
          - opac
68
          - staff
66
      - name: code
69
      - name: code
67
        in: query
70
        in: query
68
        description: Code returned from OAuth server for Authorization Code grant
71
        description: Code returned from OAuth server for Authorization Code grant
(-)a/t/db_dependent/api/v1/oauth.t (-2 / +25 lines)
Lines 37-43 my $schema = Koha::Database->new->schema; Link Here
37
my $builder = t::lib::TestBuilder->new();
37
my $builder = t::lib::TestBuilder->new();
38
38
39
if ( can_load( modules => { 'Net::OAuth2::AuthorizationServer' => undef } ) ) {
39
if ( can_load( modules => { 'Net::OAuth2::AuthorizationServer' => undef } ) ) {
40
    plan tests => 3;
40
    plan tests => 4;
41
} else {
41
} else {
42
    plan skip_all => 'Net::OAuth2::AuthorizationServer not available';
42
    plan skip_all => 'Net::OAuth2::AuthorizationServer not available';
43
}
43
}
Lines 113-118 subtest 'Net::OAuth2::AuthorizationServer missing tests' => sub { Link Here
113
    $schema->storage->txn_rollback;
113
    $schema->storage->txn_rollback;
114
};
114
};
115
115
116
subtest 'OAuth login input validation tests' => sub {
117
    plan tests => 6;
118
119
    $schema->storage->txn_begin;
120
121
    # Mock system preferences
122
    t::lib::Mocks::mock_preference( 'OPACBaseURL',        'http://opac.example.com' );
123
    t::lib::Mocks::mock_preference( 'staffClientBaseURL', 'http://staff.example.com' );
124
    t::lib::Mocks::mock_preference( 'OpacPublic',         1 );
125
126
    # Test invalid interface parameter (should be validated by OpenAPI enum)
127
    $t->get_ok('/api/v1/oauth/login/test_provider/invalid')
128
        ->status_is( 400, 'Invalid interface returns 400 due to OpenAPI enum validation' );
129
130
    # Test non-existent provider (should redirect with error)
131
    $t->get_ok('/api/v1/oauth/login/nonexistent_provider/opac')
132
        ->status_is( 302, 'Non-existent provider redirects with error' );
133
134
    # Test missing provider_code and interface are handled by OpenAPI (404)
135
    $t->get_ok('/api/v1/oauth/login//opac')->status_is( 404, 'Missing provider_code returns 404' );
136
137
    $schema->storage->txn_rollback;
138
};
139
116
sub run_oauth_tests {
140
sub run_oauth_tests {
117
    my ($test_case) = @_;
141
    my ($test_case) = @_;
118
142
119
- 

Return to bug 40847