Example #1
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()
Example #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()
Example #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)
Example #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)
Example #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
Example #6
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
Example #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
Example #8
0
 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
    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)
Example #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
Example #11
0
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
Example #12
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"]
Example #13
0
 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'])
Example #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"]
Example #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
Example #16
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"]
Example #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
Example #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
Example #19
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
Example #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
Example #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"]
Example #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"]
Example #23
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
Example #24
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"]
Example #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
Example #26
0
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
Example #27
0
 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'] == '*****@*****.**')
Example #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
Example #29
0
 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)
Example #30
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
Example #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
Example #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'
Example #33
0
 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
Example #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")
Example #35
0
 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)
Example #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")
Example #37
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",
        }
Example #38
0
 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
Example #39
0
 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
Example #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",
        }
Example #41
0
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])])
Example #42
0
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])])
Example #43
0
 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)
Example #44
0
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")
Example #45
0
 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')
Example #46
0
 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)
Example #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"]
    }
Example #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])]))
Example #49
0
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())
Example #50
0
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
Example #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'])
Example #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
        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
Example #54
0
  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
Example #55
0
 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
Example #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)