2018-09-25 13:09:25 -07:00
|
|
|
import copy
|
|
|
|
import json
|
|
|
|
|
2018-11-13 06:17:06 -08:00
|
|
|
from animal_case import animalify
|
|
|
|
from grant.proposal.models import Proposal
|
2018-11-14 13:12:24 -08:00
|
|
|
from grant.user.models import User, user_schema, db
|
2018-11-13 19:45:55 -08:00
|
|
|
from mock import patch
|
|
|
|
|
2018-11-13 06:17:06 -08:00
|
|
|
from ..config import BaseUserConfig
|
|
|
|
from ..test_data import test_team, test_proposal, test_user
|
|
|
|
|
|
|
|
|
|
|
|
class TestAPI(BaseUserConfig):
|
2018-11-14 13:12:24 -08:00
|
|
|
@patch('grant.email.send.send_email')
|
|
|
|
def test_create_user(self, mock_send_email):
|
|
|
|
mock_send_email.return_value.ok = True
|
|
|
|
# Delete the user config user
|
|
|
|
db.session.delete(self.user)
|
|
|
|
db.session.commit()
|
2018-09-26 12:35:22 -07:00
|
|
|
|
|
|
|
self.app.post(
|
2018-11-14 13:12:24 -08:00
|
|
|
"/api/v1/users/",
|
|
|
|
data=json.dumps(test_user),
|
2018-09-26 12:35:22 -07:00
|
|
|
content_type='application/json'
|
|
|
|
)
|
|
|
|
|
2018-11-14 13:12:24 -08:00
|
|
|
# User
|
|
|
|
user_db = User.get_by_identifier(account_address=test_user["accountAddress"])
|
|
|
|
self.assertEqual(user_db.display_name, test_user["displayName"])
|
|
|
|
self.assertEqual(user_db.title, test_user["title"])
|
|
|
|
self.assertEqual(user_db.account_address, test_user["accountAddress"])
|
2018-09-26 12:35:22 -07:00
|
|
|
|
2018-09-25 13:09:25 -07:00
|
|
|
def test_get_all_users(self):
|
|
|
|
users_get_resp = self.app.get(
|
|
|
|
"/api/v1/users/"
|
|
|
|
)
|
|
|
|
users_json = users_get_resp.json
|
2018-11-14 13:12:24 -08:00
|
|
|
self.assertEqual(users_json[0]["displayName"], self.user.display_name)
|
2018-09-25 13:09:25 -07:00
|
|
|
|
2018-11-14 13:12:24 -08:00
|
|
|
def test_get_single_user_by_email(self):
|
2018-09-25 13:09:25 -07:00
|
|
|
users_get_resp = self.app.get(
|
2018-11-14 13:12:24 -08:00
|
|
|
"/api/v1/users/{}".format(self.user.email_address)
|
2018-09-25 13:09:25 -07:00
|
|
|
)
|
|
|
|
|
|
|
|
users_json = users_get_resp.json
|
2018-11-14 13:12:24 -08:00
|
|
|
self.assertEqual(users_json["avatar"]["imageUrl"], self.user.avatar.image_url)
|
|
|
|
self.assertEqual(users_json["socialMedias"][0]["socialMediaLink"], self.user.social_medias[0].social_media_link)
|
|
|
|
self.assertEqual(users_json["displayName"], self.user.display_name)
|
|
|
|
|
|
|
|
def test_get_single_user_by_account_address(self):
|
2018-09-26 12:42:40 -07:00
|
|
|
users_get_resp = self.app.get(
|
2018-11-14 13:12:24 -08:00
|
|
|
"/api/v1/users/{}".format(self.user.account_address)
|
2018-09-26 12:42:40 -07:00
|
|
|
)
|
|
|
|
|
|
|
|
users_json = users_get_resp.json
|
2018-11-14 13:12:24 -08:00
|
|
|
self.assertEqual(users_json["avatar"]["imageUrl"], self.user.avatar.image_url)
|
|
|
|
self.assertEqual(users_json["socialMedias"][0]["socialMediaLink"], self.user.social_medias[0].social_media_link)
|
|
|
|
self.assertEqual(users_json["displayName"], self.user.display_name)
|
2018-10-19 22:18:27 -07:00
|
|
|
|
2018-11-14 13:12:24 -08:00
|
|
|
def test_create_user_duplicate_400(self):
|
|
|
|
# self.user is identical to test_user, should throw
|
2018-10-19 22:18:27 -07:00
|
|
|
response = self.app.post(
|
|
|
|
"/api/v1/users/",
|
2018-11-14 13:12:24 -08:00
|
|
|
data=json.dumps(test_user),
|
2018-10-19 22:18:27 -07:00
|
|
|
content_type='application/json'
|
|
|
|
)
|
|
|
|
|
2018-10-22 15:31:33 -07:00
|
|
|
self.assertEqual(response.status_code, 409)
|
2018-10-30 07:40:21 -07:00
|
|
|
|
|
|
|
def test_update_user_remove_social_and_avatar(self):
|
2018-11-13 06:17:06 -08:00
|
|
|
updated_user = animalify(copy.deepcopy(user_schema.dump(self.user)))
|
|
|
|
updated_user["displayName"] = 'new display name'
|
2018-11-13 19:45:55 -08:00
|
|
|
updated_user["avatar"] = {}
|
|
|
|
updated_user["socialMedias"] = []
|
2018-10-30 07:40:21 -07:00
|
|
|
|
|
|
|
user_update_resp = self.app.put(
|
2018-11-13 06:17:06 -08:00
|
|
|
"/api/v1/users/{}".format(self.user.account_address),
|
2018-10-30 07:40:21 -07:00
|
|
|
data=json.dumps(updated_user),
|
2018-11-13 06:17:06 -08:00
|
|
|
headers=self.headers,
|
2018-10-30 07:40:21 -07:00
|
|
|
content_type='application/json'
|
|
|
|
)
|
2018-11-13 06:17:06 -08:00
|
|
|
self.assert200(user_update_resp)
|
2018-10-30 07:40:21 -07:00
|
|
|
|
2018-11-13 06:17:06 -08:00
|
|
|
user_json = user_update_resp.json
|
|
|
|
self.assertFalse(user_json["avatar"])
|
|
|
|
self.assertFalse(len(user_json["socialMedias"]))
|
|
|
|
self.assertEqual(user_json["displayName"], updated_user["displayName"])
|
|
|
|
self.assertEqual(user_json["title"], updated_user["title"])
|
2018-11-13 19:45:55 -08:00
|
|
|
|
|
|
|
def test_update_user_400_when_required_param_not_passed(self):
|
|
|
|
updated_user = animalify(copy.deepcopy(user_schema.dump(self.user)))
|
|
|
|
updated_user["displayName"] = 'new display name'
|
|
|
|
del updated_user["avatar"]
|
|
|
|
user_update_resp = self.app.put(
|
|
|
|
"/api/v1/users/{}".format(self.user.account_address),
|
|
|
|
data=json.dumps(updated_user),
|
|
|
|
headers=self.headers,
|
|
|
|
content_type='application/json'
|
|
|
|
)
|
|
|
|
self.assert400(user_update_resp)
|