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

(-)a/api/v1/swagger/x-primitives.json (-1 / +2 lines)
Lines 17-23 Link Here
17
  },
17
  },
18
  "cityid": {
18
  "cityid": {
19
    "type": "string",
19
    "type": "string",
20
    "description": "internally assigned city identifier"
20
    "description": "internally assigned city identifier",
21
    "readOnly": true
21
  },
22
  },
22
  "email": {
23
  "email": {
23
    "type": ["string", "null"],
24
    "type": ["string", "null"],
(-)a/t/db_dependent/api/v1/cities.t (-14 / +56 lines)
Lines 127-133 subtest 'get() tests' => sub { Link Here
127
127
128
subtest 'add() tests' => sub {
128
subtest 'add() tests' => sub {
129
129
130
    plan tests => 11;
130
    plan tests => 17;
131
131
132
    $schema->storage->txn_begin;
132
    $schema->storage->txn_begin;
133
133
Lines 149-165 subtest 'add() tests' => sub { Link Here
149
    $tx->req->env( { REMOTE_ADDR => $remote_address } );
149
    $tx->req->env( { REMOTE_ADDR => $remote_address } );
150
    $t->request_ok($tx)->status_is(403);
150
    $t->request_ok($tx)->status_is(403);
151
151
152
    # Authorized attempt to write
153
    $tx = $t->ua->build_tx( POST => "/api/v1/cities/" => json => $city );
154
    $tx->req->cookies(
155
        { name => 'CGISESSID', value => $authorized_session_id } );
156
    $tx->req->env( { REMOTE_ADDR => $remote_address } );
157
    $t->request_ok($tx)->status_is(200)
158
      ->json_is( '/city_name'    => $city->{city_name} )
159
      ->json_is( '/city_state'   => $city->{city_state} )
160
      ->json_is( '/city_zipcode' => $city->{city_zipcode} )
161
      ->json_is( '/city_country' => $city->{city_country} );
162
163
    # Authorized attempt to write invalid data
152
    # Authorized attempt to write invalid data
164
    my $city_with_invalid_field = {
153
    my $city_with_invalid_field = {
165
        city_blah    => "City Blah",
154
        city_blah    => "City Blah",
Lines 182-193 subtest 'add() tests' => sub { Link Here
182
        ]
171
        ]
183
    );
172
    );
184
173
174
    # Authorized attempt to write
175
    $tx = $t->ua->build_tx( POST => "/api/v1/cities/" => json => $city );
176
    $tx->req->cookies(
177
        { name => 'CGISESSID', value => $authorized_session_id } );
178
    $tx->req->env( { REMOTE_ADDR => $remote_address } );
179
    my $cityid = $t->request_ok($tx)->status_is(200)
180
      ->json_is( '/city_name'    => $city->{city_name} )
181
      ->json_is( '/city_state'   => $city->{city_state} )
182
      ->json_is( '/city_zipcode' => $city->{city_zipcode} )
183
      ->json_is( '/city_country' => $city->{city_country} )
184
      ->tx->res->json->{cityid};
185
186
    # Authorized attempt to create with null id
187
    $city->{cityid} = undef;
188
    $tx = $t->ua->build_tx(
189
        POST => "/api/v1/cities/" => json => $city );
190
    $tx->req->cookies(
191
        { name => 'CGISESSID', value => $authorized_session_id } );
192
    $tx->req->env( { REMOTE_ADDR => $remote_address } );
193
    $t->request_ok($tx)->status_is(400)->json_is(
194
        "/errors" => [
195
            {
196
                message => "Read-only.",
197
                path    => "/body/cityid"
198
            }
199
        ]
200
    );
201
202
    # Authorized attempt to create with existing id
203
    $city->{cityid} = $cityid;
204
    $tx = $t->ua->build_tx(
205
        POST => "/api/v1/cities/" => json => $city );
206
    $tx->req->cookies(
207
        { name => 'CGISESSID', value => $authorized_session_id } );
208
    $tx->req->env( { REMOTE_ADDR => $remote_address } );
209
    $t->request_ok($tx)->status_is(400)->json_is(
210
        "/errors" => [
211
            {
212
                message => "Read-only.",
213
                path    => "/body/cityid"
214
            }
215
        ]
216
    );
217
185
    $schema->storage->txn_rollback;
218
    $schema->storage->txn_rollback;
186
};
219
};
187
220
188
subtest 'update() tests' => sub {
221
subtest 'update() tests' => sub {
189
222
190
    plan tests => 13;
223
    plan tests => 15;
191
224
192
    $schema->storage->txn_begin;
225
    $schema->storage->txn_begin;
193
226
Lines 270-275 subtest 'update() tests' => sub { Link Here
270
    $t->request_ok($tx)->status_is(404);
303
    $t->request_ok($tx)->status_is(404);
271
304
272
    $schema->storage->txn_rollback;
305
    $schema->storage->txn_rollback;
306
307
    # Wrong mathod (POST)
308
    $city_with_updated_field->{cityid} = 2;
309
310
    $tx = $t->ua->build_tx(
311
        POST => "/api/v1/cities/$city_id" => json => $city_with_updated_field );
312
    $tx->req->cookies(
313
        { name => 'CGISESSID', value => $authorized_session_id } );
314
    $tx->req->env( { REMOTE_ADDR => $remote_address } );
315
    $t->request_ok($tx)->status_is(404);
273
};
316
};
274
317
275
subtest 'delete() tests' => sub {
318
subtest 'delete() tests' => sub {
276
- 

Return to bug 17428