zcash-grant-system/backend/tests/user/test_invite_api.py

100 lines
3.5 KiB
Python
Raw Normal View History

import json
from mock import patch
from grant.proposal.models import Proposal, ProposalTeamInvite, db
from grant.user.models import SocialMedia, Avatar
from ..config import BaseProposalCreatorConfig
from ..test_data import test_proposal, test_user
class TestAPI(BaseProposalCreatorConfig):
2018-11-29 13:54:26 -08:00
def test_get_user_invites_by_email(self):
invite = ProposalTeamInvite(
proposal_id=self.proposal.id,
address=self.user.email_address
)
db.session.add(invite)
db.session.commit()
invites_res = self.app.get(
"/api/v1/users/{}/invites".format(self.user.email_address),
headers=self.headers
)
self.assertStatus(invites_res, 200)
self.assertEqual(invites_res.json[0]['address'], self.user.email_address)
self.assertEqual(invites_res.json[0]['proposal']['proposalId'], self.proposal.id)
# Should fail if not authorized
def test_no_auth_get_user_invites(self):
invites_res = self.app.get(
"/api/v1/users/{}/invites".format(self.user.email_address)
)
self.assertStatus(invites_res, 401)
def test_put_user_invite_response_accept(self):
proposal_id = self.other_proposal.id
invite = ProposalTeamInvite(
proposal_id=proposal_id,
2018-12-14 11:36:22 -08:00
address=self.user.email_address
2018-11-29 13:54:26 -08:00
)
db.session.add(invite)
db.session.commit()
invites_res = self.app.put(
2018-12-14 11:36:22 -08:00
"/api/v1/users/{}/invites/{}/respond".format(self.user.id, invite.id),
2018-11-29 13:54:26 -08:00
headers=self.headers,
2018-12-14 11:36:22 -08:00
data=json.dumps({"response": True}),
2018-11-29 13:54:26 -08:00
content_type='application/json'
)
self.assertStatus(invites_res, 200)
# Make sure we made the team, coach
proposal = Proposal.query.filter_by(id=proposal_id).first()
2018-12-14 11:36:22 -08:00
self.assertTrue(len(proposal.team) == 2) # TODO: More thorough check than length
2018-11-29 13:54:26 -08:00
def test_put_user_invite_response_reject(self):
proposal_id = self.other_proposal.id
invite = ProposalTeamInvite(
proposal_id=proposal_id,
2018-12-14 11:36:22 -08:00
address=self.user.email_address
2018-11-29 13:54:26 -08:00
)
db.session.add(invite)
db.session.commit()
invites_res = self.app.put(
2018-12-14 11:36:22 -08:00
"/api/v1/users/{}/invites/{}/respond".format(self.user.id, invite.id),
2018-11-29 13:54:26 -08:00
headers=self.headers,
2018-12-14 11:36:22 -08:00
data=json.dumps({"response": False}),
2018-11-29 13:54:26 -08:00
content_type='application/json'
)
self.assertStatus(invites_res, 200)
# Make sure we made the team, coach
proposal = Proposal.query.filter_by(id=proposal_id).first()
2018-12-14 11:36:22 -08:00
self.assertTrue(len(proposal.team) == 1) # TODO: More thorough check than length
2018-11-29 13:54:26 -08:00
def test_no_auth_put_user_invite_response(self):
proposal_id = self.other_proposal.id
invite = ProposalTeamInvite(
proposal_id=proposal_id,
2018-12-14 11:36:22 -08:00
address=self.user.email_address
2018-11-29 13:54:26 -08:00
)
db.session.add(invite)
db.session.commit()
invites_res = self.app.put(
2018-12-14 11:36:22 -08:00
"/api/v1/users/{}/invites/{}/respond".format(self.user.id, invite.id),
data=json.dumps({"response": True}),
2018-11-29 13:54:26 -08:00
content_type='application/json'
)
self.assertStatus(invites_res, 401)
def test_invalid_invite_put_user_invite_response(self):
invites_res = self.app.put(
2018-12-14 11:36:22 -08:00
"/api/v1/users/{}/invites/1234567890/respond".format(self.user.id),
2018-11-29 13:54:26 -08:00
headers=self.headers,
2018-12-14 11:36:22 -08:00
data=json.dumps({"response": True}),
2018-11-29 13:54:26 -08:00
content_type='application/json'
)
self.assertStatus(invites_res, 404)