def test_init(self): request = Request('plugin://my.plugin.id/home/?foo=bar&biz=buzz', '0') self.assertEqual(request.url, 'plugin://my.plugin.id/home/?foo=bar&biz=buzz') self.assertEqual(request.handle, 0) self.assertEqual(request.query_string, 'foo=bar&biz=buzz') self.assertEqual(request.args, {'foo': ['bar'], 'biz': ['buzz']}) self.assertEqual(request.scheme, 'plugin') self.assertEqual(request.netloc, 'my.plugin.id') self.assertEqual(request.path, '/home/')
def test_pickled_qs_args(self): request = Request( 'plugin://plugin.video.helloxbmc/?foo=I3%0A.&_pickled=foo', '0') self.assertEqual( request.url, 'plugin://plugin.video.helloxbmc/?foo=I3%0A.&_pickled=foo') self.assertEqual(request.handle, 0) self.assertEqual(request.query_string, 'foo=I3%0A.&_pickled=foo') self.assertEqual(request.args, {'foo': [3]}) self.assertEqual(request.scheme, 'plugin') self.assertEqual(request.netloc, 'plugin.video.helloxbmc') self.assertEqual(request.path, '/')
def test_init2(self): '''Bug in urlparse for the following url. The netloc is '' and the path is incorrectly reported as 'my.plugin.id' ''' request = Request('plugin://my.plugin.id/?foo=bar&biz=buzz', '0') self.assertEqual(request.url, 'plugin://my.plugin.id/?foo=bar&biz=buzz') self.assertEqual(request.handle, 0) self.assertEqual(request.query_string, 'foo=bar&biz=buzz') self.assertEqual(request.args, {'foo': ['bar'], 'biz': ['buzz']}) self.assertEqual(request.scheme, 'plugin') self.assertEqual(request.netloc, 'my.plugin.id') self.assertEqual(request.path, '/')
def _parse_request(self, url=None, handle=None): '''Handles setup of the plugin state, including request arguments, handle, mode. This method never needs to be called directly. For testing, see plugin.test() ''' # To accomdate self.redirect, we need to be able to parse a full url as # well if url is None: url = sys.argv[0] if len(sys.argv) == 3: url += sys.argv[2] if handle is None: handle = sys.argv[1] return Request(url, handle)