def mark_notice_route(request, notice_id): """ Mark notice as read or unread. Must be logged in as user, provide a valid ID, and own the notice. Return notice. """ db_conn = request['db_conn'] current_user = get_current_user(request) if not current_user: return abort(401) notice = get_notice({'id': notice_id}, db_conn) if not notice: return abort(404) if notice['user_id'] != current_user['id']: return abort(403) if 'read' not in request['params']: errors = [{ 'name': 'read', 'message': 'You must specify read or unread.', }] elif request['params'].get('read') is True: notice, errors = mark_notice_as_read(notice, db_conn) elif request['params'].get('read') is False: notice, errors = mark_notice_as_unread(notice, db_conn) if len(errors): return 400, { 'errors': errors, 'ref': 'qR4CBtcfcYfWDTqK9JOXXLhO', } return 200, {'notice': deliver_notice(notice, access='private')}
def test_mark(db_conn, session): """ Expect to mark a notice as read. """ notice, errors = insert_notice( db_conn, { 'user_id': user_id, 'kind': 'create_proposal', 'data': { 'user_name': '', 'proposal_name': '', 'entity_kind': '', 'entity_name': '', } }) nid = notice['id'] request = { 'cookies': { 'session_id': session }, 'params': { 'read': True }, 'db_conn': db_conn } code, response = routes.notice.mark_notice_route(request, nid) assert code == 200 assert response['notice']['read'] is True record = get_notice(db_conn, {'id': nid}) assert record['read'] is True assert not errors
def test_deliver_notice(db_conn): create_test_notices(db_conn) notice = get_notice(db_conn, { 'id': notice_a_id }) notice = deliver_notice(notice, access=None) assert notice['body']
def mark_notice_route(request, notice_id): """ Mark notice as read or unread. Must be logged in as user, provide a valid ID, and own the notice. Return notice. """ db_conn = request['db_conn'] current_user = get_current_user(request) if not current_user: return abort(401, 'EWoueZr0TYSccUhdNISK3A') notice = get_notice(db_conn, {'id': notice_id}) if not notice: return abort(404, 'xsNPOqJoRw-aUrFo0RhVoA') if notice['user_id'] != current_user['id']: return abort(403, 'xPkb7MYXRIOaI7HeV9U37A') if 'read' not in request['params']: errors = [{ 'name': 'read', 'message': 'You must specify read or unread.', 'ref': 'bvtS4G4jQnaLlVSLyUXjVg', }] elif request['params'].get('read') is True: notice, errors = mark_notice_as_read(db_conn, notice) elif request['params'].get('read') is False: notice, errors = mark_notice_as_unread(db_conn, notice) if errors: return 400, { 'errors': errors, 'ref': 'FeEtTWJJQv22dTpz8y5fZA', } return 200, {'notice': deliver_notice(notice, access='private')}
def test_get_notice(db_conn): create_test_notices(db_conn) params = { 'id': notice_a_id, } notice = get_notice(db_conn, params) assert notice assert notice['id'] == notice_a_id
def test_get_notice_body(db_conn): create_test_notices(db_conn) notice = get_notice(db_conn, { 'id': notice_a_id }) body = get_notice_body(notice) assert body == ('Doris created a new topic, ' + 'A new topic, for unit Adding numbers.')
def test_mark_notice_as_read(db_conn): create_test_notices(db_conn) notice = get_notice(db_conn, { 'id': notice_a_id }) assert notice notice, errors = mark_notice_as_read(db_conn, notice) assert not errors assert notice assert notice['read'] is True
def test_mark_no_user(db_conn, session): """ Expect to error on not logged in when marking as read. """ notice, errors = insert_notice( db_conn, { 'user_id': user_id, 'kind': 'create_proposal', 'data': { 'user_name': '', 'proposal_name': '', 'entity_kind': '', 'entity_name': '', } }) assert not errors nid = notice['id'] request = {'params': {'read': True}, 'db_conn': db_conn} code, _ = routes.notice.mark_notice_route(request, nid) assert code == 401 record = get_notice(db_conn, {'id': nid}) assert record['read'] is False
def test_mark_not_owned(db_conn, session): """ Expect to error when not own notice when marking as read. """ user_b_uuid = uuid.uuid4() raw_insert_users(db_conn, [{ 'id': user_b_uuid, 'name': 'other', 'email': '*****@*****.**', 'password': '******', }]) notice, errors = insert_notice( db_conn, { 'user_id': user_b_uuid, 'kind': 'create_proposal', 'data': { 'user_name': '', 'proposal_name': '', 'entity_kind': '', 'entity_name': '', } }) assert not errors nid = notice['id'] request = { 'cookies': { 'session_id': session }, 'params': { 'read': True }, 'db_conn': db_conn, } code, _ = routes.notice.mark_notice_route(request, nid) assert code == 403 record = get_notice(db_conn, {'id': nid}) assert record['read'] is False
def test_insert_notice(db_conn): create_test_notices(db_conn) data = { 'user_id': user_uuid, 'kind': 'OMG', 'data': { 'user_name': 'Doris', 'topic_name': 'A new topic', 'entity_kind': 'unit', 'entity_name': 'Adding numbers', } } notice, errors = insert_notice(db_conn, data) assert errors assert not notice data['kind'] = 'create_topic' notice, errors = insert_notice(db_conn, data) assert not errors assert notice got_notice = get_notice(db_conn, { 'id': notice['id'] }) assert got_notice assert notice['id'] == got_notice['id']