Example #1
0
def jwt_login(request):
    """
    Login using a JWT token, this must be an encrypted JWT.
    :param request: The flask request
    """
    # clear the session entry in the database
    session_storage.clear()
    # also clear the secure cookie data
    session.clear()

    if request.args.get('token') is None:
        raise NoTokenException("Please provide a token")
    token = _jwt_decrypt(request)

    # once we've decrypted the token correct
    # check we have the required user data
    _check_user_data(token)

    # get the hashed user id for eq
    user_id = UserIDGenerator.generate_id(token)
    user_ik = UserIDGenerator.generate_ik(token)

    # store the user id in the session
    session_storage.store_user_id(user_id)
    # store the user ik in the cookie
    session_storage.store_user_ik(user_ik)

    # store the meta data
    metadata = parse_metadata(token)
    logger.bind(tx_id=metadata["tx_id"])

    questionnaire_store = get_questionnaire_store(user_id, user_ik)
    questionnaire_store.metadata = metadata
    questionnaire_store.add_or_update()
    logger.info("user authenticated")
    def jwt_login(self, request):
        """
        Login using a JWT token, this must be an encrypted JWT.
        :param request: The flask request
        """
        # clear the session entry in the database
        session_manager.clear()
        # also clear the secure cookie data
        session.clear()

        if request.args.get(EQ_URL_QUERY_STRING_JWT_FIELD_NAME) is None:
            raise NoTokenException("Please provide a token")
        token = self._jwt_decrypt(request)

        # once we've decrypted the token correct
        # check we have the required user data
        self._check_user_data(token)

        # get the hashed user id for eq
        user_id = UserIDGenerator.generate_id(token)
        user_ik = UserIDGenerator.generate_ik(token)

        # store the user id in the session
        session_manager.store_user_id(user_id)
        # store the user ik in the cookie
        session_manager.store_user_ik(user_ik)

        # store the meta data
        metadata = parse_metadata(token)

        questionnaire_store = get_questionnaire_store(user_id, user_ik)
        questionnaire_store.metadata = metadata
        questionnaire_store.save()

        logger.info("User authenticated with tx_id=%s", metadata["tx_id"])
Example #3
0
 def test_is_valid_fails_invalid_return_by(self):
     jwt = {
         "user_id": "1",
         "form_type": "a",
         "collection_exercise_sid": "test-sid",
         "eq_id": "2",
         "period_id": "3",
         "period_str": "2016-01-01",
         "ref_p_start_date": "2016-12-31",
         "ref_p_end_date": "2016-03-31",
         "ru_ref": "2016-04-04",
         "ru_name": "Apple",
         "return_by": "2016-09-31"
     }
     valid, _ = is_valid_metadata(jwt)
     self.assertTrue(valid)
     with self.assertRaises(InvalidTokenException) as ite:
         parse_metadata(jwt)
     self.assertIn("Incorrect data in token", ite.exception.value)
 def test_is_valid_fails_invalid_return_by(self):
     jwt = {
         "user_id": "1",
         "form_type": "a",
         "collection_exercise_sid": "test-sid",
         "eq_id": "2",
         "period_id": "3",
         "period_str": "2016-01-01",
         "ref_p_start_date": "2016-12-31",
         "ref_p_end_date": "2016-03-31",
         "ru_ref": "2016-04-04",
         "ru_name": "Apple",
         "return_by": "2016-09-31"
     }
     valid, field = is_valid_metadata(jwt)
     self.assertTrue(valid)
     with self.assertRaises(InvalidTokenException) as ite:
         parse_metadata(jwt)
     self.assertIn("Incorrect data in token", ite.exception.value)
Example #5
0
 def test_malformed_tx_id(self):
     jwt = {
         "user_id": "1",
         "form_type": "a",
         "collection_exercise_sid": "test-sid",
         "eq_id": "2",
         "period_id": "3",
         "period_str": "2016-01-01",
         "ref_p_start_date": "2016-02-02",
         "ref_p_end_date": "2016-03-03",
         "ru_ref": "2016-04-04",
         "ru_name": "Apple",
         "return_by": "2016-07-07",
         # one character short
         "tx_id": "83a3db82-bea7-403c-a411-6357ff70f2f"
     }
     valid, _ = is_valid_metadata(jwt)
     self.assertTrue(valid)
     with self.assertRaises(InvalidTokenException) as ite:
         parse_metadata(jwt)
     self.assertIn("Incorrect data in token", ite.exception.value)
 def test_malformed_tx_id(self):
     jwt = {
         "user_id": "1",
         "form_type": "a",
         "collection_exercise_sid": "test-sid",
         "eq_id": "2",
         "period_id": "3",
         "period_str": "2016-01-01",
         "ref_p_start_date": "2016-02-02",
         "ref_p_end_date": "2016-03-03",
         "ru_ref": "2016-04-04",
         "ru_name": "Apple",
         "return_by": "2016-07-07",
         # one character short
         "tx_id": "83a3db82-bea7-403c-a411-6357ff70f2f"
     }
     valid, field = is_valid_metadata(jwt)
     self.assertTrue(valid)
     with self.assertRaises(InvalidTokenException) as ite:
         parse_metadata(jwt)
     self.assertIn("Incorrect data in token", ite.exception.value)
Example #7
0
 def setUp(self):
     super().setUp()
     self.jwt = {
         "user_id": "1",
         "form_type": "a",
         "collection_exercise_sid": "test-sid",
         "eq_id": "2",
         "period_id": "3",
         "period_str": "2016-01-01",
         "ref_p_start_date": "2016-02-02",
         "ref_p_end_date": "2016-03-03",
         "ru_ref": "2016-04-04",
         "ru_name": "Apple",
         "return_by": "2016-07-07",
         "tx_id": "4ec3aa9e-e8ac-4c8d-9793-6ed88b957c2f"
     }
     with self.application.test_request_context():
         self.metadata = parse_metadata(self.jwt)
 def setUp(self):
     super().setUp()
     self.jwt = {
         "user_id": "1",
         "form_type": "a",
         "collection_exercise_sid": "test-sid",
         "eq_id": "2",
         "period_id": "3",
         "period_str": "2016-01-01",
         "ref_p_start_date": "2016-02-02",
         "ref_p_end_date": "2016-03-03",
         "ru_ref": "2016-04-04",
         "ru_name": "Apple",
         "return_by": "2016-07-07",
         "tx_id": "4ec3aa9e-e8ac-4c8d-9793-6ed88b957c2f"
     }
     with self.application.test_request_context():
         self.metadata = parse_metadata(self.jwt)
Example #9
0
import dateutil.parser

from app.data_model.answer_store import AnswerStore
from app.parser.metadata_parser import parse_metadata
from app.questionnaire.location import Location
from app.submitter.converter import convert_answers, DataVersionError
from tests.app.framework.survey_runner_test_case import SurveyRunnerTestCase

metadata = parse_metadata({
    "user_id": "789473423",
    "form_type": "0205",
    "collection_exercise_sid": "test-sid",
    "eq_id": "1",
    "period_id": "2016-02-01",
    "period_str": "2016-01-01",
    "ref_p_start_date": "2016-02-02",
    "ref_p_end_date": "2016-03-03",
    "ru_ref": "432423423423",
    "ru_name": "Apple",
    "return_by": "2016-07-07"
})


class TestConverter(SurveyRunnerTestCase):
    def test_convert_answers(self):
        with self.application.test_request_context():
            user_answer = [create_answer('ABC', '2016-01-01', group_id='group-1', block_id='block-1'),
                           create_answer('DEF', '2016-03-30', group_id='group-1', block_id='block-1')]

            questionnaire = {