예제 #1
0
def create_tp(key=None, secret=None, lp=None, launch_url=None,
              launch_headers=None, tp_class=ToolProvider):
    key = key or generate_client_id()
    secret = secret or generate_token()
    launch_params = LaunchParams()
    if lp is not None:
        launch_params.update(lp)
    launch_url = launch_url or "http://example.edu"
    launch_headers = launch_headers or {}
    return tp_class(key, secret, launch_params, launch_url, launch_headers)
예제 #2
0
    def test_constructor(self):
        lp = LaunchParams()
        self.assertTrue(lp['lti_version'], DEFAULT_LTI_VERSION)
        self.assertTrue(lp['lti_message_type'], 'basic-lti-launch-request')

        lp = LaunchParams({
            'lti_version': 'LTI-foo',
            'lti_message_type': 'bar',
            'resource_link_id': 123
        })
        self.assertTrue(lp['resource_link_id'], 123)
        self.assertTrue(lp['lti_version'], 'LTI-foo')

        self.failUnlessRaises(InvalidLaunchParamError, LaunchParams,
                              {'foo': 'bar'})
예제 #3
0
    def test_constructor(self):
        client_id = generate_client_id()
        client_secret = generate_token()
        tc = ToolConsumer(client_id,
                          client_secret,
                          launch_url='http://example.edu')
        self.assertIsInstance(tc.launch_params, LaunchParams)

        lp = LaunchParams()
        tc = ToolConsumer(client_id,
                          client_secret,
                          launch_url='http://example.edu',
                          params=lp)
        self.assertEqual(tc.launch_params, lp)

        lp_dict = {'resource_link_id': 1}
        tc = ToolConsumer(client_id,
                          client_secret,
                          launch_url='http://example.edu',
                          params=lp_dict)
        self.assertIsInstance(tc.launch_params, LaunchParams)
        self.assertEqual(tc.launch_params._params.get('resource_link_id'), 1)

        # no launch_url should raise exception
        self.failUnlessRaises(InvalidLTIConfigError,
                              ToolConsumer,
                              client_id,
                              client_secret,
                              params=lp_dict)

        # but confirm that 'launch_url' can still be passed in params
        # (backwards compatibility)
        lp_dict['launch_url'] = 'http://example.edu'
        tc = ToolConsumer(client_id, client_secret, params=lp_dict)
        self.assertEqual(tc.launch_url, 'http://example.edu')
예제 #4
0
    def test_dict_behavior(self):

        lp = LaunchParams({'lti_version': 'foo', 'lti_message_type': 'bar'})
        self.assertEqual(len(lp), 2)
        lp.update({'resource_link_id': 1})
        self.assertEqual(len(lp), 3)

        self.failUnlessRaises(InvalidLaunchParamError, lp.update,
                              {'foo': 'bar'})

        self.assertItemsEqual(
            lp.keys(), ['lti_version', 'lti_message_type', 'resource_link_id'])

        self.assertEqual(dict(lp), {
            'lti_version': 'foo',
            'lti_message_type': 'bar',
            'resource_link_id': 1
        })
예제 #5
0
    def test_constructor(self):
        tb = create_tb()
        self.assertIsInstance(tb.launch_params, LaunchParams)

        lp = LaunchParams({'resource_link_id': 1})
        tb = create_tb(lp=lp)
        self.assertEqual(tb.launch_params, lp)

        lp_dict = {'resource_link_id': 3}
        tb = create_tb(lp=lp_dict)
        self.assertEqual(tb.launch_params['resource_link_id'], 3)
예제 #6
0
    def test_list_params(self):

        lp = LaunchParams({'roles': 'foo,bar,baz'})
        self.assertEqual(lp['roles'], ['foo', 'bar', 'baz'])
        self.assertEqual(lp._params['roles'], 'foo,bar,baz')

        lp['roles'] = ['bar', 'baz']
        self.assertEqual(lp['roles'], ['bar', 'baz'])
        self.assertEqual(lp._params['roles'], 'bar,baz')

        lp['roles'] = 'blah, bluh '
        self.assertEqual(lp['roles'], ['blah', 'bluh'])
예제 #7
0
    def test_dict_behavior(self):

        lp = LaunchParams({
            'lti_version': 'foo',
            'lti_message_type': 'bar'
        })
        self.assertEqual(len(lp), 2)
        lp.update({'resource_link_id': 1})
        self.assertEqual(len(lp), 3)

        self.failUnlessRaises(InvalidLaunchParamError, lp.update, {
            'foo': 'bar'
        })

        self.assertItemsEqual(
            lp.keys(),
            ['lti_version', 'lti_message_type', 'resource_link_id']
        )

        self.assertEqual(dict(lp), {
            'lti_version': 'foo',
            'lti_message_type': 'bar',
            'resource_link_id': 1
        })
예제 #8
0
 def test_non_spec_params(self):
     lp = LaunchParams()
     lp.set_non_spec_param('foo', 'bar')
     self.assertEqual(lp.get_non_spec_param('foo'), 'bar')
     self.assertEqual(lp._params['foo'], 'bar')
     self.assertRaises(KeyError, lp.get('foo'))
예제 #9
0
def create_tb(key=None, secret=None, lp=None):
    key = key or generate_client_id()
    secret = secret or generate_token()
    lp = lp or LaunchParams()
    return ToolBase(key, secret, lp)
예제 #10
0
 def test_non_spec_params(self):
     lp = LaunchParams()
     lp.set_non_spec_param('foo', 'bar')
     self.assertEqual(lp.get_non_spec_param('foo'), 'bar')
     self.assertEqual(lp._params['foo'], 'bar')
     self.assertRaises(KeyError, lp.get('foo'))
예제 #11
0
 def test_set_item(self):
     lp = LaunchParams()
     lp['lti_version'] = 'bar'
     self.assertEqual(lp['lti_version'], 'bar')
예제 #12
0
    def test_get_item(self):

        lp = LaunchParams()
        self.assertEqual(lp['lti_version'], DEFAULT_LTI_VERSION)
        with self.assertRaises(KeyError):
            foo = lp['foo']