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

(-)a/api/v1/swagger/paths/patrons_password.yaml (+56 lines)
Lines 59-61 Link Here
59
    x-koha-authorization:
59
    x-koha-authorization:
60
      permissions:
60
      permissions:
61
        borrowers: "1"
61
        borrowers: "1"
62
"/patrons/{patron_id}/password/expiration_date":
63
  put:
64
    x-mojo-to: Patrons::Password::Expiration#set
65
    operationId: setPatronPasswordExpiration
66
    tags:
67
      - patrons
68
    summary: Set password expiration for a patron
69
    parameters:
70
      - $ref: ../swagger.yaml#/parameters/patron_id_pp
71
      - name: body
72
        in: body
73
        description: A JSON object containing password expiration date
74
        schema:
75
          type: object
76
          properties:
77
            expiration_date:
78
              description: Date to expire password
79
              type: string
80
          required:
81
            - expiration_date
82
          additionalProperties: false
83
    produces:
84
      - application/json
85
    responses:
86
      "200":
87
        description: Password expiration changed
88
      "400":
89
        description: Bad request
90
        schema:
91
          $ref: ../swagger.yaml#/definitions/error
92
      "401":
93
        description: Authentication required
94
        schema:
95
          $ref: ../swagger.yaml#/definitions/error
96
      "403":
97
        description: Access forbidden
98
        schema:
99
          $ref: ../swagger.yaml#/definitions/error
100
      "404":
101
        description: Patron not found
102
        schema:
103
          $ref: ../swagger.yaml#/definitions/error
104
      "500":
105
        description: |
106
          Internal server error. Possible `error_code` attribute values:
107
108
          * `internal_server_error`
109
        schema:
110
          $ref: ../swagger.yaml#/definitions/error
111
      "503":
112
        description: Under maintenance
113
        schema:
114
          $ref: ../swagger.yaml#/definitions/error
115
    x-koha-authorization:
116
      permissions:
117
        superlibrarian: "1"
(-)a/api/v1/swagger/paths/patrons_password_expiration.yaml (-57 lines)
Lines 1-57 Link Here
1
---
2
"/patrons/{patron_id}/password/expiration":
3
  post:
4
    x-mojo-to: Patrons::Password::Expiration#set
5
    operationId: setPatronPasswordExpiration
6
    tags:
7
      - patrons
8
    summary: Set password expiration for a patron
9
    parameters:
10
      - $ref: ../parameters.yaml#/patron_id_pp
11
      - name: body
12
        in: body
13
        description: A JSON object containing password expiration date
14
        schema:
15
          type: object
16
          properties:
17
            expiration_date:
18
              description: Date to expire password
19
              type: string
20
          required:
21
            - expiration_date
22
          additionalProperties: false
23
    produces:
24
      - application/json
25
    responses:
26
      "200":
27
        description: Password expiration changed
28
      "400":
29
        description: Bad request
30
        schema:
31
          $ref: ../definitions.yaml#/error
32
      "401":
33
        description: Authentication required
34
        schema:
35
          $ref: ../definitions.yaml#/error
36
      "403":
37
        description: Access forbidden
38
        schema:
39
          $ref: ../definitions.yaml#/error
40
      "404":
41
        description: Patron not found
42
        schema:
43
          $ref: ../definitions.yaml#/error
44
      "500":
45
        description: |
46
          Internal server error. Possible `error_code` attribute values:
47
48
          * `internal_server_error`
49
        schema:
50
          $ref: ../definitions.yaml#/error
51
      "503":
52
        description: Under maintenance
53
        schema:
54
          $ref: ../definitions.yaml#/error
55
    x-koha-authorization:
56
      permissions:
57
        superlibrarian: "1"
(-)a/api/v1/swagger/swagger.yaml (-2 / +2 lines)
Lines 173-180 paths: Link Here
173
    $ref: "./paths/patrons_holds.yaml#/~1patrons~1{patron_id}~1holds"
173
    $ref: "./paths/patrons_holds.yaml#/~1patrons~1{patron_id}~1holds"
174
  "/patrons/{patron_id}/password":
174
  "/patrons/{patron_id}/password":
175
    $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password"
175
    $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password"
176
  "/patrons/{patron_id}/password/expiration":
176
  "/patrons/{patron_id}/password/expiration_date":
177
    $ref: "./paths/patrons_password_expiration.yaml#/~1patrons~1{patron_id}~1password~1expiration"
177
    $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password~1expiration_date"
178
  "/public/biblios/{biblio_id}":
178
  "/public/biblios/{biblio_id}":
179
    $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}"
179
    $ref: "./paths/biblios.yaml#/~1public~1biblios~1{biblio_id}"
180
  "/public/biblios/{biblio_id}/items":
180
  "/public/biblios/{biblio_id}/items":
(-)a/t/db_dependent/api/v1/patrons_password_expiration.t (-9 / +8 lines)
Lines 56-76 subtest 'basic tests' => sub { Link Here
56
56
57
    my $new_password = 'abc';
57
    my $new_password = 'abc';
58
58
59
    $t->post_ok( "//$userid:$password@/api/v1/patrons/"
59
    $t->put_ok( "//$userid:$password@/api/v1/patrons/"
60
          . $patron->id
60
          . $patron->id
61
          . "/password/expiration" => json =>
61
          . "/password/expiration_date" => json =>
62
          { expiration_date => '2021-01-01' } )
62
          { expiration_date => '2021-01-01' } )
63
      ->status_is(200)->json_is('');
63
      ->status_is(200)->json_is('');
64
64
65
    $t->post_ok( "//$userid:$password@/api/v1/patrons/"
65
    $t->put_ok( "//$userid:$password@/api/v1/patrons/"
66
          . $patron->id
66
          . $patron->id
67
          . "/password/expiration" => json =>
67
          . "/password/expiration_date" => json =>
68
          { expiration_date => '01/13/2021' } )
68
          { expiration_date => '01/13/2021' } )
69
      ->status_is(200)->json_is('');
69
      ->status_is(200)->json_is('');
70
70
71
    $t->post_ok( "//$userid:$password@/api/v1/patrons/"
71
    $t->put_ok( "//$userid:$password@/api/v1/patrons/"
72
          . $patron->id
72
          . $patron->id
73
          . "/password/expiration" => json =>
73
          . "/password/expiration_date" => json =>
74
          { expiration_date => '13/01/2021' } )
74
          { expiration_date => '13/01/2021' } )
75
      ->status_is(500)->json_is({
75
      ->status_is(500)->json_is({
76
          error => 'Something went wrong, check Koha logs for details.',
76
          error => 'Something went wrong, check Koha logs for details.',
Lines 79-87 subtest 'basic tests' => sub { Link Here
79
79
80
    $privileged_patron->flags(0)->store();
80
    $privileged_patron->flags(0)->store();
81
81
82
    $t->post_ok( "//$userid:$password@/api/v1/patrons/"
82
    $t->put_ok( "//$userid:$password@/api/v1/patrons/"
83
          . $patron->id
83
          . $patron->id
84
          . "/password/expiration" => json =>
84
          . "/password/expiration_date" => json =>
85
          { expiration_date => '2021-01-01' } )
85
          { expiration_date => '2021-01-01' } )
86
      ->status_is(403)->json_is({
86
      ->status_is(403)->json_is({
87
           error => "Authorization failure. Missing required permission(s).",
87
           error => "Authorization failure. Missing required permission(s).",
88
- 

Return to bug 29926