def handler(event, context):

    pet_id = event['pathParameters']['petId']
    if not ValidationUtil.is_integer(pet_id):
        return HttpResponseUtil.pet_not_found()

    if not JsonUtil.is_valid_json(event['body']):
        return HttpResponseUtil.bad_request(
            "request body doesn't contain valid json")

    data = JsonUtil.loads(event['body'])
    v = Validator(pet_schema)
    if v.validate(data) is not True:
        return HttpResponseUtil.bad_request(v.errors)

    pet = {'id': int(pet_id), **data}
    try:
        pets_table.put_item(Item=pet,
                            ConditionExpression='attribute_exists(id)')

    except ClientError as e:
        if e.response.get('Error',
                          {}).get('Code') == 'ConditionalCheckFailedException':
            return HttpResponseUtil.pet_not_found()
        raise

    return HttpResponseUtil.ok(pet)
Beispiel #2
0
def test_valid_data_will_creates_pet():

    event = {
        'body':
        JsonUtil.dumps({
            'id': 1,
            'name': 'dog',
            'tags': [{
                'id': 1,
                'name': 'some tag'
            }]
        })
    }

    res = handler(event, {})
    assert res['statusCode'] == HTTPStatus.CREATED
    data = JsonUtil.loads(res['body'])
    assert data['id'] == 1
    assert data['name'] == 'dog'
    assert data['tags'][0]['id'] == 1
    assert data['tags'][0]['name'] == 'some tag'

    dynamo_res = pets_table.get_item(Key={'id': 1})
    assert 'Item' in dynamo_res
    item = dynamo_res['Item']
    assert item['id'] == 1
    assert item['name'] == 'dog'
Beispiel #3
0
def test_invalid_json_will_return_bad_request(data, res_body):

    event = {'body': JsonUtil.dumps(data)}

    res = handler(event, {})
    assert res['statusCode'] == HTTPStatus.BAD_REQUEST
    assert res['body'] == res_body
Beispiel #4
0
def get_account(oid):
    db_handler = DBManager.get_connection()
    account = db_handler['user'].find_one({"_id": ObjectId(oid)})
    
    if not account:
        abort(404)
    
    account = JsonUtil.itemToStr(account)
    return jsonify({'account': account})
def handler(event, context):

    if not JsonUtil.is_valid_json(event['body']):
        return HttpResponseUtil.bad_request(
            "request body doesn't contain valid json")

    data = JsonUtil.loads(event['body'])
    v = Validator(create_pet_schema)
    if v.validate(data) is not True:
        return HttpResponseUtil.bad_request(v.errors)

    try:
        pets_table.put_item(Item=data,
                            ConditionExpression='attribute_not_exists(id)')
    except ClientError as e:
        if e.response.get('Error',
                          {}).get('Code') == 'ConditionalCheckFailedException':
            return HttpResponseUtil.conflict(
                'the specified id is already exists')
        raise

    return HttpResponseUtil.created(data)
Beispiel #6
0
def test_duplicate_id_return_conflict():

    pets_table.put_item(Item={'id': 1, 'name': 'cat'})

    event = {
        'body':
        JsonUtil.dumps({
            'id': 1,
            'name': 'dog',
            'tags': [{
                'id': 1,
                'name': 'some tag'
            }]
        })
    }

    res = handler(event, {})
    assert res['statusCode'] == HTTPStatus.CONFLICT
    assert len(pets_table.scan()['Items']) == 1
Beispiel #7
0
 def ok(data, headers={}):
     return _create_response(HTTPStatus.OK, JsonUtil.dumps(data), headers)
Beispiel #8
0
 def not_found(message, headers={}):
     return _create_response(HTTPStatus.NOT_FOUND,
                             JsonUtil.dumps({'message': message}), headers)
Beispiel #9
0
 def created(data, headers={}):
     return _create_response(HTTPStatus.CREATED, JsonUtil.dumps(data),
                             headers)
Beispiel #10
0
 def conflict(message, headers={}):
     return _create_response(HTTPStatus.CONFLICT,
                             JsonUtil.dumps({'message': message}), headers)
Beispiel #11
0
 def bad_request(errors, headers={}):
     return _create_response(HTTPStatus.BAD_REQUEST,
                             JsonUtil.dumps({'message': errors}), headers)