コード例 #1
0
def test_dont_add_user_if_user_id_missing(test_client, api_headers_bearer,
                                          insert_tokens):
    password = "******"

    user = User(first_name="Max",
                last_name="Muster",
                email="*****@*****.**",
                password=password)
    user = insert_user(user)
    user_tokens = insert_tokens(user.email)

    group = Group(name="Group")
    insert_group(group)

    group_add_user_data = {"bla": "bla"}

    response = test_client.post("/groups/{}/members".format(group.id),
                                headers=api_headers_bearer(
                                    user_tokens["access_token"]["token"]),
                                data=json.dumps(group_add_user_data))
    json_response = json.loads(response.get_data(as_text=True))

    assert response.status_code == 400
    assert json_response["message"] == "Missing attribute email"
    assert len(group.group_members) == 0
コード例 #2
0
def test_dont_add_user_if_user_not_exist(test_client, api_headers_bearer,
                                         insert_tokens):
    password = "******"

    user = User(first_name="Max",
                last_name="Muster",
                email="*****@*****.**",
                password=password)
    user = insert_user(user)
    tokens = insert_tokens(user.email)

    group_member = GroupMember(user=user)
    group = Group(name="Group", group_members=[group_member])
    insert_group(group)

    group_add_user_data = {
        "user_id": 2,
    }

    response = test_client.post("/groups/{}/members".format(group.id),
                                headers=api_headers_bearer(
                                    tokens["access_token"]["token"]),
                                data=json.dumps(group_add_user_data))
    json_response = json.loads(response.get_data(as_text=True))

    assert response.status_code == 400
    assert json_response["message"] == "User does not exist"
    assert len(get_all_users()) == 1
コード例 #3
0
def test_error_on_name_wrong_type(test_client, api_headers_bearer, insert_tokens):
    password = "******"

    user = User(first_name="Max",
                last_name="Muster",
                email="*****@*****.**",
                password=password)
    user = insert_user(user)
    tokens = insert_tokens(user.email)

    group_data = {
        "name": True,
        "members": [
            {
                "id": user.id,
            }
        ]
    }

    response = test_client.post("/groups",
                                headers=api_headers_bearer(
                                    tokens["access_token"]["token"]),
                                data=json.dumps(group_data))
    json_response = json.loads(response.get_data(as_text=True))

    assert response.status_code == 400
    assert json_response["message"] == "Attribute name needs to be of type str"

    assert len(get_all_groups()) == 0
コード例 #4
0
def test_token_gets_saved(test_client, api_headers):
    password = "******"
    user = User(email="*****@*****.**",
                password=password,
                first_name="Max",
                last_name="Muster")
    insert_user(user)

    data = {"email": user.email, "password": password}

    test_client.post("/tokens", headers=api_headers, data=json.dumps(data))

    tokens = get_user_tokens(user.email)
    assert len(tokens) == 2
    assert tokens[0].revoked is False
    assert tokens[1].revoked is False
コード例 #5
0
def test_add_not_registered_user_to_existing_group(test_client,
                                                   api_headers_bearer,
                                                   insert_tokens):
    password = "******"

    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    user1 = insert_user(user1)
    user1_tokens = insert_tokens(user1.email)

    group_member1 = GroupMember(user=user1)
    group = Group(name="Muster", group_members=[group_member1])
    insert_group(group)

    group_add_user_data = {"email": "*****@*****.**"}

    response = test_client.post("/groups/{}/members".format(group.id),
                                headers=api_headers_bearer(
                                    user1_tokens["access_token"]["token"]),
                                data=json.dumps(group_add_user_data))
    json_response = json.loads(response.get_data(as_text=True))

    assert response.status_code == 201
    assert json_response["message"] == "Added user to group"

    group = get_group_by_id(group.id)

    assert len(group.group_members) == 2
コード例 #6
0
def test_needs_to_be_confirmed_on_put(test_client, api_headers_bearer,
                                      insert_tokens):
    user = User(first_name="Max",
                last_name="Muster",
                email="*****@*****.**",
                password="******")
    insert_user(user)
    tokens = insert_tokens(user.email)

    response = test_client.put("/bills/1",
                               headers=api_headers_bearer(
                                   tokens["access_token"]["token"]))
    json_response = json.loads(response.get_data(as_text=True))

    assert response.status_code == 403
    assert json_response[
        "message"] == "Account needs to be confirmed for this operation"
コード例 #7
0
def test_error_on_email_missing(test_client, api_headers):
    password = "******"
    user = User(email="*****@*****.**",
                password=password,
                first_name="Max",
                last_name="Muster")
    insert_user(user)

    data = {"password": password}

    response = test_client.post("/tokens",
                                headers=api_headers,
                                data=json.dumps(data))
    json_response = json.loads(response.get_data(as_text=True))

    assert response.status_code == 400
    assert "message" in json_response
    assert json_response["message"] == "Missing attribute email"
コード例 #8
0
def test_dont_get_token_if_password_incorrect(test_client, api_headers):
    password = "******"
    user = User(email="*****@*****.**",
                password=password,
                first_name="Max",
                last_name="Muster")
    insert_user(user)

    data = {"email": user.email, "password": password + "wrong"}

    response = test_client.post("/tokens",
                                headers=api_headers,
                                data=json.dumps(data))
    json_response = json.loads(response.get_data(as_text=True))

    assert response.status_code == 403
    assert "message" in json_response
    assert json_response["message"] == "Incorrect email or password"
コード例 #9
0
def test_is_friends_with_user_return_false_if_not_friend_with_user(app):
    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password="******")
    insert_user(user1)

    user2 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password="******")
    insert_user(user2)

    insert_friend(Friend(user=user1, friend=user2))

    result = is_friend_with_user(user2.id, user1.id)

    assert result is False
コード例 #10
0
def test_dont_change_date_created_of_existing_bill(test_client,
                                                   api_headers_bearer,
                                                   insert_tokens):
    password = "******"
    now = datetime.datetime.utcnow()

    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 confirmed=True,
                 password=password)
    insert_user(user1)
    user1_tokens = insert_tokens(user1.email)

    user2 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 confirmed=True,
                 password=password)
    insert_user(user2)

    bill_member1 = BillMember(user_id=user1.id, amount="5.00")
    bill_member2 = BillMember(user_id=user2.id, amount="-5.00")

    bill1 = Bill(description="Bill",
                 date=now,
                 date_created=now,
                 members=[bill_member1, bill_member2])
    bill_id = insert_bill(bill1).id

    data = {"date_created": datetime.datetime.utcnow()}

    response = test_client.put(
        "/bills/{}".format(bill_id),
        headers=api_headers_bearer(user1_tokens["access_token"]["token"]),
        data=json.dumps(data, default=json_data_encoder))
    json_response = json.loads(response.get_data(as_text=True))

    bill = get_bill_by_id(bill_id)

    assert response.status_code == 400
    assert json_response[
        "message"] == "Attribute date_created should not be set"
    assert bill.date_created == now
コード例 #11
0
ファイル: test_bills.py プロジェクト: FlexW/splitbills_server
def test_dont_add_bill_if_amounts_sum_not_zero(test_client, api_headers_bearer,
                                               insert_tokens):
    password = "******"
    now = datetime.datetime.utcnow()

    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user1)
    user1_tokens = insert_tokens(user1.email)

    user2 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user2)

    bill_data = {
        "description":
        "Important bill",
        "date":
        now,
        "date_created":
        now,
        "members": [{
            "user_id": user1.id,
            "amount": 200
        }, {
            "user_id": user2.id,
            "amount": -201
        }]
    }

    response = test_client.post("/bills",
                                headers=api_headers_bearer(
                                    user1_tokens["access_token"]["token"]),
                                data=json.dumps(bill_data,
                                                default=json_data_encoder))
    json_response = json.loads(response.get_data(as_text=True))

    assert response.status_code == 400
    assert json_response["message"] == "Sum of amounts must be zero"
    assert len(get_all_bills()) == 0
コード例 #12
0
ファイル: test_bills.py プロジェクト: FlexW/splitbills_server
def test_get_only_not_removed_bills(test_client, api_headers_bearer,
                                    insert_tokens):
    password = "******"
    now = datetime.datetime.utcnow()

    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user1)
    user1_tokens = insert_tokens(user1.email)

    user2 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user2)

    bill1 = Bill(description="Bill",
                 members=[
                     BillMember(user=user1, amount="-2.00"),
                     BillMember(user=user2, amount="2.00")
                 ],
                 date=now,
                 date_created=now)
    insert_bill(bill1)

    bill2 = Bill(description="Bill",
                 members=[
                     BillMember(user=user1, amount="-2.00"),
                     BillMember(user=user2, amount="2.00")
                 ],
                 date=now,
                 date_created=now,
                 valid=False)
    insert_bill(bill2)

    response = test_client.get("/bills",
                               headers=api_headers_bearer(
                                   user1_tokens["access_token"]["token"]))
    json_response = json.loads(response.get_data(as_text=True))

    assert len(json_response["bills"]) == 1
    assert json_response["bills"][0]["id"] == bill1.id
コード例 #13
0
def test_error_on_password_wrong_type(test_client, api_headers):
    password = "******"
    user = User(email="*****@*****.**",
                password=password,
                first_name="Max",
                last_name="Muster")
    insert_user(user)

    data = {"email": user.email, "password": True}

    response = test_client.post("/tokens",
                                headers=api_headers,
                                data=json.dumps(data))
    json_response = json.loads(response.get_data(as_text=True))

    assert response.status_code == 400
    assert "message" in json_response
    assert json_response[
        "message"] == "Attribute password needs to be of type str"
コード例 #14
0
def test_error_on_bill_not_existing(test_client, api_headers_bearer,
                                    insert_tokens):
    password = "******"
    now = datetime.datetime.utcnow()

    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 confirmed=True,
                 password=password)
    insert_user(user1)
    user1_tokens = insert_tokens(user1.email)

    user2 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 confirmed=True,
                 password=password)
    insert_user(user2)

    bill_member1 = BillMember(user_id=user1.id, amount="5.00")
    bill_member2 = BillMember(user_id=user2.id, amount="-5.00")

    bill1 = Bill(description="Bill",
                 date=now,
                 date_created=now,
                 members=[bill_member1, bill_member2])
    bill_id = insert_bill(bill1).id

    data = {"description": "New"}

    response = test_client.put("/bills/2",
                               headers=api_headers_bearer(
                                   user1_tokens["access_token"]["token"]),
                               data=json.dumps(data))
    json_response = json.loads(response.get_data(as_text=True))

    bill = get_bill_by_id(bill_id)

    assert response.status_code == 400
    assert json_response["message"] == "Bill does not exist"
    assert bill.description == "Bill"
コード例 #15
0
def test_get_bills_from_group(test_client, api_headers_bearer, insert_tokens):
    password = "******"
    now = datetime.datetime.utcnow()

    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user1)
    user1_tokens = insert_tokens(user1.email)

    user2 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user2)

    group = Group(
        name="Name",
        group_members=[GroupMember(user=user1),
                       GroupMember(user=user2)])
    insert_group(group)

    bill = Bill(description="Bill",
                date=now,
                date_created=now,
                group=group,
                members=[
                    BillMember(user=user1, amount=3),
                    BillMember(user=user2, amount=-3)
                ])
    insert_bill(bill)

    response = test_client.get("/groups/{}/bills".format(group.id),
                               headers=api_headers_bearer(
                                   user1_tokens["access_token"]["token"]))
    json_response = json.loads(response.get_data(as_text=True))

    assert response.status_code == 200
    assert json_response["message"] == "Returned bills"
    assert len(json_response["bills"]) == 1
    assert json_response["bills"][0]["id"] == bill.id
コード例 #16
0
def test_create_group_with_not_registered_group_member_that_was_already_created(test_client, api_headers_bearer, insert_tokens):
    password = "******"

    user = User(first_name="Max",
                last_name="Muster",
                email="*****@*****.**",
                password=password)
    user = insert_user(user)
    tokens = insert_tokens(user.email)

    new_user_email = "*****@*****.**"
    insert_user(User(email=new_user_email))

    group_data = {
        "name": "Muster",
        "members": [
            {
                "id": user.id,
            },
            {
                "email": new_user_email
            }
        ]
    }

    response = test_client.post("/groups",
                                headers=api_headers_bearer(
                                    tokens["access_token"]["token"]),
                                data=json.dumps(group_data))
    json_response = json.loads(response.get_data(as_text=True))

    assert response.status_code == 201

    assert json_response["message"] == "Created new group"
    assert json_response["group"]["id"] == 1
    assert json_response["group"]["name"] == group_data["name"]
    assert json_response["group"]["valid"] is True

    group = get_group_by_id(json_response["group"]["id"])

    assert group is not None
    assert len(group.group_members) == 2
コード例 #17
0
ファイル: test_user.py プロジェクト: FlexW/splitbills_server
def test_dont_get_unknown_user_by_id(app):
    u = User(first_name="Max",
             last_name="Muster",
             email="*****@*****.**",
             password="******")

    u = insert_user(u)

    u_from_db = get_user_by_id(0)

    assert u_from_db is None
コード例 #18
0
ファイル: bills.py プロジェクト: FlexW/splitbills_server
def _load_bill_data(json_data):
    check_has_not_attribute(json_data, "id")
    check_has_not_attribute(json_data, "valid")

    description = get_attribute(json_data, "description")
    date = get_attribute_if_existing(json_data, "date")
    date_created = get_attribute_if_existing(json_data, "date_created")
    group_id = get_attribute_if_existing(json_data, "group_id", ttype=int)
    members = get_attribute(json_data, "members", ttype=list)

    data = {}
    data["description"] = description
    if date is not None:
        data["date"] = convert_string_to_datetime(date)

    if date_created is not None:
        data["date_created"] = convert_string_to_datetime(date_created)

    if group_id is not None:
        data["group_id"] = group_id

    data["members"] = []

    for member in members:
        member_id = get_attribute_if_existing(member, "user_id", ttype=int)
        if member_id is None:
            member_email = get_attribute(member, "email", ttype=str)
            user = get_user_by_email(member_email)
            if user is None:
                user = User(email=member_email)
                insert_user(user)
            member_id = user.id

        amount = get_attribute(member, "amount", ttype=int)

        data["members"].append({
            "user_id": member_id,
            "amount": amount
        })

    return data
コード例 #19
0
def test_insert_friends_by_user_relationship(app):
    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password="******")
    insert_user(user1)

    user2 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password="******")
    insert_user(user2)

    user3 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password="******")
    insert_user(user3)

    user1.friends.append(Friend(friend=user2))
    user1.friends.append(Friend(friend=user3))

    friends_user1 = get_friends_by_user_id(user1.id)

    assert len(friends_user1) == 2
    assert friends_user1[0].friend_id == user2.id
    assert friends_user1[1].friend_id == user3.id
コード例 #20
0
def test_delete_existing_group(test_client, api_headers_bearer, insert_tokens):
    password = "******"
    now = datetime.datetime.utcnow()

    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user1)
    user1_tokens = insert_tokens(user1.email)
    user2 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user2)
    group = Group(name="Name", group_members=[GroupMember(user=user1),
                                              GroupMember(user=user2)])
    insert_group(group)

    bill_member1 = BillMember(user_id=user1.id, amount="5.00")
    bill_member2 = BillMember(user_id=user2.id, amount="-5.00")

    bill1 = Bill(description="Bill",
                 group=group,
                 date=now,
                 date_created=now,
                 members=[bill_member1, bill_member2])
    insert_bill(bill1)

    assert group.valid is True

    response = test_client.delete("/groups/{}".format(group.id),
                                  headers=api_headers_bearer(
                                      user1_tokens["access_token"]["token"]))
    json_response = json.loads(response.get_data(as_text=True))

    assert response.status_code == 200
    assert json_response["message"] == "Deleted group"
    assert group.valid is False
    assert bill1.valid is False
コード例 #21
0
def test_get_friends_by_user_id(app):
    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password="******")
    insert_user(user1)

    user2 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password="******")
    insert_user(user2)

    user3 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password="******")
    insert_user(user3)

    friend1 = Friend(user=user1, friend=user2)
    insert_friend(friend1)

    friend2 = Friend(user=user1, friend=user3)
    insert_friend(friend2)

    friends_user1 = get_friends_by_user_id(user1.id)

    assert len(friends_user1) == 2
    assert friends_user1[0] == friend1
    assert friends_user1[1] == friend2
コード例 #22
0
ファイル: test_bills.py プロジェクト: FlexW/splitbills_server
def test_get_just_bills_from_user(app, test_client, api_headers_bearer,
                                  insert_tokens):
    password = "******"
    now = datetime.datetime.utcnow()

    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user1)
    user1_tokens = insert_tokens(user1.email)

    user2 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user2)

    bill_member1 = BillMember(user_id=user1.id, amount="1.00")

    bill1 = Bill(description="Bill", date=now, date_created=now)
    insert_bill(bill1)
    bill_member1.bill = bill1
    bill1.members.append(bill_member1)

    bill_member2 = BillMember(user_id=user2.id, amount="1.00")

    bill2 = Bill(description="Bill2", date=now, date_created=now)
    insert_bill(bill2)
    bill_member2.bill = bill2

    response = test_client.get("/bills",
                               headers=api_headers_bearer(
                                   user1_tokens["access_token"]["token"]))
    json_response = json.loads(response.get_data(as_text=True))

    assert len(json_response["bills"]) == 1
    assert json_response["bills"][0]["description"] == bill1.description
コード例 #23
0
def test_add_new_member_to_group_add_member_as_friend_of_group_members(
        test_client, api_headers_bearer, insert_tokens):
    password = "******"

    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    user1 = insert_user(user1)
    user1_tokens = insert_tokens(user1.email)

    user2 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    user2 = insert_user(user2)

    group_member1 = GroupMember(user=user1)
    group = Group(name="Muster", group_members=[group_member1])
    insert_group(group)

    group_add_user_data = {
        "user_id": user2.id,
    }

    response = test_client.post("/groups/{}/members".format(group.id),
                                headers=api_headers_bearer(
                                    user1_tokens["access_token"]["token"]),
                                data=json.dumps(group_add_user_data))

    assert response.status_code == 201

    user1_friends = get_friends_by_user_id(user1.id)
    assert len(user1_friends) == 1
    assert user1_friends[0].friend_id == user2.id

    assert len(user2.friends) == 1
    assert user2.friends[0].friend_id == user1.id
コード例 #24
0
ファイル: test_bills.py プロジェクト: FlexW/splitbills_server
def test_can_create_multiple_times_bill_with_same_members(
        test_client, api_headers_bearer, insert_tokens):
    now = datetime.datetime.utcnow()
    password = "******"

    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user1)
    user1_tokens = insert_tokens(user1.email)

    user2 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user2)

    user3 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user3)

    bill_data = {
        "description":
        "Important bill",
        "date":
        datetime_to_string(now),
        "date_created":
        datetime_to_string(now),
        "members": [{
            "user_id": user1.id,
            "amount": 200
        }, {
            "user_id": user2.id,
            "amount": -100
        }, {
            "user_id": user3.id,
            "amount": -100
        }]
    }

    # Create bill first time
    response = test_client.post("/bills",
                                headers=api_headers_bearer(
                                    user1_tokens["access_token"]["token"]),
                                data=json.dumps(bill_data))

    assert response.status_code == 201

    # Create bill second time
    response = test_client.post("/bills",
                                headers=api_headers_bearer(
                                    user1_tokens["access_token"]["token"]),
                                data=json.dumps(bill_data))

    assert response.status_code == 201
コード例 #25
0
def test_get_only_non_removed_groups(test_client, api_headers_bearer, insert_tokens):
    password = "******"

    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user1)
    tokens = insert_tokens(user1.email)

    group1 = Group(name="G1", group_members=[GroupMember(user=user1)])
    insert_group(group1)
    group2 = Group(
        name="G1", group_members=[GroupMember(user=user1)], valid=False)
    insert_group(group2)

    response = test_client.get("/groups",
                               headers=api_headers_bearer(
                                   tokens["access_token"]["token"]))
    json_respone = json.loads(response.get_data(as_text=True))

    assert len(json_respone["groups"]) == 1
    assert json_respone["groups"][0]["id"] == group1.id
コード例 #26
0
def test_error_on_not_existing_group(test_client, api_headers_bearer, insert_tokens):
    password = "******"
    user = User(first_name="Max",
                last_name="Muster",
                email="*****@*****.**",
                password=password)
    insert_user(user)
    tokens = insert_tokens(user.email)

    data = {
        "id": 1,
        "name": "Changed",
        "members": [{"id": user.id}]
    }

    response = test_client.put("/groups/1",
                               headers=api_headers_bearer(
                                   tokens["access_token"]["token"]),
                               data=json.dumps(data))
    json_response = json.loads(response.get_data(as_text=True))

    assert response.status_code == 401
    assert json_response["message"] == "Group does not exist"
コード例 #27
0
def test_group_member_is_allowed_to_modify_bill(test_client,
                                                api_headers_bearer,
                                                insert_tokens):
    password = "******"
    now = datetime.datetime.utcnow()

    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 confirmed=True,
                 password=password)
    insert_user(user1)

    user2 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 confirmed=True,
                 password=password)
    insert_user(user2)

    user3 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 confirmed=True,
                 password=password)
    insert_user(user3)
    user3_tokens = insert_tokens(user3.email)

    group = Group(
        name="Group",
        group_members=[GroupMember(user=user1),
                       GroupMember(user=user3)])
    insert_group(group)

    bill_member1 = BillMember(user_id=user1.id, amount="5.00")
    bill_member2 = BillMember(user_id=user2.id, amount="-5.00")

    bill1 = Bill(description="Bill",
                 date=now,
                 date_created=now,
                 group=group,
                 members=[bill_member1, bill_member2])
    bill_id = insert_bill(bill1).id

    data = {"description": "New"}

    response = test_client.put("/bills/{}".format(bill_id),
                               headers=api_headers_bearer(
                                   user3_tokens["access_token"]["token"]),
                               data=json.dumps(data))
    json_response = json.loads(response.get_data(as_text=True))

    bill = get_bill_by_id(bill_id)

    assert response.status_code == 200
    assert json_response["message"] == "Updated bill"
    assert bill.description == data["description"]
コード例 #28
0
ファイル: test_bills.py プロジェクト: FlexW/splitbills_server
def test_create_bill_with_not_registered_bill_member_that_was_already_created(
        test_client, api_headers_bearer, insert_tokens):
    password = "******"
    now = datetime.datetime.utcnow()

    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user1)
    user1_tokens = insert_tokens(user1.email)

    user2 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 password=password)
    insert_user(user2)

    new_user_email = "*****@*****.**"
    insert_user(User(email=new_user_email))

    bill_data = {
        "description":
        "Important bill",
        "date":
        datetime_to_string(now),
        "date_created":
        datetime_to_string(now),
        "members": [{
            "user_id": user1.id,
            "amount": 200
        }, {
            "user_id": user2.id,
            "amount": -100
        }, {
            "email": new_user_email,
            "amount": -100
        }]
    }

    response = test_client.post("/bills",
                                headers=api_headers_bearer(
                                    user1_tokens["access_token"]["token"]),
                                data=json.dumps(bill_data,
                                                default=json_data_encoder))
    json_response = json.loads(response.get_data(as_text=True))

    assert response.status_code == 201

    bill = get_bills_by_user_id(user1.id)[0]

    assert json_response["message"] == "Created new bill"

    assert len(get_bills_by_user_id(user1.id)) == 1
    assert len(get_bills_by_user_id(user2.id)) == 1

    assert len(bill.members) == 3
コード例 #29
0
def test_unrevoke_access_token(test_client, api_headers, api_headers_bearer):
    password = "******"
    user = User(email="*****@*****.**",
                password=password,
                first_name="Max",
                last_name="Muster")
    insert_user(user)

    data = {"email": user.email, "password": password}

    response = test_client.post("/tokens",
                                headers=api_headers,
                                data=json.dumps(data))
    json_response = json.loads(response.get_data(as_text=True))

    access_token = json_response["access_token"]

    response = test_client.post("/tokens",
                                headers=api_headers,
                                data=json.dumps(data))
    json_response = json.loads(response.get_data(as_text=True))

    second_access_token = json_response["access_token"]

    revoke_token(access_token["id"], user.email)

    data = {"revoke": False}

    response = test_client.put("/tokens/{}".format(access_token["id"]),
                               headers=api_headers_bearer(
                                   second_access_token["token"]),
                               data=json.dumps(data))
    json_response = json.loads(response.get_data(as_text=True))

    assert response.status_code == 200
    assert json_response["message"] == "Token unrevoked"
    assert is_token_revoked(decode_token(access_token["token"])) is False
コード例 #30
0
def test_add_unregistered_member_to_bill_that_was_already_created(
        test_client, api_headers_bearer, insert_tokens):
    password = "******"
    now = datetime.datetime.utcnow()

    user1 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 confirmed=True,
                 password=password)
    insert_user(user1)
    user1_tokens = insert_tokens(user1.email)

    user2 = User(first_name="Max",
                 last_name="Muster",
                 email="*****@*****.**",
                 confirmed=True,
                 password=password)
    insert_user(user2)

    new_user_email = "*****@*****.**"
    insert_user(User(email=new_user_email))

    bill_member1 = BillMember(user_id=user1.id, amount="5.00")
    bill_member2 = BillMember(user_id=user2.id, amount="-5.00")

    bill1 = Bill(description="Bill",
                 date=now,
                 date_created=now,
                 members=[bill_member1, bill_member2])
    bill_id = insert_bill(bill1).id

    data = {
        "members": [{
            "user_id": user1.id,
            "amount": -3
        }, {
            "user_id": user2.id,
            "amount": -3
        }, {
            "email": new_user_email,
            "amount": 6
        }]
    }

    response = test_client.put("/bills/{}".format(bill_id),
                               headers=api_headers_bearer(
                                   user1_tokens["access_token"]["token"]),
                               data=json.dumps(data))
    json_response = json.loads(response.get_data(as_text=True))

    bill = get_bill_by_id(bill_id)

    assert response.status_code == 200
    assert json_response["message"] == "Updated bill"

    assert len(bill.members) == 3