コード例 #1
0
ファイル: test_forms.py プロジェクト: Javex/pyramid_crud
 def test_multiple_values(self):
     formdata = MultiDict()
     formdata.add('items', '1')
     formdata.add('items', '2')
     form = self.Form(formdata)
     assert form.items.data == ['1', '2']
     assert form.validate()
コード例 #2
0
 def test_multiple_values(self):
     formdata = MultiDict()
     formdata.add('items', '1')
     formdata.add('items', '2')
     form = self.Form(formdata)
     assert form.items.data == ['1', '2']
     assert form.validate()
コード例 #3
0
 def test_jsonify_multidict(self):
     data = MultiDict()
     data.add('a', 1)
     data.add('a', 2)
     data.add('b', 3)
     json_data = jsonify.encode(data)
     self.assertEqual('{"a": [1, 2], "b": 3}', json_data)
コード例 #4
0
 def test_parse_filter_params(self):
     query_params = MultiDict()
     query_params.add('type', 1)
     query_params.add('type', 2)
     query_params.add('test', 22)
     res = parse_filter_params(query_params, self.filterable)
     self.assertEqual({'type': [1, 2]}, res)
コード例 #5
0
class Utility(object):
    def __init__(self):
        self.accept_headers = MultiDict()
        self.deserializers = {}

    def add_deserializer(self, content_type, callable):
        self.deserializers[content_type] = callable
        self.accept_headers.add('Accept', content_type)

    def deserialize_request_body(self, request):
        content_type = request.content_type
        deserialized = None
        request.response.headers.extend(self.accept_headers)

        if content_type in self.deserializers:
            try:
                deserialized = self.deserializers[content_type](request)
            except HTTPException as http_exc:
                http_exc.headers.extend(self.accept_headers)
                raise
        else:
            raise HTTPUnsupportedMediaType(content_type,
                                           headers=self.accept_headers)

        return deserialized
コード例 #6
0
ファイル: pager.py プロジェクト: aoeztuerk/adhocracy
    def build_params(self, request, facet_values):
        '''
        Build query parameters using the facet_values for this facet
        and the request.

        Returns: a list of (parameter, value) two-tuples
        '''
        params = MultiDict(request.params)

        # removing all ..._facet parameters and add them again
        current_facet_parameters = params.getall(self.request_key)
        if self.request_key in params:
            del params[self.request_key]

        # readd all _facet parameters not related to us
        for parameter in current_facet_parameters:
            name, value = parameter.split(':')
            if name != self.name:
                params.add(self.request_key, parameter)

        # add parameters for our facets
        facet_values = list(set(facet_values))
        for value in facet_values:
            params.add(self.request_key, "%s:%s" % (self.name, value))

        # sanitize and encode
        items = ([(str(key), unicode(value).encode('utf-8')) for
                  (key, value) in params.items()])
        return items
コード例 #7
0
    def build_params(self, request, facet_values):
        '''
        Build query parameters using the facet_values for this facet
        and the request.

        Returns: a list of (parameter, value) two-tuples
        '''
        params = MultiDict(request.params)

        # removing all ..._facet parameters and add them again
        current_facet_parameters = params.getall(self.request_key)
        if self.request_key in params:
            del params[self.request_key]

        # readd all _facet parameters not related to us
        for parameter in current_facet_parameters:
            name, value = parameter.split(':')
            if name != self.name:
                params.add(self.request_key, parameter)

        # add parameters for our facets
        facet_values = list(set(facet_values))
        for value in facet_values:
            params.add(self.request_key, "%s:%s" % (self.name, value))

        # sanitize and encode
        items = ([(str(key), unicode(value).encode('utf-8'))
                  for (key, value) in params.items()])
        return items
コード例 #8
0
ファイル: case.py プロジェクト: rasel6820/qpypi
 def create_request(self,
                    params=None,
                    environ=None,
                    matchdict=None,
                    headers=None,
                    path='/',
                    cookies=None,
                    post=None,
                    **kw):
     if params and not isinstance(params, MultiDict):
         mparams = MultiDict()
         for k, v in params.items():
             if isinstance(v, (list, tuple)):
                 [mparams.add(k, vv) for vv in v]
             else:
                 mparams.add(k, v)
             params = mparams
     rv = DummyRequest(params,
                       environ,
                       headers,
                       path,
                       cookies,
                       post,
                       matchdict=(matchdict or {}),
                       **kw)
     return rv
コード例 #9
0
    def test_diff(self):
        """The diff results page should have a header and a div for each message."""
        fake_file_1 = FakeFieldStorage('added_deleted_changed_1.xml',
                                       PfifXml.XML_ADDED_DELETED_CHANGED_1)
        utils.set_file_for_test(StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_2))
        request = MultiDict({
            'pfif_xml_file_1': fake_file_1,
            'pfif_xml_url_2': 'fake_url',
            'options': 'text_is_case_sensitive'
        })
        response = self.make_webapp_request(
            request, handler_init_method=controller.DiffController)
        response_str = response.out.getvalue()

        # set the test file again because the first one will be at the end, and the
        # xml parser doesn't have to seek(0) on it.
        utils.set_file_for_test(StringIO(PfifXml.XML_ADDED_DELETED_CHANGED_2))
        request.add('options', 'group_messages_by_record')
        grouped_response = self.make_webapp_request(
            request, handler_init_method=controller.DiffController)
        grouped_response_str = grouped_response.out.getvalue()

        # The header should have 'Diff' and 'Messages' in it along with the filename
        # or url.
        # The body should have each of five message types from pfif_object_diff
        for message in [
                'Diff', 'Messages', 'added_deleted_changed_1.xml', 'fake_url',
                'extra', 'missing', 'field', 'record', 'Value', 'changed', 'A',
                'B'
        ]:
            self.assertTrue(
                message in response_str and message in grouped_response_str,
                'The diff was missing the '
                'following message: ' + message + '.  The diff: ' +
                response_str)
コード例 #10
0
class Utility(object):

    def __init__(self):
        self.accept_headers = MultiDict()
        self.deserializers = {}

    def add_deserializer(self, content_type, callable):
        self.deserializers[content_type] = callable
        self.accept_headers.add('Accept', content_type)

    def deserialize_request_body(self, request):
        content_type = request.content_type
        deserialized = None
        request.response.headers.extend(self.accept_headers)

        if content_type in self.deserializers:
            try:
                deserialized = self.deserializers[content_type](request)
            except HTTPException as http_exc:
                http_exc.headers.extend(self.accept_headers)
                raise
        else:
            raise HTTPUnsupportedMediaType(content_type,
                                           headers=self.accept_headers)

        return deserialized
コード例 #11
0
ファイル: helpers.py プロジェクト: the-tosh/boardless-open
def ignore_request_params_fields (request_params):
	result_data = MultiDict()

	for name, value in request_params.items():
		if value != "IGNORE-THIS-FIELD":
			result_data.add(name, value)

	return result_data
コード例 #12
0
ファイル: util_test.py プロジェクト: hypothesis/h
    def test_a_list_field_can_have_a_single_value(self):
        schema = QueryParamSchema()
        params = MultiDict()
        params.add("list_field", "first")

        parsed = validate_query_params(schema, params)

        assert parsed.getall("list_field") == ["first"]
コード例 #13
0
ファイル: test_views.py プロジェクト: Tietoarkisto/kuha
 def test_repeated_argument(self):
     params = MultiDict(verb='a')
     params.add('repeated', 'b')
     params.add('repeated', 'b')
     self.assertRaises(BadArgument,
                       views._check_params,
                       params,
                       ['repeated'])
コード例 #14
0
    def test_a_list_field_can_have_a_single_value(self):
        schema = QueryParamSchema()
        params = MultiDict()
        params.add("list_field", "first")

        parsed = validate_query_params(schema, params)

        assert parsed.getall("list_field") == ["first"]
コード例 #15
0
        def _w(*args, **kwargs):
            page = int(kwargs.pop(own_parameters["page"], 1))
            real_items_per_page = int(
                kwargs.pop(own_parameters['items_per_page'], items_per_page))

            # Iterate over all of the named arguments expected by the function f
            # if any of those arguments have values present in the kwargs dict,
            # add the value to the positional args list, and remove it from the
            # kwargs dict
            argvars = inspect.getargspec(f)[0][1:]
            if argvars:
                args = list(args)
                for i, var in enumerate(args):
                    if i >= len(argvars):
                        break
                    var = argvars[i]
                    if var in kwargs:
                        if i + 1 >= len(args):
                            args.append(kwargs[var])
                        else:
                            args[i + 1] = kwargs[var]
                        del kwargs[var]

            res = f(*args, **kwargs)
            if isinstance(res, dict) and name in res:
                additional_parameters = MultiDict()
                for key, value in request.params.iteritems():
                    if key not in own_parameters:
                        additional_parameters.add(key, value)

                collection = res[name]

                # Use CustomPage if our extra custom arg was provided
                if items_first_page is not None:
                    page_class = CustomPage
                else:
                    page_class = Page

                page = page_class(collection,
                                  page,
                                  items_per_page=real_items_per_page,
                                  items_first_page=items_first_page,
                                  **additional_parameters.dict_of_lists())
                # wrap the pager so that it will render
                # the proper page-parameter
                page.pager = partial(page.pager,
                                     page_param=own_parameters["page"])
                res[name] = page
                # this is a bit strange - it appears
                # as if c returns an empty
                # string for everything it dosen't know.
                # I didn't find that documented, so I
                # just put this in here and hope it works.
                if not hasattr(tmpl_context, 'paginators') or type(
                        tmpl_context.paginators) == str:
                    tmpl_context.paginators = Bunch()
                tmpl_context.paginators[name] = page
            return res
コード例 #16
0
ファイル: util_test.py プロジェクト: hypothesis/h
    def test_it_keeps_only_last_value_for_non_sequence_fields(self):
        schema = QueryParamSchema()
        params = MultiDict()
        params.add("string_field", "first")
        params.add("string_field", "second")

        parsed = validate_query_params(schema, params)

        assert parsed.getall("string_field") == ["second"]
コード例 #17
0
    def test_it_does_not_include_unknown_fields(self):
        schema = QueryParamSchema()
        params = MultiDict()
        params.add("string_field", "include_me")
        params.add("unknown_field", "ignore_me")

        parsed = validate_query_params(schema, params)

        assert "unknown_field" not in parsed
コード例 #18
0
 def get_data(self, compact=True):
     data = MultiDict(self.raw_data) # XXX
     if compact:
         compact_data = MultiDict()
         for key, value in data.iteritems():
             if value:
                 compact_data.add(key, value)
         data = compact_data
     return data
コード例 #19
0
ファイル: stream.py プロジェクト: Lehych/iktomi-cms
 def get_data(self, compact=True):
     data = MultiDict(self.raw_data) # XXX
     if compact:
         compact_data = MultiDict()
         for key, value in data.iteritems():
             if value:
                 compact_data.add(key, value)
         data = compact_data
     return data
コード例 #20
0
        def _w(*args, **kwargs):
            page = int(kwargs.pop(own_parameters["page"], 1))
            real_items_per_page = int(kwargs.pop(own_parameters["items_per_page"], items_per_page))

            # Iterate over all of the named arguments expected by the function f
            # if any of those arguments have values present in the kwargs dict,
            # add the value to the positional args list, and remove it from the
            # kwargs dict
            argvars = inspect.getargspec(f)[0][1:]
            if argvars:
                args = list(args)
                for i, var in enumerate(args):
                    if i >= len(argvars):
                        break
                    var = argvars[i]
                    if var in kwargs:
                        if i + 1 >= len(args):
                            args.append(kwargs[var])
                        else:
                            args[i + 1] = kwargs[var]
                        del kwargs[var]

            res = f(*args, **kwargs)
            if isinstance(res, dict) and name in res:
                additional_parameters = MultiDict()
                for key, value in request.params.iteritems():
                    if key not in own_parameters:
                        additional_parameters.add(key, value)

                collection = res[name]

                # Use CustomPage if our extra custom arg was provided
                if items_first_page is not None:
                    page_class = CustomPage
                else:
                    page_class = Page

                page = page_class(
                    collection,
                    page,
                    items_per_page=real_items_per_page,
                    items_first_page=items_first_page,
                    **additional_parameters.dict_of_lists()
                )
                # wrap the pager so that it will render
                # the proper page-parameter
                page.pager = partial(page.pager, page_param=own_parameters["page"])
                res[name] = page
                # this is a bit strange - it appears
                # as if c returns an empty
                # string for everything it dosen't know.
                # I didn't find that documented, so I
                # just put this in here and hope it works.
                if not hasattr(tmpl_context, "paginators") or type(tmpl_context.paginators) == str:
                    tmpl_context.paginators = Bunch()
                tmpl_context.paginators[name] = page
            return res
コード例 #21
0
    def test_it_keeps_all_values_for_sequence_fields(self):
        schema = QueryParamSchema()
        params = MultiDict()
        params.add("list_field", "first")
        params.add("list_field", "second")

        parsed = validate_query_params(schema, params)

        assert parsed.getall("list_field") == ["first", "second"]
コード例 #22
0
    def test_it_keeps_only_last_value_for_non_sequence_fields(self):
        schema = QueryParamSchema()
        params = MultiDict()
        params.add("string_field", "first")
        params.add("string_field", "second")

        parsed = validate_query_params(schema, params)

        assert parsed.getall("string_field") == ["second"]
コード例 #23
0
ファイル: util_test.py プロジェクト: hypothesis/h
    def test_it_does_not_include_unknown_fields(self):
        schema = QueryParamSchema()
        params = MultiDict()
        params.add("string_field", "include_me")
        params.add("unknown_field", "ignore_me")

        parsed = validate_query_params(schema, params)

        assert "unknown_field" not in parsed
コード例 #24
0
ファイル: util_test.py プロジェクト: hypothesis/h
    def test_it_keeps_all_values_for_sequence_fields(self):
        schema = QueryParamSchema()
        params = MultiDict()
        params.add("list_field", "first")
        params.add("list_field", "second")

        parsed = validate_query_params(schema, params)

        assert parsed.getall("list_field") == ["first", "second"]
コード例 #25
0
def dict2mdict(values):
    "convert dict to multidict"
    muld = MultiDict()
    for key in values:
        if (key in BOOLFIELDS and (values[key] == '' or values[key] == 'False'
                                   or values[key] is None)):
            continue
        muld.add(key, values[key])
    return muld
コード例 #26
0
ファイル: util.py プロジェクト: fuelpress/i.fuel.press
def _dict_to_multidict(dict_):
    """Convert a validated query param dict back to a ``MultiDict``."""
    result = MultiDict()
    for key, value in dict_.items():
        if isinstance(value, list):
            for item in value:
                result.add(key, item)
        else:
            result.add(key, value)
    return result
コード例 #27
0
ファイル: testViews.py プロジェクト: mobyle2/mf-pyramid
 def test_mf_search(self):
     mdict = MultiDict()
     mdict.add('SearchUser[email]', 'other')
     request = testing.DummyRequest(mdict)
     request.matchdict['objname'] = 'user'
     response = mf_search(request)
     #users = json.loads(response.body)
     users = response
     assert(len(users) == 1)
     assert(users[0]['email'] == '*****@*****.**')
コード例 #28
0
def dict2mdict(values):
    "convert dict to multidict"
    muld = MultiDict()
    for key in values:
        if (key in BOOLFIELDS and
            (values[key] == '' or values[key] == 'False'
                or values[key] is None)):
            continue
        muld.add(key, values[key])
    return muld
コード例 #29
0
ファイル: tests.py プロジェクト: Zitrax/Artifakt
 def upload_request(self, files: dict, metadata=None, user=None):
     if metadata is None:
         metadata = '{}'
     fields = MultiDict({'metadata': metadata})
     for name, content in files.items():
         fs = FieldStorage()
         fs.file = BytesIO(content)
         fs.filename = name
         fields.add('file', fs)
     return self.generic_request(post=fields, user=user)
コード例 #30
0
ファイル: conftest.py プロジェクト: wohlfea/learning_journal
def dummy_post(dbtransaction):
    from pyramid.testing import DummyRequest
    from webob.multidict import MultiDict
    req = DummyRequest()
    req.method = 'POST'
    md = MultiDict()
    md.add('title', 'dummy title')
    md.add('text', 'dummy text')
    req.POST = md
    return req
コード例 #31
0
def dummy_post(dbtransaction):
    from pyramid.testing import DummyRequest
    from webob.multidict import MultiDict
    req = DummyRequest()
    req.method = 'POST'
    md = MultiDict()
    md.add('title', 'dummy title')
    md.add('text', 'dummy text')
    req.POST = md
    return req
コード例 #32
0
def test_add_entry_view_POST(dbtransaction):
    """Test for add entry view dictionary."""
    from pyramid.testing import DummyRequest
    from webob.multidict import MultiDict
    req = testing.DummyRequest()
    req.method = "POST"
    md = MultiDict()
    md.add('title', 'test_title')
    req.POST = md
    dic = add_entry_view(req)
    assert dic['form'].title.data == 'test_title'
コード例 #33
0
ファイル: unit_test_helpers.py プロジェクト: CERT-Polska/n6
 def __make_request_params(kwargs):
     params = MultiDict()
     for key, val in kwargs.items():
         assert isinstance(key, str)
         if isinstance(val, str):
             params[key] = val
         else:
             assert isinstance(val, (list, tuple))
             for v in val:
                 assert isinstance(v, str)
                 params.add(key, v)
     return params
コード例 #34
0
def test_make_page_url():
    purl = paginate.make_page_url("/articles", {}, 2)
    eq_(purl, "/articles?page=2")
    purl = paginate.make_page_url("/articles", {"foo": "bar"}, 2)
    eq_(purl, "/articles?foo=bar&page=2")
    params = {"foo": "bar", "page": "1"}
    purl = paginate.make_page_url("/articles", params, 2)
    eq_(purl, "/articles?foo=bar&page=2")
    params = MultiDict({"foo": "bar", "page": "1"})
    params.add("foo", "bar2")
    purl = paginate.make_page_url("/articles", params, 2)
    eq_(purl, "/articles?foo=bar&foo=bar2&page=2")
コード例 #35
0
ファイル: tests.py プロジェクト: neontribe/PlingBack
 def test_remove_multiple_deterrent_attributes(self):
     params = MultiDict({'pling_id':'pling_id_value',
                         'feedback_attribute':'deterrent',
                         'deterrent_value':'Cost',
                         'plingback_type':'automated_testing'})
     params.add('deterrent_value', 'Transport')
     tf = self.configure_triple_factory('/api/plingbacks',
                                        params=params)
     tf.add_attribute()
     self.failUnless(len([x for x in tf.request.context.store]) == 2)
     tf.remove_attribute('deterrent')
     self.failUnless(len([x for x in tf.request.context.store]) == 0)
コード例 #36
0
def test_make_page_url():
    purl = paginate.make_page_url("/articles", {}, 2)
    eq_(purl, "/articles?page=2")
    purl = paginate.make_page_url("/articles", {"foo": "bar"}, 2)
    eq_(purl, "/articles?foo=bar&page=2")
    params = {"foo": "bar", "page": "1"}
    purl = paginate.make_page_url("/articles", params, 2)
    eq_(purl, "/articles?foo=bar&page=2")
    params = MultiDict({"foo": "bar", "page": "1"})
    params.add("foo", "bar2")
    purl = paginate.make_page_url("/articles", params, 2)
    eq_(purl, "/articles?foo=bar&foo=bar2&page=2")
コード例 #37
0
ファイル: util_test.py プロジェクト: hypothesis/h
    def test_it_deserializes_params(self):
        schema = QueryParamSchema()
        params = MultiDict()
        params.add("string_field", "test")

        parsed = validate_query_params(schema, params)

        assert parsed == {
            "int_field": 0,
            "string_field": "test",
            "list_field": None,
            "enum_field": "up",
        }
コード例 #38
0
ファイル: testViews.py プロジェクト: mobyle2/mf-pyramid
 def test_mf_edit_forbidden(self):
     a_user = connection.User.find_one({'email': '*****@*****.**'})
     mdict = MultiDict()
     mdict.add('User[name]', 'Tommy')
     request = testing.DummyRequest(mdict)
     request.matchdict['objname'] = 'user'
     request.matchdict['id'] = a_user['_id']
     try:
         mf_edit(request)
     except HTTPForbidden:
         pass
         return
     raise HTTPForbidden
コード例 #39
0
ファイル: case.py プロジェクト: soulshake/pyvac
 def create_request(self, params=None, environ=None, matchdict=None,
                    headers=None, path='/', cookies=None, post=None, **kw):
     if params and not isinstance(params, MultiDict):
         mparams = MultiDict()
         for k, v in params.items():
             if hasattr(v, '__iter__'):
                 [mparams.add(k, vv) for vv in v]
             else:
                 mparams.add(k, v)
             params = mparams
     rv = DummyRequest(params, environ, headers, path, cookies,
                       post, matchdict=(matchdict or {}), **kw)
     return rv
コード例 #40
0
    def test_it_deserializes_params(self):
        schema = QueryParamSchema()
        params = MultiDict()
        params.add("string_field", "test")

        parsed = validate_query_params(schema, params)

        assert parsed == {
            "int_field": 0,
            "string_field": "test",
            "list_field": None,
            "enum_field": "up",
        }
コード例 #41
0
ファイル: test_misc.py プロジェクト: xuweiwei2011/webob
def test_multidict():
    d = MultiDict(a=1, b=2)
    assert d['a'] == 1
    assert d.getall('c') == []

    d.add('a', 2)
    assert d['a'] == 2
    assert d.getall('a') == [1, 2]

    d['b'] = 4
    assert d.getall('b') == [4]
    assert list(d.keys()) == ['a', 'a', 'b']
    assert list(d.items()) == [('a', 1), ('a', 2), ('b', 4)]
    assert d.mixed() == {'a': [1, 2], 'b': 4}

    # test getone

    # KeyError: "Multiple values match 'a': [1, 2]"
    with pytest.raises(KeyError):
        d.getone('a')

    assert d.getone('b') == 4
    # KeyError: "Key not found: 'g'"
    with pytest.raises(KeyError):
        d.getone('g')

    assert d.dict_of_lists() == {'a': [1, 2], 'b': [4]}
    assert 'b' in d
    assert 'e' not in d
    d.clear()
    assert 'b' not in d
    d['a'] = 4
    d.add('a', 5)
    e = d.copy()
    assert 'a' in e
    e.clear()
    e['f'] = 42
    d.update(e)
    assert d == MultiDict([('a', 4), ('a', 5), ('f', 42)])
    f = d.pop('a')
    assert f == 4
    assert d['a'] == 5

    assert d.pop('g', 42) == 42
    with pytest.raises(KeyError):
        d.pop('n')
    # TypeError: pop expected at most 2 arguments, got 3
    with pytest.raises(TypeError):
        d.pop(4, 2, 3)
    d.setdefault('g', []).append(4)
    assert d == MultiDict([('a', 5), ('f', 42), ('g', [4])])
コード例 #42
0
ファイル: test_misc.py プロジェクト: adamchainz/webob
def test_multidict():
    d = MultiDict(a=1, b=2)
    assert d['a'] == 1
    assert d.getall('c') == []

    d.add('a', 2)
    assert d['a'] == 2
    assert d.getall('a') == [1, 2]

    d['b'] = 4
    assert d.getall('b') == [4]
    assert list(d.keys()) == ['a', 'a', 'b']
    assert list(d.items()) == [('a', 1), ('a', 2), ('b', 4)]
    assert d.mixed() == {'a': [1, 2], 'b': 4}

    # test getone

    # KeyError: "Multiple values match 'a': [1, 2]"
    with pytest.raises(KeyError):
        d.getone('a')

    assert d.getone('b') == 4
    # KeyError: "Key not found: 'g'"
    with pytest.raises(KeyError):
        d.getone('g')

    assert d.dict_of_lists() == {'a': [1, 2], 'b': [4]}
    assert 'b' in d
    assert 'e' not in d
    d.clear()
    assert 'b' not in d
    d['a'] = 4
    d.add('a', 5)
    e = d.copy()
    assert 'a' in e
    e.clear()
    e['f'] = 42
    d.update(e)
    assert d == MultiDict([('a', 4), ('a', 5), ('f', 42)])
    f = d.pop('a')
    assert f == 4
    assert d['a'] == 5

    assert d.pop('g', 42) == 42
    with pytest.raises(KeyError):
        d.pop('n')
    # TypeError: pop expected at most 2 arguments, got 3
    with pytest.raises(TypeError):
        d.pop(4, 2, 3)
    d.setdefault('g', []).append(4)
    assert d == MultiDict([('a', 5), ('f', 42), ('g', [4])])
コード例 #43
0
ファイル: tests.py プロジェクト: neontribe/PlingBack
 def test_add_multiple_deterrent_attribute_with_js_list(self):
     params = MultiDict({'pling_id':'pling_id_value',
                         'feedback_attribute':'deterrent',
                         'deterrent_value[]':'Cost',
                         'plingback_type':'automated_testing'})
     params.add('deterrent_value[]', 'Transport')
     tf = self.configure_triple_factory('/api/plingbacks',
                                        params)
     
     tf.add_attribute()
     res = tf.request.context.query("SELECT ?val WHERE { ?pb <%s> ?val }" % (ns['PBO']['deterrent']))
     self.failUnless('Cost' in [str(x) for x in res])
     self.failUnless('Transport' in [str(x) for x in res])
     self.failUnless(len([x for x in tf.request.context.store]) == 2)
コード例 #44
0
ファイル: testgetplayqueue.py プロジェクト: nicfit/unsonic
def testGetPlayQueue(session):
    md = MultiDict()
    md.add("id", "tr-1")
    md.add("id", "tr-2")
    md.add("id", "tr-3")
    md.add("current", "tr-2")
    md.add("position", "32000")
    cmd = buildCmd(session, SavePlayQueue, md)
    checkResp(cmd.req, cmd())

    cmd = buildCmd(session, GetPlayQueue, {})
    resp = checkResp(cmd.req, cmd())
    pq = resp.find("{http://subsonic.org/restapi}playQueue")
    assert pq is not None
    assert pq.get("changed")
    assert pq.get("changedBy") == cmd.req.user_agent
    assert pq.get("current") == "tr-2"
    assert pq.get("position") == "32000"
    assert pq.get("username") == "test"
    for entry in pq.iter("{http://subsonic.org/restapi}entry"):
        assert entry.get("album")
        assert entry.get("artist")
        assert entry.get("bitRate")
        assert entry.get("contentType")
        assert entry.get("discNumber")
        assert entry.get("duration")
        assert entry.get("isDir")
        assert entry.get("isVideo")
コード例 #45
0
ファイル: testViews.py プロジェクト: mobyle2/mf-pyramid
 def test_mf_edit(self):
     a_user = connection.User.find_one({'email': '*****@*****.**'})
     mdict = MultiDict()
     mdict.add('User[name]', 'Alfred')
     request = testing.DummyRequest(mdict)
     request.matchdict['objname'] = 'user'
     request.matchdict['id'] = a_user['_id']
     response = mf_edit(request)
     #res = json.loads(response.body)
     res = response
     assert(res['status'] == 0)
     assert(res['object'] == 'user')
     assert(res['user']['name'] == 'Alfred')
     a_user = connection.User.find_one({'email': '*****@*****.**'})
     assert(a_user['name'] == 'Alfred')
コード例 #46
0
ファイル: testViews.py プロジェクト: mobyle2/mf-pyramid
 def test_mf_add(self):
     #  request = [("User[name]","sample"),
     #  ("User[email]","*****@*****.**")]
     mdict = MultiDict()
     mdict.add('User[email]', 'test@add')
     mdict.add('User[name]', 'testadd')
     request = testing.DummyRequest(mdict)
     request.matchdict['objname'] = 'user'
     response = mf_add(request)
     #res = json.loads(response.body)
     res = response
     assert(res['status'] == 0)
     assert(res['object'] == 'user')
     assert(res['user']['email'] == 'test@add')
     a_user = connection.User.find_one({'email': 'test@add'})
     assert (a_user is not None)
コード例 #47
0
def test_form_data_request() -> None:
    """Test that request.POST is used as the body in case of form-data."""
    multi_dict = MultiDict()
    multi_dict.add("key1", "value1")
    multi_dict.add("key2", "value2.1")
    multi_dict.add("key2", "value2.2")
    pyramid_request = DummyRequest(path="/foo", post=multi_dict)
    pyramid_request.matched_route = DummyRoute(name="foo", pattern="/foo")
    pyramid_request.content_type = "multipart/form-data"

    openapi_request = PyramidOpenAPIRequestFactory.create(pyramid_request)

    assert openapi_request.body == {
        "key1": "value1",
        "key2": ["value2.1", "value2.2"]
    }
コード例 #48
0
def test_multidict():
    d = MultiDict(a=1, b=2)
    eq(d['a'], 1)
    eq(d.getall('c'), [])

    d.add('a', 2)
    eq(d['a'], 2)
    eq(d.getall('a'), [1, 2])

    d['b'] = 4
    eq(d.getall('b'), [4])
    eq(list(d.keys()), ['a', 'a', 'b'])
    eq(list(d.items()), [('a', 1), ('a', 2), ('b', 4)])
    eq(d.mixed(), {'a': [1, 2], 'b': 4})

    # test getone

    # KeyError: "Multiple values match 'a': [1, 2]"
    assert_raises(KeyError, d.getone, 'a')
    eq(d.getone('b'), 4)
    # KeyError: "Key not found: 'g'"
    assert_raises(KeyError, d.getone, 'g')

    eq(d.dict_of_lists(), {'a': [1, 2], 'b': [4]})
    assert 'b' in d
    assert 'e' not in d
    d.clear()
    assert 'b' not in d
    d['a'] = 4
    d.add('a', 5)
    e = d.copy()
    assert 'a' in e
    e.clear()
    e['f'] = 42
    d.update(e)
    eq(d, MultiDict([('a', 4), ('a', 5), ('f', 42)]))
    f = d.pop('a')
    eq(f, 4)
    eq(d['a'], 5)


    eq(d.pop('g', 42), 42)
    assert_raises(KeyError, d.pop, 'n')
    # TypeError: pop expected at most 2 arguments, got 3
    assert_raises(TypeError, d.pop, 4, 2, 3)
    d.setdefault('g', []).append(4)
    eq(d, MultiDict([('a', 5), ('f', 42), ('g', [4])]))
コード例 #49
0
ファイル: testsaveplayqueue.py プロジェクト: nicfit/unsonic
def testSavePlayQueue(session):
    md = MultiDict()
    md.add("id", "tr-1")
    md.add("id", "tr-2")
    md.add("id", "tr-3")
    md.add("current", "tr-2")
    md.add("position", "32000")
    cmd = buildCmd(session, SavePlayQueue, md)
    checkResp(cmd.req, cmd())
コード例 #50
0
ファイル: __init__.py プロジェクト: nicfit/unsonic
def buildCmd(session, klass, params={}, username="******"):
    request = testing.DummyRequest()
    request.context = testing.DummyResource()
    if isinstance(params, dict):
        md = MultiDict()
        for key, val in params.items():
            md.add(key, val)
    elif isinstance(params, MultiDict):
        md = params
    else:
        raise Exception("Invalid params class type")
    request.params = NestedMultiDict(md)
    request.authed_user = models.getUserByName(session, username)
    request.user_agent = "Test/1.0 (X11; Linux x86_64) Test/1.0 Test/1.0"
    cmd = klass(None, request, session=session)
    cmd.settings = {"mishmash.paths": "Music: test/music"}
    return cmd
コード例 #51
0
 def test_addpackmod_view(self):
     """ Ensure the add pack mod view works. """
     # Create dummy mods
     mod = create_mod(self.contributor, name='aMod').save()
     mod2 = create_mod(self.contributor, name='bMod').save()
     # Create dummy pack
     pack = create_pack(self.contributor).save()
     # Create request
     data = MultiDict()
     data.add('mods', mod.id)
     data.add('mods', mod2.id)
     request = matchrequest(id=pack.id, params=data)
     # Run
     self.makeOne(request).addpackmod()
     # Check it
     pack.reload()
     self.assertIn(mod, pack['mods'])
     self.assertIn(mod2, pack['mods'])
コード例 #52
0
def add_to_parameters(key: object,
                      values: Union[list, object],
                      multidictio: MultiDict,
                      length: int = 1) -> MultiDict:
    """
    this function add a parameter to the parameter multidict for SLV API calls

    :param key: name of the parameter as str
    :param values: value or values corresponding to that parameter. If multiple values format must be a list
    :param multidictio: the parameter multidict
    :param length: number of parameters
    :return: the output parameter multidict
    """
    if type(values) is list:  # checking input types
        for elt in values:  # add several deviceId to param
            multidictio.add(key, elt)
    elif type(values):  # checking input types
        for i in range(0, length):
            multidictio.add(key, values)  # add only one deviceId to param
    return multidictio
コード例 #53
0
        def _w(*args, **kwargs):
            page = int(kwargs.pop(own_parameters["page"], 1))
            real_items_per_page = int(
                kwargs.pop(own_parameters['items_per_page'], items_per_page))
            argvars = inspect.getargspec(f)[0][1:]
            if argvars:
                args = list(args)
                for i, var in enumerate(args):
                    if i >= len(argvars):
                        break
                    var = argvars[i]
                    if var in kwargs:
                        args[i] = kwargs[var]
                        del kwargs[var]

            res = f(*args, **kwargs)
            if isinstance(res, dict) and name in res:
                additional_parameters = MultiDict()
                for key, value in request.str_params.iteritems():
                    if key not in own_parameters:
                        additional_parameters.add(key, value)

                collection = res[name]
                page = Page(collection,
                            page,
                            items_per_page=real_items_per_page,
                            **additional_parameters.dict_of_lists())
                # wrap the pager so that it will render
                # the proper page-parameter
                page.pager = partial(page.pager,
                                     page_param=own_parameters["page"])
                res[name] = page
                # this is a bit strange - it appears
                # as if c returns an empty
                # string for everything it dosen't know.
                # I didn't find that documented, so I
                # just put this in here and hope it works.
                if not hasattr(c, 'paginators') or type(c.paginators) == str:
                    c.paginators = Bunch()
                c.paginators[name] = page
            return res
コード例 #54
0
ファイル: tests.py プロジェクト: Thisisdotme/thisis.me
  def _create_multidict(self):
    result = MultiDict()
    result.add('hub.mode', 'subscribe')
    result.add('hub.challenge', 'secret')
    result.add('hub.verify_token', self.verify_token)

    return result
コード例 #55
0
ファイル: form.py プロジェクト: kalloc/insanities-testing
 def get_data(self, compact=True):
     '''
     Returns data representing current state of the form. While
     Form.raw_data may contain alien fields and invalid data, this method
     returns only valid fields that belong to this form only. It's designed
     to pass somewhere current state of the form (as query string or by
     other means).
     '''
     # Dirty hack due to lame (more convenient in cost of flexibility)
     # interface of Field.set_raw_value()
     raw_data, self.raw_data = self.raw_data, MultiDict()
     for field in self.fields:
         raw_value = field.from_python(self.python_data[field.name])
         field.set_raw_value(raw_value)
     data, self.raw_data = self.raw_data, raw_data
     if compact:
         compact_data = MultiDict()
         for key in data:
             values = filter(None, data.getall(key))
             for value in values:
                 compact_data.add(key, value)
         data = compact_data
     return data
コード例 #56
0
    def testDictToQs(self):
        def echo(environ, start_response):
            r = Request(environ)
            return Response(r.query_string)(environ, start_response)

        tc = testing.TestClient(pipeline=echo)
        TM = u"\u2122"
        d = MultiDict()
        d.add("a", 1)
        d.add("a", 2)
        d.add("a", 3)
        d.add("b", u"Nike %s" % TM)
        tc.get("/", query_string=d)