示例#1
0
def demo_login(guid):
    """
    Login to a demo as a specific user

    :param {
        "userId": "123"
    }

    :return: {
        "token": "eyJhbGciOi...WT2aGgjY5JHvCsbA"
    }
    """
    data = request.get_json()
    user_id = data.get('userId')
    web_utils.check_null_input((user_id, 'username when logging in'),
                               (guid, 'demo guid when logging in'))

    # Login through the ERP system and create a JWT valid for 2 weeks
    auth_data = user_service.login(guid, user_id)
    auth_data['exp'] = datetime.utcnow() + timedelta(days=14)
    token = web_utils.tokenize(auth_data)
    resp = Response(json.dumps({'token': token}),
                    status=200,
                    mimetype='application/json')

    resp.set_cookie('auth_token', token, httponly=True)
    return resp
    def test_tokenize_and_detokenize(self):
        """Is auth data correctly tokenized and later detokenized?"""

        # Create demo
        demo = test_utils.create_demo()
        demo_json = loads(demo)
        demo_guid = demo_json.get('guid')
        demo_user_id = demo_json.get('users')[0].get('id')

        # Log in user and tokenize auth data
        auth_data = user_service.login(demo_guid, demo_user_id)
        auth_data['exp'] = datetime.utcnow() + timedelta(days=14)
        token = web_utils.tokenize(auth_data)

        # Detokenize auth data
        decrypted_auth_data = web_utils.detokenize(token)

        # Check that decrypted data is equivalent to auth data
        self.assertTrue(auth_data.get('loopback_token') ==
                        decrypted_auth_data.get('loopback_token'))
        self.assertTrue(auth_data.get('exp') ==
                        decrypted_auth_data.get('exp'))
        self.assertTrue(auth_data.get('user').get('id') ==
                        decrypted_auth_data.get('user').get('id'))

        # Destroy demo
        test_utils.delete_demo(demo_guid)
    def test_user_login_success(self):
        """With correct values, is a valid user logged in?"""

        # Log in user
        demo_json = loads(self.demo)
        auth_data = user_service.login(demo_json.get('guid'),
                                       demo_json.get('users')[0].get('id'))

        # TODO: Update to use assertIsInstance(a,b)
        # Check all expected object values are present
        self.assertTrue(auth_data.get('loopback_token'))
        self.assertTrue(auth_data.get('user'))

        user_json = auth_data.get('user')
        self.assertTrue(user_json.get('id'))
        self.assertTrue(user_json.get('demoId'))
        self.assertTrue(user_json.get('username'))
        self.assertTrue(user_json.get('email'))

        if user_json.get('roles'):
            for role_json in user_json.get('roles'):
                self.assertTrue(role_json.get('id'))
                self.assertTrue(role_json.get('name'))
                self.assertTrue(role_json.get('created'))
                self.assertTrue(role_json.get('modified'))
    def test_user_login_success(self):
        """With correct values, is a valid user logged in?"""

        # Log in user
        demo_json = loads(self.demo)
        auth_data = user_service.login(demo_json.get('guid'),
                                       demo_json.get('users')[0].get('id'))

        # TODO: Update to use assertIsInstance(a,b)
        # Check all expected object values are present
        self.assertTrue(auth_data.get('loopback_token'))
        self.assertTrue(auth_data.get('user'))

        user_json = auth_data.get('user')
        self.assertTrue(user_json.get('id'))
        self.assertTrue(user_json.get('demoId'))
        self.assertTrue(user_json.get('username'))
        self.assertTrue(user_json.get('email'))

        if user_json.get('roles'):
            for role_json in user_json.get('roles'):
                self.assertTrue(role_json.get('id'))
                self.assertTrue(role_json.get('name'))
                self.assertTrue(role_json.get('created'))
                self.assertTrue(role_json.get('modified'))
    def test_tokenize_and_detokenize(self):
        """Is auth data correctly tokenized and later detokenized?"""

        # Create demo
        demo = test_utils.create_demo()
        demo_json = loads(demo)
        demo_guid = demo_json.get('guid')
        demo_user_id = demo_json.get('users')[0].get('id')

        # Log in user and tokenize auth data
        auth_data = user_service.login(demo_guid, demo_user_id)
        auth_data['exp'] = datetime.utcnow() + timedelta(days=14)
        token = web_utils.tokenize(auth_data)

        # Detokenize auth data
        decrypted_auth_data = web_utils.detokenize(token)

        # Check that decrypted data is equivalent to auth data
        self.assertTrue(
            auth_data.get('loopback_token') == decrypted_auth_data.get(
                'loopback_token'))
        self.assertTrue(auth_data.get('exp') == decrypted_auth_data.get('exp'))
        self.assertTrue(
            auth_data.get('user').get('id') == decrypted_auth_data.get(
                'user').get('id'))

        # Destroy demo
        test_utils.delete_demo(demo_guid)
示例#6
0
    def test_user_login_success(self):
        """With correct values, is a valid user logged in?"""

        # Log in user
        demo_json = loads(self.demo)
        test_utils.mock_with_file(
            httpretty.POST,
            "http://0.0.0.0:3000/api/v1/Demos/DemoGUID/loginAs",
            "server/tests/mocks/POST_api_v1_Demos_DemoGUID_loginAs_200.json",
            200)
        auth_data = user_service.login(demo_json.get('guid'),
                                       demo_json.get('users')[0].get('id'))

        # TODO: Update to use assertIsInstance(a,b)
        # Check all expected object values are present
        self.assertTrue(auth_data.get('loopback_token'))
        self.assertTrue(auth_data.get('user'))

        user_json = auth_data.get('user')
        self.assertTrue(user_json.get('id'))
        self.assertTrue(user_json.get('demoId'))
        self.assertTrue(user_json.get('username'))
        self.assertTrue(user_json.get('email'))

        if user_json.get('roles'):
            for role_json in user_json.get('roles'):
                self.assertTrue(role_json.get('id'))
                self.assertTrue(role_json.get('name'))
                self.assertTrue(role_json.get('created'))
                self.assertTrue(role_json.get('modified'))
示例#7
0
def demo_login(guid):
    """
    Login to a demo as a specific user

    :param {
        "userId": "123"
    }

    :return: {
        "token": "eyJhbGciOi...WT2aGgjY5JHvCsbA"
    }
    """
    data = request.get_json()
    user_id = data.get('userId')
    web_utils.check_null_input((user_id, 'username when logging in'),
                               (guid, 'demo guid when logging in'))

    # Login through the ERP system and create a JWT valid for 2 weeks
    auth_data = user_service.login(guid, user_id)
    auth_data['exp'] = datetime.utcnow() + timedelta(days=14)
    token = web_utils.tokenize(auth_data)
    resp = Response(json.dumps({'token': token}),
                    status=200,
                    mimetype='application/json')

    resp.set_cookie('auth_token', token, httponly=True)
    return resp
    def setUp(self):
        # Create demo
        self.demo = utils.create_demo()
        demo_json = loads(self.demo)
        demo_guid = demo_json.get('guid')
        demo_user_id = demo_json.get('users')[0].get('id')

        # Log in user
        auth_data = user_service.login(demo_guid, demo_user_id)
        self.loopback_token = auth_data.get('loopback_token')
    def setUp(self):
        # Create demo
        self.demo = demo_service.create_demo()
        demo_json = loads(self.demo)
        demo_guid = demo_json.get('guid')
        demo_user_id = demo_json.get('users')[0].get('id')

        # Log in user
        auth_data = user_service.login(demo_guid, demo_user_id)
        self.loopback_token = auth_data.get('loopback_token')
示例#10
0
    def setUp(self):
        # Create demo
        test_utils.mock_with_file(
            httpretty.POST, "http://0.0.0.0:3000/api/v1/Demos",
            "server/tests/mocks/POST_api_v1_Demos_200.json", 200)
        self.demo = test_utils.create_demo()
        demo_json = loads(self.demo)
        demo_guid = demo_json.get('guid')
        demo_user_id = demo_json.get('users')[0].get('id')

        # Log in user
        auth_data = user_service.login(demo_guid, demo_user_id)
        self.loopback_token = auth_data.get('loopback_token')