Merge lp:~barry/mailman.client/bilingual into lp:mailman.client
- bilingual
- Merge into trunk
Proposed by
Barry Warsaw
Status: | Merged |
---|---|
Merged at revision: | 60 |
Proposed branch: | lp:~barry/mailman.client/bilingual |
Merge into: | lp:mailman.client |
Diff against target: |
6418 lines (+4561/-1012) 23 files modified
.bzrignore (+3/-0) MANIFEST.in (+2/-2) README.rst (+1/-2) TESTING.rst (+90/-0) bin/test (+0/-35) distribute_setup.py (+0/-477) setup.py (+11/-13) setup_helpers.py (+20/-19) src/__init__.py (+1/-1) src/mailmanclient/NEWS.rst (+6/-2) src/mailmanclient/README.rst (+3/-4) src/mailmanclient/__init__.py (+2/-2) src/mailmanclient/_client.py (+100/-71) src/mailmanclient/docs/using.rst (+130/-111) src/mailmanclient/testing/documentation.py (+84/-0) src/mailmanclient/testing/nose.py (+129/-0) src/mailmanclient/tests/data/tape.yaml (+3905/-0) src/mailmanclient/tests/test_docs.py (+0/-127) src/mailmanclient/tests/test_domain.py (+47/-0) src/mailmanclient/tests/utils.py (+0/-144) template.py (+2/-2) tox.ini (+15/-0) unittest.cfg (+10/-0) |
To merge this branch: | bzr merge lp:~barry/mailman.client/bilingual |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Florian Fuchs | Pending | ||
Review via email: mp+245537@code.launchpad.net |
Commit message
Description of the change
mailmanclient's test suite no longer imports from the Mailman 3 code; it only uses the REST API.
It now uses `tox` to run the test suite against multiple versions of Python, and nose2 as the test runner.
Drop the use of distribute since it's been merged with setuptools.
Port to Python 3 (I've tested against 3.4 and 2.7 but I don't have a 2.6, 3.2, or 3.3 environment).
Added support for the new `queues` resource (py3 MM3 branch only; merged RSN).
Removed some unnecessary files and code; cleaned up some other stuff.
README.txt -> README.rst
using.txt -> using.rst
NEWS.txt -> NEWS.rst
Added a TESTING.rst file.
To post a comment you must log in.
Revision history for this message
Florian Fuchs (flo-fuchs) wrote : | # |
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file '.bzrignore' |
2 | --- .bzrignore 2010-12-23 18:07:32 +0000 |
3 | +++ .bzrignore 2015-01-04 23:44:27 +0000 |
4 | @@ -1,3 +1,6 @@ |
5 | build |
6 | dist |
7 | mailman.client.egg-info |
8 | +.tox |
9 | +__pycache__ |
10 | +*.egg-info |
11 | |
12 | === modified file 'MANIFEST.in' |
13 | --- MANIFEST.in 2010-12-23 16:29:39 +0000 |
14 | +++ MANIFEST.in 2015-01-04 23:44:27 +0000 |
15 | @@ -1,4 +1,4 @@ |
16 | -include *.py |
17 | -global-include *.txt |
18 | +include *.py MANIFEST.in |
19 | +global-include *.txt *.rst *.yaml |
20 | include Makefile |
21 | prune _build |
22 | |
23 | === renamed file 'README.txt' => 'README.rst' |
24 | --- README.txt 2010-12-26 21:22:12 +0000 |
25 | +++ README.rst 2015-01-04 23:44:27 +0000 |
26 | @@ -41,9 +41,8 @@ |
27 | You may download the latest version of the package from the Python |
28 | `Cheese Shop`_ or from Launchpad_. |
29 | |
30 | -You can also install it via ``easy_install`` or ``pip``. |
31 | +You can also install it via ``pip``. |
32 | |
33 | - % sudo easy_install mailman.client |
34 | % sudo pip install mailman.client |
35 | |
36 | See the Launchpad project page for access to the Bazaar branch, bug report, |
37 | |
38 | === added file 'TESTING.rst' |
39 | --- TESTING.rst 1970-01-01 00:00:00 +0000 |
40 | +++ TESTING.rst 2015-01-04 23:44:27 +0000 |
41 | @@ -0,0 +1,90 @@ |
42 | +====================== |
43 | +Running the test suite |
44 | +====================== |
45 | + |
46 | +The test suite is run with the `tox`_ tool, which allows it to be run against |
47 | +multiple versions of Python. There are two modes to the test suite: |
48 | + |
49 | + * *Record mode* which is used to record the HTTP traffic against a live |
50 | + Mailman 3 REST server. |
51 | + * *Replay mode* which allows you to run the test suite off-line, without |
52 | + running the REST server. |
53 | + |
54 | +Whenever you add tests for other parts of the REST API, you need to run the |
55 | +suite once in record mode to generate the YAML file of HTTP requests and |
56 | +responses. |
57 | + |
58 | +Then you can run the test suite in replay mode as often as you want, and |
59 | +Mailman 3 needn't even be installed on your system. |
60 | + |
61 | +Since this branch ships with a recording file, you don't need to run in record |
62 | +mode to start with. |
63 | + |
64 | + |
65 | +Replay mode |
66 | +=========== |
67 | + |
68 | +To run the test suite in replay mode (the default), just run the following:: |
69 | + |
70 | + $ tox |
71 | + |
72 | +This will attempt to run the test suite against Python 2.6, 2.7, 3.2, 3.3, and |
73 | +3.4, or whatever combination of those that are available on your system. |
74 | + |
75 | + |
76 | +Record mode |
77 | +=========== |
78 | + |
79 | +Start by branching the Mailman 3 code base, then you should install it into a |
80 | +virtual environment. The easiest way to do this is with `tox`:: |
81 | + |
82 | + $ tox --notest -r |
83 | + |
84 | +Now, use the virtual environment that `tox` creates to create a template `var` |
85 | +directory in the current directory:: |
86 | + |
87 | + $ .tox/py34/bin/mailman info |
88 | + |
89 | +Now you need to modify the ``var/etc/mailman.cfg`` configuration file, so that |
90 | +it contains the following:: |
91 | + |
92 | + [devmode] |
93 | + enabled: yes |
94 | + recipient: you@yourdomain.com |
95 | + |
96 | + [mta] |
97 | + smtp_port: 9025 |
98 | + lmtp_port: 9024 |
99 | + incoming: mailman.testing.mta.FakeMTA |
100 | + |
101 | + [webservice] |
102 | + port: 9001 |
103 | + |
104 | +Now you can start Mailman 3:: |
105 | + |
106 | + $ .tox/py34/bin/mailman start |
107 | + |
108 | +Back in your ``mailmanclient`` branch, run the test suite in record mode:: |
109 | + |
110 | + $ tox -e record |
111 | + |
112 | +You should now have an updated recording file (``tape.yaml``). |
113 | + |
114 | +If you find you need to re-run the test suite, you *must* first stop the |
115 | +Mailman REST server, and then delete the ``mailman.db`` file, since it |
116 | +contains state that will mess up the ``mailmanclient`` test suite:: |
117 | + |
118 | + $ cd <mailman3-branch> |
119 | + $ .tox/py34/bin/mailman stop |
120 | + $ rm -f var/data/mailman.db |
121 | + $ .tox/py34/bin/mailman start |
122 | + |
123 | + $ cd <mailmanclient-branch> |
124 | + $ tox -e record |
125 | + |
126 | +Once you're done recording the HTTP traffic, you can stop the Mailman 3 server |
127 | +and you won't need it again. It's a good idea to commit the ``tape.yaml`` |
128 | +changes for other users of your branch. |
129 | + |
130 | + |
131 | +.. _`tox`: https://testrun.org/tox/latest/ |
132 | |
133 | === removed directory 'bin' |
134 | === removed file 'bin/test' |
135 | --- bin/test 2014-11-24 10:25:10 +0000 |
136 | +++ bin/test 1970-01-01 00:00:00 +0000 |
137 | @@ -1,35 +0,0 @@ |
138 | -#!/usr/bin/env python |
139 | -# Copyright (C) 2010-2013 by the Free Software Foundation, Inc. |
140 | -# |
141 | -# This file is part of mailman.client. |
142 | -# |
143 | -# mailman.client is free software: you can redistribute it and/or modify it |
144 | -# under the terms of the GNU Lesser General Public License as published by the |
145 | -# Free Software Foundation, version 3 of the License. |
146 | -# |
147 | -# mailman.client is distributed in the hope that it will be useful, but |
148 | -# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
149 | -# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public |
150 | -# License for more details. |
151 | -# |
152 | -# You should have received a copy of the GNU Lesser General Public License |
153 | -# along with mailman.client. If not, see <http://www.gnu.org/licenses/>. |
154 | - |
155 | -"""Test runner.""" |
156 | - |
157 | -from __future__ import absolute_import, unicode_literals |
158 | - |
159 | -__metaclass__ = type |
160 | - |
161 | - |
162 | -import os |
163 | -import sys |
164 | -import unittest |
165 | - |
166 | -from mailmanclient.tests.test_docs import additional_tests |
167 | - |
168 | - |
169 | -if __name__ == '__main__': |
170 | - suite = additional_tests() |
171 | - runner = unittest.TextTestRunner(verbosity=2) |
172 | - runner.run(suite) |
173 | |
174 | === removed file 'distribute_setup.py' |
175 | --- distribute_setup.py 2010-12-23 16:29:39 +0000 |
176 | +++ distribute_setup.py 1970-01-01 00:00:00 +0000 |
177 | @@ -1,477 +0,0 @@ |
178 | -#!python |
179 | -"""Bootstrap distribute installation |
180 | - |
181 | -If you want to use setuptools in your package's setup.py, just include this |
182 | -file in the same directory with it, and add this to the top of your setup.py:: |
183 | - |
184 | - from distribute_setup import use_setuptools |
185 | - use_setuptools() |
186 | - |
187 | -If you want to require a specific version of setuptools, set a download |
188 | -mirror, or use an alternate download directory, you can do so by supplying |
189 | -the appropriate options to ``use_setuptools()``. |
190 | - |
191 | -This file can also be run as a script to install or upgrade setuptools. |
192 | -""" |
193 | -import os |
194 | -import sys |
195 | -import time |
196 | -import fnmatch |
197 | -import tempfile |
198 | -import tarfile |
199 | -from distutils import log |
200 | - |
201 | -try: |
202 | - from site import USER_SITE |
203 | -except ImportError: |
204 | - USER_SITE = None |
205 | - |
206 | -try: |
207 | - import subprocess |
208 | - |
209 | - def _python_cmd(*args): |
210 | - args = (sys.executable,) + args |
211 | - return subprocess.call(args) == 0 |
212 | - |
213 | -except ImportError: |
214 | - # will be used for python 2.3 |
215 | - def _python_cmd(*args): |
216 | - args = (sys.executable,) + args |
217 | - # quoting arguments if windows |
218 | - if sys.platform == 'win32': |
219 | - def quote(arg): |
220 | - if ' ' in arg: |
221 | - return '"%s"' % arg |
222 | - return arg |
223 | - args = [quote(arg) for arg in args] |
224 | - return os.spawnl(os.P_WAIT, sys.executable, *args) == 0 |
225 | - |
226 | -DEFAULT_VERSION = "0.6.10" |
227 | -DEFAULT_URL = "http://pypi.python.org/packages/source/d/distribute/" |
228 | -SETUPTOOLS_FAKED_VERSION = "0.6c11" |
229 | - |
230 | -SETUPTOOLS_PKG_INFO = """\ |
231 | -Metadata-Version: 1.0 |
232 | -Name: setuptools |
233 | -Version: %s |
234 | -Summary: xxxx |
235 | -Home-page: xxx |
236 | -Author: xxx |
237 | -Author-email: xxx |
238 | -License: xxx |
239 | -Description: xxx |
240 | -""" % SETUPTOOLS_FAKED_VERSION |
241 | - |
242 | - |
243 | -def _install(tarball): |
244 | - # extracting the tarball |
245 | - tmpdir = tempfile.mkdtemp() |
246 | - log.warn('Extracting in %s', tmpdir) |
247 | - old_wd = os.getcwd() |
248 | - try: |
249 | - os.chdir(tmpdir) |
250 | - tar = tarfile.open(tarball) |
251 | - _extractall(tar) |
252 | - tar.close() |
253 | - |
254 | - # going in the directory |
255 | - subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0]) |
256 | - os.chdir(subdir) |
257 | - log.warn('Now working in %s', subdir) |
258 | - |
259 | - # installing |
260 | - log.warn('Installing Distribute') |
261 | - if not _python_cmd('setup.py', 'install'): |
262 | - log.warn('Something went wrong during the installation.') |
263 | - log.warn('See the error message above.') |
264 | - finally: |
265 | - os.chdir(old_wd) |
266 | - |
267 | - |
268 | -def _build_egg(egg, tarball, to_dir): |
269 | - # extracting the tarball |
270 | - tmpdir = tempfile.mkdtemp() |
271 | - log.warn('Extracting in %s', tmpdir) |
272 | - old_wd = os.getcwd() |
273 | - try: |
274 | - os.chdir(tmpdir) |
275 | - tar = tarfile.open(tarball) |
276 | - _extractall(tar) |
277 | - tar.close() |
278 | - |
279 | - # going in the directory |
280 | - subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0]) |
281 | - os.chdir(subdir) |
282 | - log.warn('Now working in %s', subdir) |
283 | - |
284 | - # building an egg |
285 | - log.warn('Building a Distribute egg in %s', to_dir) |
286 | - _python_cmd('setup.py', '-q', 'bdist_egg', '--dist-dir', to_dir) |
287 | - |
288 | - finally: |
289 | - os.chdir(old_wd) |
290 | - # returning the result |
291 | - log.warn(egg) |
292 | - if not os.path.exists(egg): |
293 | - raise IOError('Could not build the egg.') |
294 | - |
295 | - |
296 | -def _do_download(version, download_base, to_dir, download_delay): |
297 | - egg = os.path.join(to_dir, 'distribute-%s-py%d.%d.egg' |
298 | - % (version, sys.version_info[0], sys.version_info[1])) |
299 | - if not os.path.exists(egg): |
300 | - tarball = download_setuptools(version, download_base, |
301 | - to_dir, download_delay) |
302 | - _build_egg(egg, tarball, to_dir) |
303 | - sys.path.insert(0, egg) |
304 | - import setuptools |
305 | - setuptools.bootstrap_install_from = egg |
306 | - |
307 | - |
308 | -def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, |
309 | - to_dir=os.curdir, download_delay=15, no_fake=True): |
310 | - # making sure we use the absolute path |
311 | - to_dir = os.path.abspath(to_dir) |
312 | - was_imported = 'pkg_resources' in sys.modules or \ |
313 | - 'setuptools' in sys.modules |
314 | - try: |
315 | - try: |
316 | - import pkg_resources |
317 | - if not hasattr(pkg_resources, '_distribute'): |
318 | - if not no_fake: |
319 | - _fake_setuptools() |
320 | - raise ImportError |
321 | - except ImportError: |
322 | - return _do_download(version, download_base, to_dir, download_delay) |
323 | - try: |
324 | - pkg_resources.require("distribute>="+version) |
325 | - return |
326 | - except pkg_resources.VersionConflict: |
327 | - e = sys.exc_info()[1] |
328 | - if was_imported: |
329 | - sys.stderr.write( |
330 | - "The required version of distribute (>=%s) is not available,\n" |
331 | - "and can't be installed while this script is running. Please\n" |
332 | - "install a more recent version first, using\n" |
333 | - "'easy_install -U distribute'." |
334 | - "\n\n(Currently using %r)\n" % (version, e.args[0])) |
335 | - sys.exit(2) |
336 | - else: |
337 | - del pkg_resources, sys.modules['pkg_resources'] # reload ok |
338 | - return _do_download(version, download_base, to_dir, |
339 | - download_delay) |
340 | - except pkg_resources.DistributionNotFound: |
341 | - return _do_download(version, download_base, to_dir, |
342 | - download_delay) |
343 | - finally: |
344 | - if not no_fake: |
345 | - _create_fake_setuptools_pkg_info(to_dir) |
346 | - |
347 | -def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, |
348 | - to_dir=os.curdir, delay=15): |
349 | - """Download distribute from a specified location and return its filename |
350 | - |
351 | - `version` should be a valid distribute version number that is available |
352 | - as an egg for download under the `download_base` URL (which should end |
353 | - with a '/'). `to_dir` is the directory where the egg will be downloaded. |
354 | - `delay` is the number of seconds to pause before an actual download |
355 | - attempt. |
356 | - """ |
357 | - # making sure we use the absolute path |
358 | - to_dir = os.path.abspath(to_dir) |
359 | - try: |
360 | - from urllib.request import urlopen |
361 | - except ImportError: |
362 | - from urllib2 import urlopen |
363 | - tgz_name = "distribute-%s.tar.gz" % version |
364 | - url = download_base + tgz_name |
365 | - saveto = os.path.join(to_dir, tgz_name) |
366 | - src = dst = None |
367 | - if not os.path.exists(saveto): # Avoid repeated downloads |
368 | - try: |
369 | - log.warn("Downloading %s", url) |
370 | - src = urlopen(url) |
371 | - # Read/write all in one block, so we don't create a corrupt file |
372 | - # if the download is interrupted. |
373 | - data = src.read() |
374 | - dst = open(saveto, "wb") |
375 | - dst.write(data) |
376 | - finally: |
377 | - if src: |
378 | - src.close() |
379 | - if dst: |
380 | - dst.close() |
381 | - return os.path.realpath(saveto) |
382 | - |
383 | - |
384 | -def _patch_file(path, content): |
385 | - """Will backup the file then patch it""" |
386 | - existing_content = open(path).read() |
387 | - if existing_content == content: |
388 | - # already patched |
389 | - log.warn('Already patched.') |
390 | - return False |
391 | - log.warn('Patching...') |
392 | - _rename_path(path) |
393 | - f = open(path, 'w') |
394 | - try: |
395 | - f.write(content) |
396 | - finally: |
397 | - f.close() |
398 | - return True |
399 | - |
400 | - |
401 | -def _same_content(path, content): |
402 | - return open(path).read() == content |
403 | - |
404 | -def _no_sandbox(function): |
405 | - def __no_sandbox(*args, **kw): |
406 | - try: |
407 | - from setuptools.sandbox import DirectorySandbox |
408 | - def violation(*args): |
409 | - pass |
410 | - DirectorySandbox._old = DirectorySandbox._violation |
411 | - DirectorySandbox._violation = violation |
412 | - patched = True |
413 | - except ImportError: |
414 | - patched = False |
415 | - |
416 | - try: |
417 | - return function(*args, **kw) |
418 | - finally: |
419 | - if patched: |
420 | - DirectorySandbox._violation = DirectorySandbox._old |
421 | - del DirectorySandbox._old |
422 | - |
423 | - return __no_sandbox |
424 | - |
425 | -@_no_sandbox |
426 | -def _rename_path(path): |
427 | - new_name = path + '.OLD.%s' % time.time() |
428 | - log.warn('Renaming %s into %s', path, new_name) |
429 | - os.rename(path, new_name) |
430 | - return new_name |
431 | - |
432 | -def _remove_flat_installation(placeholder): |
433 | - if not os.path.isdir(placeholder): |
434 | - log.warn('Unkown installation at %s', placeholder) |
435 | - return False |
436 | - found = False |
437 | - for file in os.listdir(placeholder): |
438 | - if fnmatch.fnmatch(file, 'setuptools*.egg-info'): |
439 | - found = True |
440 | - break |
441 | - if not found: |
442 | - log.warn('Could not locate setuptools*.egg-info') |
443 | - return |
444 | - |
445 | - log.warn('Removing elements out of the way...') |
446 | - pkg_info = os.path.join(placeholder, file) |
447 | - if os.path.isdir(pkg_info): |
448 | - patched = _patch_egg_dir(pkg_info) |
449 | - else: |
450 | - patched = _patch_file(pkg_info, SETUPTOOLS_PKG_INFO) |
451 | - |
452 | - if not patched: |
453 | - log.warn('%s already patched.', pkg_info) |
454 | - return False |
455 | - # now let's move the files out of the way |
456 | - for element in ('setuptools', 'pkg_resources.py', 'site.py'): |
457 | - element = os.path.join(placeholder, element) |
458 | - if os.path.exists(element): |
459 | - _rename_path(element) |
460 | - else: |
461 | - log.warn('Could not find the %s element of the ' |
462 | - 'Setuptools distribution', element) |
463 | - return True |
464 | - |
465 | - |
466 | -def _after_install(dist): |
467 | - log.warn('After install bootstrap.') |
468 | - placeholder = dist.get_command_obj('install').install_purelib |
469 | - _create_fake_setuptools_pkg_info(placeholder) |
470 | - |
471 | -@_no_sandbox |
472 | -def _create_fake_setuptools_pkg_info(placeholder): |
473 | - if not placeholder or not os.path.exists(placeholder): |
474 | - log.warn('Could not find the install location') |
475 | - return |
476 | - pyver = '%s.%s' % (sys.version_info[0], sys.version_info[1]) |
477 | - setuptools_file = 'setuptools-%s-py%s.egg-info' % \ |
478 | - (SETUPTOOLS_FAKED_VERSION, pyver) |
479 | - pkg_info = os.path.join(placeholder, setuptools_file) |
480 | - if os.path.exists(pkg_info): |
481 | - log.warn('%s already exists', pkg_info) |
482 | - return |
483 | - |
484 | - log.warn('Creating %s', pkg_info) |
485 | - f = open(pkg_info, 'w') |
486 | - try: |
487 | - f.write(SETUPTOOLS_PKG_INFO) |
488 | - finally: |
489 | - f.close() |
490 | - |
491 | - pth_file = os.path.join(placeholder, 'setuptools.pth') |
492 | - log.warn('Creating %s', pth_file) |
493 | - f = open(pth_file, 'w') |
494 | - try: |
495 | - f.write(os.path.join(os.curdir, setuptools_file)) |
496 | - finally: |
497 | - f.close() |
498 | - |
499 | -def _patch_egg_dir(path): |
500 | - # let's check if it's already patched |
501 | - pkg_info = os.path.join(path, 'EGG-INFO', 'PKG-INFO') |
502 | - if os.path.exists(pkg_info): |
503 | - if _same_content(pkg_info, SETUPTOOLS_PKG_INFO): |
504 | - log.warn('%s already patched.', pkg_info) |
505 | - return False |
506 | - _rename_path(path) |
507 | - os.mkdir(path) |
508 | - os.mkdir(os.path.join(path, 'EGG-INFO')) |
509 | - pkg_info = os.path.join(path, 'EGG-INFO', 'PKG-INFO') |
510 | - f = open(pkg_info, 'w') |
511 | - try: |
512 | - f.write(SETUPTOOLS_PKG_INFO) |
513 | - finally: |
514 | - f.close() |
515 | - return True |
516 | - |
517 | - |
518 | -def _before_install(): |
519 | - log.warn('Before install bootstrap.') |
520 | - _fake_setuptools() |
521 | - |
522 | - |
523 | -def _under_prefix(location): |
524 | - if 'install' not in sys.argv: |
525 | - return True |
526 | - args = sys.argv[sys.argv.index('install')+1:] |
527 | - for index, arg in enumerate(args): |
528 | - for option in ('--root', '--prefix'): |
529 | - if arg.startswith('%s=' % option): |
530 | - top_dir = arg.split('root=')[-1] |
531 | - return location.startswith(top_dir) |
532 | - elif arg == option: |
533 | - if len(args) > index: |
534 | - top_dir = args[index+1] |
535 | - return location.startswith(top_dir) |
536 | - elif option == '--user' and USER_SITE is not None: |
537 | - return location.startswith(USER_SITE) |
538 | - return True |
539 | - |
540 | - |
541 | -def _fake_setuptools(): |
542 | - log.warn('Scanning installed packages') |
543 | - try: |
544 | - import pkg_resources |
545 | - except ImportError: |
546 | - # we're cool |
547 | - log.warn('Setuptools or Distribute does not seem to be installed.') |
548 | - return |
549 | - ws = pkg_resources.working_set |
550 | - try: |
551 | - setuptools_dist = ws.find(pkg_resources.Requirement.parse('setuptools', |
552 | - replacement=False)) |
553 | - except TypeError: |
554 | - # old distribute API |
555 | - setuptools_dist = ws.find(pkg_resources.Requirement.parse('setuptools')) |
556 | - |
557 | - if setuptools_dist is None: |
558 | - log.warn('No setuptools distribution found') |
559 | - return |
560 | - # detecting if it was already faked |
561 | - setuptools_location = setuptools_dist.location |
562 | - log.warn('Setuptools installation detected at %s', setuptools_location) |
563 | - |
564 | - # if --root or --preix was provided, and if |
565 | - # setuptools is not located in them, we don't patch it |
566 | - if not _under_prefix(setuptools_location): |
567 | - log.warn('Not patching, --root or --prefix is installing Distribute' |
568 | - ' in another location') |
569 | - return |
570 | - |
571 | - # let's see if its an egg |
572 | - if not setuptools_location.endswith('.egg'): |
573 | - log.warn('Non-egg installation') |
574 | - res = _remove_flat_installation(setuptools_location) |
575 | - if not res: |
576 | - return |
577 | - else: |
578 | - log.warn('Egg installation') |
579 | - pkg_info = os.path.join(setuptools_location, 'EGG-INFO', 'PKG-INFO') |
580 | - if (os.path.exists(pkg_info) and |
581 | - _same_content(pkg_info, SETUPTOOLS_PKG_INFO)): |
582 | - log.warn('Already patched.') |
583 | - return |
584 | - log.warn('Patching...') |
585 | - # let's create a fake egg replacing setuptools one |
586 | - res = _patch_egg_dir(setuptools_location) |
587 | - if not res: |
588 | - return |
589 | - log.warn('Patched done.') |
590 | - _relaunch() |
591 | - |
592 | - |
593 | -def _relaunch(): |
594 | - log.warn('Relaunching...') |
595 | - # we have to relaunch the process |
596 | - args = [sys.executable] + sys.argv |
597 | - sys.exit(subprocess.call(args)) |
598 | - |
599 | - |
600 | -def _extractall(self, path=".", members=None): |
601 | - """Extract all members from the archive to the current working |
602 | - directory and set owner, modification time and permissions on |
603 | - directories afterwards. `path' specifies a different directory |
604 | - to extract to. `members' is optional and must be a subset of the |
605 | - list returned by getmembers(). |
606 | - """ |
607 | - import copy |
608 | - import operator |
609 | - from tarfile import ExtractError |
610 | - directories = [] |
611 | - |
612 | - if members is None: |
613 | - members = self |
614 | - |
615 | - for tarinfo in members: |
616 | - if tarinfo.isdir(): |
617 | - # Extract directories with a safe mode. |
618 | - directories.append(tarinfo) |
619 | - tarinfo = copy.copy(tarinfo) |
620 | - tarinfo.mode = 448 # decimal for oct 0700 |
621 | - self.extract(tarinfo, path) |
622 | - |
623 | - # Reverse sort directories. |
624 | - if sys.version_info < (2, 4): |
625 | - def sorter(dir1, dir2): |
626 | - return cmp(dir1.name, dir2.name) |
627 | - directories.sort(sorter) |
628 | - directories.reverse() |
629 | - else: |
630 | - directories.sort(key=operator.attrgetter('name'), reverse=True) |
631 | - |
632 | - # Set correct owner, mtime and filemode on directories. |
633 | - for tarinfo in directories: |
634 | - dirpath = os.path.join(path, tarinfo.name) |
635 | - try: |
636 | - self.chown(tarinfo, dirpath) |
637 | - self.utime(tarinfo, dirpath) |
638 | - self.chmod(tarinfo, dirpath) |
639 | - except ExtractError: |
640 | - e = sys.exc_info()[1] |
641 | - if self.errorlevel > 1: |
642 | - raise |
643 | - else: |
644 | - self._dbg(1, "tarfile: %s" % e) |
645 | - |
646 | - |
647 | -def main(argv, version=DEFAULT_VERSION): |
648 | - """Install or upgrade setuptools and EasyInstall""" |
649 | - tarball = download_setuptools() |
650 | - _install(tarball) |
651 | - |
652 | - |
653 | -if __name__ == '__main__': |
654 | - main(sys.argv[1:]) |
655 | |
656 | === modified file 'setup.py' |
657 | --- setup.py 2014-11-19 11:03:32 +0000 |
658 | +++ setup.py 2015-01-04 23:44:27 +0000 |
659 | @@ -1,4 +1,4 @@ |
660 | -# Copyright (C) 2010 by the Free Software Foundation, Inc. |
661 | +# Copyright (C) 2010-2015 by the Free Software Foundation, Inc. |
662 | # |
663 | # This file is part of mailman.client. |
664 | # |
665 | @@ -15,34 +15,32 @@ |
666 | # You should have received a copy of the GNU Lesser General Public License |
667 | # along with mailman.client. If not, see <http://www.gnu.org/licenses/>. |
668 | |
669 | -import distribute_setup |
670 | -distribute_setup.use_setuptools() |
671 | - |
672 | from setup_helpers import ( |
673 | description, find_doctests, get_version, long_description, require_python) |
674 | from setuptools import setup, find_packages |
675 | |
676 | |
677 | require_python(0x20600f0) |
678 | +__version__ = get_version('src/mailmanclient/__init__.py') |
679 | |
680 | |
681 | setup( |
682 | name='mailmanclient', |
683 | - version='1.0.0b1', |
684 | + version=__version__, |
685 | packages=find_packages('src'), |
686 | package_dir = {'': 'src'}, |
687 | include_package_data=True, |
688 | maintainer='Barry Warsaw', |
689 | maintainer_email='barry@list.org', |
690 | - description=description('README.txt'), |
691 | + description=description('README.rst'), |
692 | long_description=long_description( |
693 | - 'src/mailmanclient/README.txt', |
694 | - 'src/mailmanclient/NEWS.txt'), |
695 | + 'src/mailmanclient/README.rst', |
696 | + 'src/mailmanclient/NEWS.rst'), |
697 | license='LGPLv3', |
698 | url='http://launchpad.net/mailman.client', |
699 | download_url='https://launchpad.net/mailman.client/+download', |
700 | - # Auto-conversion to Python 3. |
701 | - use_2to3=True, |
702 | - convert_2to3_doctests=find_doctests(), |
703 | - install_requires=['httplib2', 'mock', 'WebTest', ], |
704 | -) |
705 | + install_requires=[ |
706 | + 'httplib2', |
707 | + 'six', |
708 | + ], |
709 | + ) |
710 | |
711 | === modified file 'setup_helpers.py' |
712 | --- setup_helpers.py 2014-12-16 11:07:10 +0000 |
713 | +++ setup_helpers.py 2015-01-04 23:44:27 +0000 |
714 | @@ -1,23 +1,22 @@ |
715 | -# Copyright (C) 2009, 2010 by Barry A. Warsaw |
716 | -# |
717 | -# This file is part of flufl.i18n |
718 | -# |
719 | -# flufl.i18n is free software: you can redistribute it and/or modify it under |
720 | -# the terms of the GNU Lesser General Public License as published by the Free |
721 | -# Software Foundation, version 3 of the License. |
722 | -# |
723 | -# flufl.i18n is distributed in the hope that it will be useful, but WITHOUT |
724 | -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
725 | -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License |
726 | -# for more details. |
727 | +# Copyright (C) 2009-2015 by the Free Software Foundation, Inc. |
728 | +# |
729 | +# This file is part of mailman.client |
730 | +# |
731 | +# mailman.client is free software: you can redistribute it and/or modify it |
732 | +# under the terms of the GNU Lesser General Public License as published by the |
733 | +# Free Software Foundation, version 3 of the License. |
734 | +# |
735 | +# mailman.client is distributed in the hope that it will be useful, but WITHOUT |
736 | +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
737 | +# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
738 | +# details. |
739 | # |
740 | # You should have received a copy of the GNU Lesser General Public License |
741 | -# along with flufl.i18n. If not, see <http://www.gnu.org/licenses/>. |
742 | +# along with mailman.client. If not, see <http://www.gnu.org/licenses/>. |
743 | |
744 | """setup.py helper functions.""" |
745 | |
746 | -from __future__ import absolute_import, unicode_literals |
747 | -from __future__ import print_function |
748 | +from __future__ import absolute_import, print_function, unicode_literals |
749 | |
750 | |
751 | __metaclass__ = type |
752 | @@ -33,6 +32,7 @@ |
753 | import os |
754 | import re |
755 | import sys |
756 | +import codecs |
757 | |
758 | |
759 | DEFAULT_VERSION_RE = re.compile(r'(?P<version>\d+\.\d(?:\.\d+)?)') |
760 | @@ -131,9 +131,10 @@ |
761 | """Provide a long description.""" |
762 | res = [] |
763 | for value in filenames: |
764 | - if value.endswith('.txt'): |
765 | - with open(value) as fp: |
766 | - value = fp.read().decode('UTF-8') |
767 | + base, ext = os.path.splitext(value) |
768 | + if ext in ('.txt', '.rst'): |
769 | + with codecs.open(value, 'r', encoding='utf-8') as fp: |
770 | + value = fp.read() |
771 | res.append(value) |
772 | if not value.endswith(NL): |
773 | res.append('') |
774 | @@ -142,6 +143,6 @@ |
775 | |
776 | def description(filename): |
777 | """Provide a short description.""" |
778 | - with open(filename) as fp: |
779 | + with codecs.open(filename, 'r', encoding='utf-8') as fp: |
780 | for line in fp: |
781 | return line.strip() |
782 | |
783 | === modified file 'src/__init__.py' |
784 | --- src/__init__.py 2010-12-23 16:31:21 +0000 |
785 | +++ src/__init__.py 2015-01-04 23:44:27 +0000 |
786 | @@ -1,4 +1,4 @@ |
787 | -# Copyright (C) 2010 by the Free Software Foundation, Inc. |
788 | +# Copyright (C) 2010-2015 by the Free Software Foundation, Inc. |
789 | # |
790 | # This file is part of mailman.client. |
791 | # |
792 | |
793 | === renamed file 'src/mailmanclient/NEWS.txt' => 'src/mailmanclient/NEWS.rst' |
794 | --- src/mailmanclient/NEWS.txt 2014-12-16 11:07:10 +0000 |
795 | +++ src/mailmanclient/NEWS.rst 2015-01-04 23:44:27 +0000 |
796 | @@ -2,9 +2,13 @@ |
797 | NEWS for mailman.client |
798 | ======================= |
799 | |
800 | -1.0.0b1 (xxxx-xx-xx) |
801 | +1.0.0b1 (2015-xx-xx) |
802 | +==================== |
803 | |
804 | -* Addedd an improved test harness using WebTest. Contributed by Aurélien Bompard. |
805 | + * Added an improved test harness using WebTest. Contributed by Aurélien |
806 | + Bompard. |
807 | + * Port to Python 3.4. |
808 | + * Run test suite with `tox`. |
809 | |
810 | |
811 | 1.0.0a1 (2014-03-15) |
812 | |
813 | === renamed file 'src/mailmanclient/README.txt' => 'src/mailmanclient/README.rst' |
814 | --- src/mailmanclient/README.txt 2010-12-23 16:34:38 +0000 |
815 | +++ src/mailmanclient/README.rst 2015-01-04 23:44:27 +0000 |
816 | @@ -2,7 +2,7 @@ |
817 | mailman.client - Python bindings for the Mailman 3 REST API |
818 | =========================================================== |
819 | |
820 | -This package is called ``mailman.client``. |
821 | +This package is called ``mailman.client``. |
822 | |
823 | |
824 | Requirements |
825 | @@ -38,10 +38,9 @@ |
826 | http://pypi.python.org/pypi/mailman.client |
827 | |
828 | or from the Launchpad page above. Of course you can also just install it with |
829 | -``pip`` or ``easy_install`` from the command line:: |
830 | +``pip`` from the command line:: |
831 | |
832 | % sudo pip mailman.client |
833 | - % sudo easy_install mailman.client |
834 | |
835 | You can grab the latest development copy of the code using Bazaar, from the |
836 | Launchpad home page above. See http://bazaar-vcs.org for details on the |
837 | @@ -56,7 +55,7 @@ |
838 | Copyright |
839 | ========= |
840 | |
841 | -Copyright (C) 2010 by The Free Software Foundation, Inc. |
842 | +Copyright (C) 2010-2015 by The Free Software Foundation, Inc. |
843 | |
844 | This file is part of mailman.client. |
845 | |
846 | |
847 | === modified file 'src/mailmanclient/__init__.py' |
848 | --- src/mailmanclient/__init__.py 2014-04-22 14:38:40 +0000 |
849 | +++ src/mailmanclient/__init__.py 2015-01-04 23:44:27 +0000 |
850 | @@ -1,4 +1,4 @@ |
851 | -# Copyright (C) 2010-2014 by the Free Software Foundation, Inc. |
852 | +# Copyright (C) 2010-2015 by the Free Software Foundation, Inc. |
853 | # |
854 | # This file is part of mailman.client. |
855 | # |
856 | @@ -16,7 +16,7 @@ |
857 | |
858 | """Package contents.""" |
859 | |
860 | -from __future__ import absolute_import, unicode_literals |
861 | +from __future__ import absolute_import, print_function, unicode_literals |
862 | |
863 | __metaclass__ = type |
864 | __all__ = [ |
865 | |
866 | === modified file 'src/mailmanclient/_client.py' |
867 | --- src/mailmanclient/_client.py 2014-04-22 12:35:29 +0000 |
868 | +++ src/mailmanclient/_client.py 2015-01-04 23:44:27 +0000 |
869 | @@ -1,4 +1,4 @@ |
870 | -# Copyright (C) 2010-2014 by the Free Software Foundation, Inc. |
871 | +# Copyright (C) 2010-2015 by the Free Software Foundation, Inc. |
872 | # |
873 | # This file is part of mailman.client. |
874 | # |
875 | @@ -25,31 +25,25 @@ |
876 | ] |
877 | |
878 | |
879 | -import re |
880 | +import six |
881 | import json |
882 | |
883 | from base64 import b64encode |
884 | from httplib2 import Http |
885 | +from mailmanclient import __version__ |
886 | from operator import itemgetter |
887 | -from urllib import urlencode |
888 | -from urllib2 import HTTPError |
889 | -from urlparse import urljoin |
890 | - |
891 | - |
892 | -from mailmanclient import __version__ |
893 | +from six.moves.urllib_error import HTTPError |
894 | +from six.moves.urllib_parse import urlencode, urljoin |
895 | |
896 | |
897 | DEFAULT_PAGE_ITEM_COUNT = 50 |
898 | |
899 | |
900 | class MailmanConnectionError(Exception): |
901 | - |
902 | """Custom Exception to catch connection errors.""" |
903 | - pass |
904 | |
905 | |
906 | class _Connection: |
907 | - |
908 | """A connection to the REST client.""" |
909 | |
910 | def __init__(self, baseurl, name=None, password=None): |
911 | @@ -74,7 +68,7 @@ |
912 | self.basic_auth = None |
913 | else: |
914 | auth = '{0}:{1}'.format(name, password) |
915 | - self.basic_auth = b64encode(auth) |
916 | + self.basic_auth = b64encode(auth.encode('utf-8')).decode('utf-8') |
917 | |
918 | def call(self, path, data=None, method=None): |
919 | """Make a call to the Mailman REST API. |
920 | @@ -93,7 +87,7 @@ |
921 | """ |
922 | headers = { |
923 | 'User-Agent': 'GNU Mailman REST client v{0}'.format(__version__), |
924 | - } |
925 | + } |
926 | if data is not None: |
927 | data = urlencode(data, doseq=True) |
928 | headers['Content-Type'] = 'application/x-www-form-urlencoded' |
929 | @@ -115,7 +109,8 @@ |
930 | if len(content) == 0: |
931 | return response, None |
932 | # XXX Work around for http://bugs.python.org/issue10038 |
933 | - content = unicode(content) |
934 | + if isinstance(content, six.binary_type): |
935 | + content = content.decode('utf-8') |
936 | return response, json.loads(content) |
937 | except HTTPError: |
938 | raise |
939 | @@ -124,7 +119,6 @@ |
940 | |
941 | |
942 | class Client: |
943 | - |
944 | """Access the Mailman REST API root.""" |
945 | |
946 | def __init__(self, baseurl, name=None, password=None): |
947 | @@ -144,13 +138,21 @@ |
948 | |
949 | @property |
950 | def system(self): |
951 | - return self._connection.call('system')[1] |
952 | + return self._connection.call('system/versions')[1] |
953 | |
954 | @property |
955 | def preferences(self): |
956 | return _Preferences(self._connection, 'system/preferences') |
957 | |
958 | @property |
959 | + def queues(self): |
960 | + response, content = self._connection.call('queues') |
961 | + queues = {} |
962 | + for entry in content['entries']: |
963 | + queues[entry['name']] = _Queue(self._connection, entry) |
964 | + return queues |
965 | + |
966 | + @property |
967 | def lists(self): |
968 | response, content = self._connection.call('lists') |
969 | if 'entries' not in content: |
970 | @@ -209,9 +211,8 @@ |
971 | return _Domain(self._connection, response['location']) |
972 | |
973 | def delete_domain(self, mail_host): |
974 | - response, content = self._connection.call('domains/{0}' |
975 | - .format(mail_host), |
976 | - None, 'DELETE') |
977 | + response, content = self._connection.call( |
978 | + 'domains/{0}'.format(mail_host), None, 'DELETE') |
979 | |
980 | def get_domain(self, mail_host=None, web_host=None): |
981 | """Get domain by its mail_host or its web_host.""" |
982 | @@ -225,13 +226,13 @@ |
983 | # in Mailman3Alpha8 |
984 | if domain.base_url == web_host: |
985 | return domain |
986 | - break |
987 | else: |
988 | return None |
989 | |
990 | def create_user(self, email, password, display_name=''): |
991 | response, content = self._connection.call( |
992 | - 'users', dict(email=email, password=password, |
993 | + 'users', dict(email=email, |
994 | + password=password, |
995 | display_name=display_name)) |
996 | return _User(self._connection, response['location']) |
997 | |
998 | @@ -319,9 +320,7 @@ |
999 | def __init__(self, connection, url, data=None): |
1000 | self._connection = connection |
1001 | self._url = url |
1002 | - self._info = None |
1003 | - if data is not None: |
1004 | - self._info = data |
1005 | + self._info = data |
1006 | |
1007 | def __repr__(self): |
1008 | return '<List "{0}">'.format(self.fqdn_listname) |
1009 | @@ -409,8 +408,7 @@ |
1010 | |
1011 | @property |
1012 | def held(self): |
1013 | - """Return a list of dicts with held message information. |
1014 | - """ |
1015 | + """Return a list of dicts with held message information.""" |
1016 | response, content = self._connection.call( |
1017 | 'lists/{0}/held'.format(self.fqdn_listname), None, 'GET') |
1018 | if 'entries' not in content: |
1019 | @@ -429,8 +427,7 @@ |
1020 | |
1021 | @property |
1022 | def requests(self): |
1023 | - """Return a list of dicts with subscription requests. |
1024 | - """ |
1025 | + """Return a list of dicts with subscription requests.""" |
1026 | response, content = self._connection.call( |
1027 | 'lists/{0}/requests'.format(self.fqdn_listname), None, 'GET') |
1028 | if 'entries' not in content: |
1029 | @@ -479,30 +476,26 @@ |
1030 | :param action: Action to perform on held message. |
1031 | :type action: String. |
1032 | """ |
1033 | - path = 'lists/{0}/held/{1}'.format(self.fqdn_listname, |
1034 | - str(request_id)) |
1035 | - response, content = self._connection.call(path, dict(action=action), |
1036 | - 'POST') |
1037 | + path = 'lists/{0}/held/{1}'.format( |
1038 | + self.fqdn_listname, str(request_id)) |
1039 | + response, content = self._connection.call( |
1040 | + path, dict(action=action), 'POST') |
1041 | return response |
1042 | |
1043 | def discard_message(self, request_id): |
1044 | - """Shortcut for moderate_message. |
1045 | - """ |
1046 | + """Shortcut for moderate_message.""" |
1047 | return self.moderate_message(request_id, 'discard') |
1048 | |
1049 | def reject_message(self, request_id): |
1050 | - """Shortcut for moderate_message. |
1051 | - """ |
1052 | + """Shortcut for moderate_message.""" |
1053 | return self.moderate_message(request_id, 'reject') |
1054 | |
1055 | def defer_message(self, request_id): |
1056 | - """Shortcut for moderate_message. |
1057 | - """ |
1058 | + """Shortcut for moderate_message.""" |
1059 | return self.moderate_message(request_id, 'defer') |
1060 | |
1061 | def accept_message(self, request_id): |
1062 | - """Shortcut for moderate_message. |
1063 | - """ |
1064 | + """Shortcut for moderate_message.""" |
1065 | return self.moderate_message(request_id, 'accept') |
1066 | |
1067 | def get_member(self, email): |
1068 | @@ -516,7 +509,6 @@ |
1069 | for member in self.members: |
1070 | if member.email == email: |
1071 | return member |
1072 | - break |
1073 | else: |
1074 | raise ValueError('%s is not a member address of %s' % |
1075 | (email, self.fqdn_listname)) |
1076 | @@ -534,7 +526,7 @@ |
1077 | list_id=self.list_id, |
1078 | subscriber=address, |
1079 | display_name=display_name, |
1080 | - ) |
1081 | + ) |
1082 | response, content = self._connection.call('members', data) |
1083 | return _Member(self._connection, response['location']) |
1084 | |
1085 | @@ -568,8 +560,7 @@ |
1086 | self._preferences = None |
1087 | |
1088 | def __repr__(self): |
1089 | - return '<Member "{0}" on "{1}">'.format( |
1090 | - self.email, self.list_id) |
1091 | + return '<Member "{0}" on "{1}">'.format(self.email, self.list_id) |
1092 | |
1093 | def _get_info(self): |
1094 | if self._info is None: |
1095 | @@ -634,8 +625,7 @@ |
1096 | self._cleartext_password = None |
1097 | |
1098 | def __repr__(self): |
1099 | - return '<User "{0}" ({1})>'.format( |
1100 | - self.display_name, self.user_id) |
1101 | + return '<User "{0}" ({1})>'.format(self.display_name, self.user_id) |
1102 | |
1103 | def _get_info(self): |
1104 | if self._info is None: |
1105 | @@ -685,8 +675,8 @@ |
1106 | if self._subscriptions is None: |
1107 | subscriptions = [] |
1108 | for address in self.addresses: |
1109 | - response, content = self._connection.call('members/find', |
1110 | - data={'subscriber': address}) |
1111 | + response, content = self._connection.call( |
1112 | + 'members/find', data={'subscriber': address}) |
1113 | try: |
1114 | for entry in content['entries']: |
1115 | subscriptions.append(_Member(self._connection, |
1116 | @@ -713,7 +703,7 @@ |
1117 | return self._preferences |
1118 | |
1119 | def add_address(self, email): |
1120 | - # Adds another email adress to the user record and returns an |
1121 | + # Adds another email adress to the user record and returns an |
1122 | # _Address object. |
1123 | url = '{0}/addresses'.format(self._url) |
1124 | self._connection.call(url, {'email': email}) |
1125 | @@ -723,8 +713,8 @@ |
1126 | if self._cleartext_password is not None: |
1127 | data['cleartext_password'] = self._cleartext_password |
1128 | self.cleartext_password = None |
1129 | - response, content = self._connection.call(self._url, |
1130 | - data, method='PATCH') |
1131 | + response, content = self._connection.call( |
1132 | + self._url, data, method='PATCH') |
1133 | self._info = None |
1134 | |
1135 | def delete(self): |
1136 | @@ -741,8 +731,8 @@ |
1137 | |
1138 | def _get_addresses(self): |
1139 | if self._addresses is None: |
1140 | - response, content = self._connection.call('users/{0}/addresses' |
1141 | - .format(self._user_id)) |
1142 | + response, content = self._connection.call( |
1143 | + 'users/{0}/addresses'.format(self._user_id)) |
1144 | if 'entries' not in content: |
1145 | self._addresses = [] |
1146 | self._addresses = content['entries'] |
1147 | @@ -795,13 +785,13 @@ |
1148 | return self._preferences |
1149 | |
1150 | def verify(self): |
1151 | - self._connection.call('addresses/{0}/verify' |
1152 | - .format(self._address['email']), method='POST') |
1153 | + self._connection.call('addresses/{0}/verify'.format( |
1154 | + self._address['email']), method='POST') |
1155 | self._info = None |
1156 | |
1157 | def unverify(self): |
1158 | - self._connection.call('addresses/{0}/unverify' |
1159 | - .format(self._address['email']), method='POST') |
1160 | + self._connection.call('addresses/{0}/unverify'.format( |
1161 | + self._address['email']), method='POST') |
1162 | self._info = None |
1163 | |
1164 | |
1165 | @@ -812,9 +802,13 @@ |
1166 | 'hide_address', |
1167 | 'preferred_language', |
1168 | 'receive_list_copy', |
1169 | - 'receive_own_postings', ) |
1170 | + 'receive_own_postings', |
1171 | + ) |
1172 | |
1173 | -PREF_READ_ONLY_ATTRS = ('http_etag', 'self_link') |
1174 | +PREF_READ_ONLY_ATTRS = ( |
1175 | + 'http_etag', |
1176 | + 'self_link', |
1177 | + ) |
1178 | |
1179 | |
1180 | class _Preferences: |
1181 | @@ -843,7 +837,7 @@ |
1182 | return self._preferences[key] |
1183 | |
1184 | def __iter__(self): |
1185 | - for key in self._preferences.keys(): |
1186 | + for key in self._preferences: |
1187 | yield self._preferences[key] |
1188 | |
1189 | def __len__(self): |
1190 | @@ -861,18 +855,34 @@ |
1191 | def save(self): |
1192 | data = {} |
1193 | for key in self._preferences: |
1194 | - if key not in PREF_READ_ONLY_ATTRS and self._preferences[key] is not None: |
1195 | + if (key not in PREF_READ_ONLY_ATTRS |
1196 | + and self._preferences[key] is not None): |
1197 | data[key] = self._preferences[key] |
1198 | response, content = self._connection.call(self._url, data, 'PATCH') |
1199 | |
1200 | |
1201 | -LIST_READ_ONLY_ATTRS = ('bounces_address', 'created_at', 'digest_last_sent_at', |
1202 | - 'fqdn_listname', 'http_etag', 'mail_host', |
1203 | - 'join_address', 'last_post_at', 'leave_address', |
1204 | - 'list_id', 'list_name', 'next_digest_number', |
1205 | - 'no_reply_address', 'owner_address', 'post_id', |
1206 | - 'posting_address', 'request_address', 'scheme', |
1207 | - 'volume', 'web_host',) |
1208 | +LIST_READ_ONLY_ATTRS = ( |
1209 | + 'bounces_address', |
1210 | + 'created_at', |
1211 | + 'digest_last_sent_at', |
1212 | + 'fqdn_listname', |
1213 | + 'http_etag', |
1214 | + 'join_address', |
1215 | + 'last_post_at', |
1216 | + 'leave_address', |
1217 | + 'list_id', |
1218 | + 'list_name', |
1219 | + 'mail_host', |
1220 | + 'next_digest_number', |
1221 | + 'no_reply_address', |
1222 | + 'owner_address', |
1223 | + 'post_id', |
1224 | + 'posting_address', |
1225 | + 'request_address', |
1226 | + 'scheme', |
1227 | + 'volume', |
1228 | + 'web_host', |
1229 | + ) |
1230 | |
1231 | |
1232 | class _Settings: |
1233 | @@ -892,7 +902,7 @@ |
1234 | self._info = content |
1235 | |
1236 | def __iter__(self): |
1237 | - for key in self._info.keys(): |
1238 | + for key in self._info: |
1239 | yield key |
1240 | |
1241 | def __getitem__(self, key): |
1242 | @@ -949,8 +959,8 @@ |
1243 | def _create_page(self): |
1244 | self._entries = [] |
1245 | # create url |
1246 | - path = '{0}?count={1}&page={2}'.format(self._path, self._count, |
1247 | - self._page) |
1248 | + path = '{0}?count={1}&page={2}'.format( |
1249 | + self._path, self._count, self._page) |
1250 | response, content = self._connection.call(path) |
1251 | if 'entries' in content: |
1252 | for entry in content['entries']: |
1253 | @@ -973,3 +983,22 @@ |
1254 | self._page -= 1 |
1255 | self._create_page() |
1256 | return self |
1257 | + |
1258 | + |
1259 | +class _Queue: |
1260 | + def __init__(self, connection, entry): |
1261 | + self._connection = connection |
1262 | + self.name = entry['name'] |
1263 | + self.url = entry['self_link'] |
1264 | + self.directory = entry['directory'] |
1265 | + |
1266 | + def __repr__(self): |
1267 | + return '<Queue: {}>'.format(self.name) |
1268 | + |
1269 | + def inject(self, list_id, text): |
1270 | + self._connection.call(self.url, dict(list_id=list_id, text=text)) |
1271 | + |
1272 | + @property |
1273 | + def files(self): |
1274 | + response, content = self._connection.call(self.url) |
1275 | + return content['files'] |
1276 | |
1277 | === renamed file 'src/mailmanclient/docs/using.txt' => 'src/mailmanclient/docs/using.rst' |
1278 | --- src/mailmanclient/docs/using.txt 2014-11-18 15:08:41 +0000 |
1279 | +++ src/mailmanclient/docs/using.rst 2015-01-04 23:44:27 +0000 |
1280 | @@ -2,13 +2,6 @@ |
1281 | Mailman REST client |
1282 | =================== |
1283 | |
1284 | - >>> import os |
1285 | - >>> import time |
1286 | - >>> import smtplib |
1287 | - >>> import subprocess |
1288 | - |
1289 | - >>> from mock import patch |
1290 | - |
1291 | This is the official Python bindings for the GNU Mailman REST API. In order |
1292 | to talk to Mailman, the engine's REST server must be running. You begin by |
1293 | instantiating a client object to access the root of the REST hierarchy, |
1294 | @@ -23,7 +16,7 @@ |
1295 | http_etag: "..." |
1296 | mailman_version: GNU Mailman 3.0... (...) |
1297 | python_version: ... |
1298 | - self_link: http://localhost:9001/3.0/system |
1299 | + self_link: http://localhost:9001/3.0/system/versions |
1300 | |
1301 | To start with, there are no known mailing lists. |
1302 | |
1303 | @@ -47,15 +40,15 @@ |
1304 | ... contact_address='admin@example.com') |
1305 | >>> example_dot_com |
1306 | <Domain "example.com"> |
1307 | - >>> print example_dot_com.base_url |
1308 | + >>> print(example_dot_com.base_url) |
1309 | http://example.com |
1310 | - >>> print example_dot_com.contact_address |
1311 | + >>> print(example_dot_com.contact_address) |
1312 | admin@example.com |
1313 | - >>> print example_dot_com.description |
1314 | + >>> print(example_dot_com.description) |
1315 | None |
1316 | - >>> print example_dot_com.mail_host |
1317 | + >>> print(example_dot_com.mail_host) |
1318 | example.com |
1319 | - >>> print example_dot_com.url_host |
1320 | + >>> print(example_dot_com.url_host) |
1321 | example.com |
1322 | |
1323 | You can also get an existing domain independently using its mail host. |
1324 | @@ -63,7 +56,7 @@ |
1325 | >>> example = client.get_domain('example.com') |
1326 | >>> example |
1327 | <Domain "example.com"> |
1328 | - >>> print example_dot_com.base_url |
1329 | + >>> print(example_dot_com.base_url) |
1330 | http://example.com |
1331 | |
1332 | Additionally you can get an existing domain using its web host. |
1333 | @@ -71,16 +64,9 @@ |
1334 | >>> example = client.get_domain(web_host='http://example.com') |
1335 | >>> example |
1336 | <Domain "example.com"> |
1337 | - >>> print example_dot_com.base_url |
1338 | + >>> print(example_dot_com.base_url) |
1339 | http://example.com |
1340 | |
1341 | -But you cannot retrieve a non-existent domain. |
1342 | - |
1343 | - >>> client.get_domain('example.org') |
1344 | - Traceback (most recent call last): |
1345 | - ... |
1346 | - HTTPError: HTTP Error 404: 404 Not Found |
1347 | - |
1348 | After creating a few more domains, we can print the list of all domains. |
1349 | |
1350 | >>> client.create_domain('example.net') |
1351 | @@ -88,7 +74,7 @@ |
1352 | >>> client.create_domain('example.org') |
1353 | <Domain "example.org"> |
1354 | >>> for mail_host in client.domains: |
1355 | - ... print mail_host |
1356 | + ... print(mail_host) |
1357 | <Domain "example.com"> |
1358 | <Domain "example.net"> |
1359 | <Domain "example.org"> |
1360 | @@ -97,7 +83,7 @@ |
1361 | |
1362 | >>> client.delete_domain('example.org') |
1363 | >>> for mail_host in client.domains: |
1364 | - ... print mail_host |
1365 | + ... print(mail_host) |
1366 | <Domain "example.com"> |
1367 | <Domain "example.net"> |
1368 | |
1369 | @@ -110,13 +96,13 @@ |
1370 | >>> test_one = example.create_list('test-one') |
1371 | >>> test_one |
1372 | <List "test-one@example.com"> |
1373 | - >>> print test_one.fqdn_listname |
1374 | + >>> print(test_one.fqdn_listname) |
1375 | test-one@example.com |
1376 | - >>> print test_one.mail_host |
1377 | + >>> print(test_one.mail_host) |
1378 | example.com |
1379 | - >>> print test_one.list_name |
1380 | + >>> print(test_one.list_name) |
1381 | test-one |
1382 | - >>> print test_one.display_name |
1383 | + >>> print(test_one.display_name) |
1384 | Test-one |
1385 | |
1386 | You can also retrieve the mailing list after the fact. |
1387 | @@ -137,7 +123,7 @@ |
1388 | <List "test-three@example.com"> |
1389 | |
1390 | >>> for mlist in client.lists: |
1391 | - ... print mlist |
1392 | + ... print(mlist) |
1393 | <List "test-one@example.com"> |
1394 | <List "test-two@example.com"> |
1395 | <List "test-three@example.net"> |
1396 | @@ -151,21 +137,22 @@ |
1397 | >>> len(page) |
1398 | 2 |
1399 | >>> for m_list in page: |
1400 | - ... print m_list |
1401 | + ... print(m_list) |
1402 | <List "test-one@example.com"> |
1403 | <List "test-two@example.com"> |
1404 | >>> page = page.next |
1405 | >>> page.nr |
1406 | 2 |
1407 | >>> for m_list in page: |
1408 | - ... print m_list |
1409 | + ... print(m_list) |
1410 | <List "test-three@example.net"> |
1411 | <List "test-three@example.com"> |
1412 | |
1413 | -If you only want to know all lists for a specific domain, use the domain object. |
1414 | +If you only want to know all lists for a specific domain, use the domain |
1415 | +object. |
1416 | |
1417 | >>> for mlist in example.lists: |
1418 | - ... print mlist |
1419 | + ... print(mlist) |
1420 | <List "test-one@example.com"> |
1421 | <List "test-three@example.com"> |
1422 | <List "test-two@example.com"> |
1423 | @@ -180,7 +167,7 @@ |
1424 | >>> client.delete_list('test-three@example.com') |
1425 | |
1426 | >>> for mlist in client.lists: |
1427 | - ... print mlist |
1428 | + ... print(mlist) |
1429 | <List "test-one@example.com"> |
1430 | <List "test-two@example.com"> |
1431 | |
1432 | @@ -217,7 +204,7 @@ |
1433 | name, then by email address. |
1434 | |
1435 | >>> for member in client.members: |
1436 | - ... print member |
1437 | + ... print(member) |
1438 | <Member "anna@example.com" on "test-one.example.com"> |
1439 | <Member "bill@example.com" on "test-one.example.com"> |
1440 | <Member "anna@example.com" on "test-two.example.com"> |
1441 | @@ -226,7 +213,7 @@ |
1442 | We can also view the memberships for a single mailing list. |
1443 | |
1444 | >>> for member in test_one.members: |
1445 | - ... print member |
1446 | + ... print(member) |
1447 | <Member "anna@example.com" on "test-one.example.com"> |
1448 | <Member "bill@example.com" on "test-one.example.com"> |
1449 | |
1450 | @@ -236,7 +223,7 @@ |
1451 | >>> page.nr |
1452 | 1 |
1453 | >>> for member in page: |
1454 | - ... print member |
1455 | + ... print(member) |
1456 | <Member "anna@example.com" on "test-one.example.com"> |
1457 | <Member "bill@example.com" on "test-one.example.com"> |
1458 | |
1459 | @@ -244,7 +231,7 @@ |
1460 | >>> page.nr |
1461 | 2 |
1462 | >>> for member in page: |
1463 | - ... print member |
1464 | + ... print(member) |
1465 | <Member "anna@example.com" on "test-two.example.com"> |
1466 | <Member "cris@example.com" on "test-two.example.com"> |
1467 | |
1468 | @@ -252,13 +239,13 @@ |
1469 | >>> page.nr |
1470 | 1 |
1471 | >>> for member in page: |
1472 | - ... print member |
1473 | + ... print(member) |
1474 | <Member "anna@example.com" on "test-one.example.com"> |
1475 | >>> page = page.next |
1476 | >>> page.nr |
1477 | 2 |
1478 | >>> for member in page: |
1479 | - ... print member |
1480 | + ... print(member) |
1481 | <Member "bill@example.com" on "test-one.example.com"> |
1482 | |
1483 | We can get a single membership too. |
1484 | @@ -266,7 +253,7 @@ |
1485 | >>> cris_test_two = test_two.get_member('cris@example.com') |
1486 | >>> cris_test_two |
1487 | <Member "cris@example.com" on "test-two.example.com"> |
1488 | - >>> print cris_test_two.role |
1489 | + >>> print(cris_test_two.role) |
1490 | member |
1491 | |
1492 | A membership can also be retrieved without instantiating the list object first: |
1493 | @@ -277,24 +264,24 @@ |
1494 | A membership has preferences. |
1495 | |
1496 | >>> prefs = cris_test_two.preferences |
1497 | - >>> print prefs['delivery_mode'] |
1498 | + >>> print(prefs['delivery_mode']) |
1499 | regular |
1500 | - >>> print prefs['acknowledge_posts'] |
1501 | - None |
1502 | - >>> print prefs['delivery_status'] |
1503 | - None |
1504 | - >>> print prefs['hide_address'] |
1505 | - None |
1506 | - >>> print prefs['preferred_language'] |
1507 | - None |
1508 | - >>> print prefs['receive_list_copy'] |
1509 | - None |
1510 | - >>> print prefs['receive_own_postings'] |
1511 | + >>> print(prefs['acknowledge_posts']) |
1512 | + None |
1513 | + >>> print(prefs['delivery_status']) |
1514 | + None |
1515 | + >>> print(prefs['hide_address']) |
1516 | + None |
1517 | + >>> print(prefs['preferred_language']) |
1518 | + None |
1519 | + >>> print(prefs['receive_list_copy']) |
1520 | + None |
1521 | + >>> print(prefs['receive_own_postings']) |
1522 | None |
1523 | |
1524 | The membership object's ``user`` attribute will return a User object: |
1525 | |
1526 | - >>> cris_test_two.user |
1527 | + >>> cris_test_two.user |
1528 | <User "Cris" (...)> |
1529 | |
1530 | If you use an address which is not a member of test_two `ValueError` is raised: |
1531 | @@ -302,15 +289,17 @@ |
1532 | >>> test_two.unsubscribe('nomember@example.com') |
1533 | Traceback (most recent call last): |
1534 | ... |
1535 | - ValueError: nomember@example.com is not a member address of test-two@example.com |
1536 | + ValueError: nomember@example.com is not a member address of |
1537 | + test-two@example.com |
1538 | |
1539 | After a while, Anna decides to unsubscribe from the Test One mailing list, |
1540 | though she keeps her Test Two membership active. |
1541 | |
1542 | + >>> import time |
1543 | >>> time.sleep(2) |
1544 | >>> test_one.unsubscribe('anna@example.com') |
1545 | >>> for member in client.members: |
1546 | - ... print member |
1547 | + ... print(member) |
1548 | <Member "bill@example.com" on "test-one.example.com"> |
1549 | <Member "anna@example.com" on "test-two.example.com"> |
1550 | <Member "cris@example.com" on "test-two.example.com"> |
1551 | @@ -319,16 +308,19 @@ |
1552 | |
1553 | >>> cris_test_two.unsubscribe() |
1554 | >>> for member in client.members: |
1555 | - ... print member |
1556 | + ... print(member) |
1557 | <Member "bill@example.com" on "test-one.example.com"> |
1558 | <Member "anna@example.com" on "test-two.example.com"> |
1559 | |
1560 | -If you try to unsubscribe an address which is not a member address `ValueError` is raised: |
1561 | +If you try to unsubscribe an address which is not a member address |
1562 | +`ValueError` is raised: |
1563 | |
1564 | >>> test_one.unsubscribe('nomember@example.com') |
1565 | Traceback (most recent call last): |
1566 | ... |
1567 | - ValueError: nomember@example.com is not a member address of test-one@example.com |
1568 | + ValueError: nomember@example.com is not a member address of |
1569 | + test-one@example.com |
1570 | + |
1571 | |
1572 | Non-Members |
1573 | =========== |
1574 | @@ -347,13 +339,15 @@ |
1575 | When someone tries to send a message to the list and they are not a |
1576 | subscriber, they get added to the nonmember list. |
1577 | |
1578 | + |
1579 | Users |
1580 | ===== |
1581 | |
1582 | -Users are people with one or more list memberhips. To get a list of all users, access the clients user property. |
1583 | +Users are people with one or more list memberships. To get a list of all users, |
1584 | +access the clients user property. |
1585 | |
1586 | >>> for user in client.users: |
1587 | - ... print user |
1588 | + ... print(user) |
1589 | <User "..." (...)> |
1590 | <User "..." (...)> |
1591 | <User "..." (...)> |
1592 | @@ -365,7 +359,7 @@ |
1593 | 1 |
1594 | |
1595 | >>> for user in page: |
1596 | - ... print user |
1597 | + ... print(user) |
1598 | <User "Anna" (...)> |
1599 | <User "Bill" (...)> |
1600 | |
1601 | @@ -376,7 +370,7 @@ |
1602 | 2 |
1603 | |
1604 | >>> for user in page: |
1605 | - ... print user |
1606 | + ... print(user) |
1607 | <User "Cris" (...)> |
1608 | |
1609 | >>> page = page.previous |
1610 | @@ -384,34 +378,34 @@ |
1611 | 1 |
1612 | |
1613 | >>> for user in page: |
1614 | - ... print user |
1615 | + ... print(user) |
1616 | <User "Anna" (...)> |
1617 | <User "Bill" (...)> |
1618 | |
1619 | A single user can be retrieved using their email address. |
1620 | |
1621 | >>> cris = client.get_user('cris@example.com') |
1622 | - >>> print cris.display_name |
1623 | + >>> print(cris.display_name) |
1624 | Cris |
1625 | |
1626 | Every user has a list of one or more addresses. |
1627 | |
1628 | >>> for address in cris.addresses: |
1629 | - ... print address |
1630 | - ... print address.display_name |
1631 | - ... print address.registered_on |
1632 | + ... print(address) |
1633 | + ... print(address.display_name) |
1634 | + ... print(address.registered_on) |
1635 | cris@example.com |
1636 | Cris |
1637 | ... |
1638 | - |
1639 | + |
1640 | Multiple addresses can be assigned to a user record: |
1641 | |
1642 | >>> cris.add_address('cris.person@example.org') |
1643 | - >>> print client.get_address('cris.person@example.org') |
1644 | + >>> print(client.get_address('cris.person@example.org')) |
1645 | cris.person@example.org |
1646 | |
1647 | >>> for address in cris.addresses: |
1648 | - ... print address |
1649 | + ... print(address) |
1650 | cris.person@example.org |
1651 | cris@example.com |
1652 | |
1653 | @@ -422,14 +416,14 @@ |
1654 | Addresses can be accessed directly: |
1655 | |
1656 | >>> address = client.get_address('cris@example.com') |
1657 | - >>> print address |
1658 | + >>> print(address) |
1659 | cris@example.com |
1660 | - >>> print address.display_name |
1661 | + >>> print(address.display_name) |
1662 | Cris |
1663 | |
1664 | The address has not been verified: |
1665 | |
1666 | - >>> print address.verified_on is None |
1667 | + >>> print(address.verified_on is None) |
1668 | True |
1669 | |
1670 | But that can be done via the address object: |
1671 | @@ -451,9 +445,9 @@ |
1672 | ... display_name='Ler') |
1673 | <User "Ler" (...)> |
1674 | >>> ler = client.get_user('ler@primus.org') |
1675 | - >>> print ler.password |
1676 | + >>> print(ler.password) |
1677 | $... |
1678 | - >>> print ler.display_name |
1679 | + >>> print(ler.display_name) |
1680 | Ler |
1681 | |
1682 | User attributes can be changed through assignment, but you need to call the |
1683 | @@ -462,7 +456,7 @@ |
1684 | >>> ler.display_name = 'Sir Ler' |
1685 | >>> ler.save() |
1686 | >>> ler = client.get_user('ler@primus.org') |
1687 | - >>> print ler.display_name |
1688 | + >>> print(ler.display_name) |
1689 | Sir Ler |
1690 | |
1691 | Passwords can be changed as well: |
1692 | @@ -483,39 +477,41 @@ |
1693 | |
1694 | >>> bill = client.get_user('bill@example.com') |
1695 | >>> for subscription in bill.subscriptions: |
1696 | - ... print subscription |
1697 | + ... print(subscription) |
1698 | <Member "bill@example.com" on "test-one.example.com"> |
1699 | |
1700 | -If all you need are the list ids of all mailing lists a user is subscribed to, you can use the ``subscription_list_ids`` property. |
1701 | +If all you need are the list ids of all mailing lists a user is subscribed to, |
1702 | +you can use the ``subscription_list_ids`` property. |
1703 | |
1704 | >>> for list_id in bill.subscription_list_ids: |
1705 | - ... print list_id |
1706 | + ... print(list_id) |
1707 | test-one.example.com |
1708 | |
1709 | |
1710 | List Settings |
1711 | ============= |
1712 | |
1713 | -We can get all list settings via a lists settings attribute. A proxy object for the settings is returned which behaves much like a dictionary. |
1714 | +We can get all list settings via a lists settings attribute. A proxy object |
1715 | +for the settings is returned which behaves much like a dictionary. |
1716 | |
1717 | >>> settings = test_one.settings |
1718 | >>> len(settings) |
1719 | 50 |
1720 | |
1721 | >>> for attr in sorted(settings): |
1722 | - ... print attr + ': ' + str(settings[attr]) |
1723 | + ... print(attr + ': ' + str(settings[attr])) |
1724 | acceptable_aliases: [] |
1725 | ... |
1726 | welcome_message_uri: mailman:///welcome.txt |
1727 | |
1728 | - >>> print settings['display_name'] |
1729 | + >>> print(settings['display_name']) |
1730 | Test-one |
1731 | |
1732 | We can access all valid list settings as attributes. |
1733 | |
1734 | - >>> print settings['fqdn_listname'] |
1735 | + >>> print(settings['fqdn_listname']) |
1736 | test-one@example.com |
1737 | - >>> print settings['description'] |
1738 | + >>> print(settings['description']) |
1739 | |
1740 | >>> settings['description'] = 'A very meaningful description.' |
1741 | >>> settings['display_name'] = 'Test Numero Uno' |
1742 | @@ -523,14 +519,16 @@ |
1743 | >>> settings.save() |
1744 | |
1745 | >>> settings_new = test_one.settings |
1746 | - >>> print settings_new['description'] |
1747 | + >>> print(settings_new['description']) |
1748 | A very meaningful description. |
1749 | - >>> print settings_new['display_name'] |
1750 | + >>> print(settings_new['display_name']) |
1751 | Test Numero Uno |
1752 | |
1753 | -The settings object also supports the `get` method of usual Python dictionaries: |
1754 | +The settings object also supports the `get` method of usual Python |
1755 | +dictionaries: |
1756 | |
1757 | - >>> print settings_new.get('OhNoIForgotTheKey', 'HowGoodIPlacedOneUnderTheDoormat') |
1758 | + >>> print(settings_new.get('OhNoIForgotTheKey', |
1759 | + ... 'HowGoodIPlacedOneUnderTheDoormat')) |
1760 | HowGoodIPlacedOneUnderTheDoormat |
1761 | |
1762 | |
1763 | @@ -539,31 +537,33 @@ |
1764 | |
1765 | Preferences can be accessed and set for users, members and addresses. |
1766 | |
1767 | -By default, preferences are not set and fall back to the global system preferences. They're read-only and can be accessed through the client object. |
1768 | +By default, preferences are not set and fall back to the global system |
1769 | +preferences. They're read-only and can be accessed through the client object. |
1770 | |
1771 | >>> global_prefs = client.preferences |
1772 | - >>> print global_prefs['acknowledge_posts'] |
1773 | + >>> print(global_prefs['acknowledge_posts']) |
1774 | False |
1775 | - >>> print global_prefs['delivery_mode'] |
1776 | + >>> print(global_prefs['delivery_mode']) |
1777 | regular |
1778 | - >>> print global_prefs['delivery_status'] |
1779 | + >>> print(global_prefs['delivery_status']) |
1780 | enabled |
1781 | - >>> print global_prefs['hide_address'] |
1782 | + >>> print(global_prefs['hide_address']) |
1783 | True |
1784 | - >>> print global_prefs['preferred_language'] |
1785 | + >>> print(global_prefs['preferred_language']) |
1786 | en |
1787 | - >>> print global_prefs['receive_list_copy'] |
1788 | + >>> print(global_prefs['receive_list_copy']) |
1789 | True |
1790 | - >>> print global_prefs['receive_own_postings'] |
1791 | + >>> print(global_prefs['receive_own_postings']) |
1792 | True |
1793 | |
1794 | -Preferences can be set, but you have to call ``save`` to make your changes permanent. |
1795 | +Preferences can be set, but you have to call ``save`` to make your changes |
1796 | +permanent. |
1797 | |
1798 | >>> prefs = test_two.get_member('anna@example.com').preferences |
1799 | >>> prefs['delivery_status'] = 'by_user' |
1800 | >>> prefs.save() |
1801 | >>> prefs = test_two.get_member('anna@example.com').preferences |
1802 | - >>> print prefs['delivery_status'] |
1803 | + >>> print(prefs['delivery_status']) |
1804 | by_user |
1805 | |
1806 | |
1807 | @@ -581,7 +581,7 @@ |
1808 | |
1809 | >>> test_one.add_owner('foo@example.com') |
1810 | >>> for owner in test_one.owners: |
1811 | - ... print owner |
1812 | + ... print(owner) |
1813 | foo@example.com |
1814 | |
1815 | The owner of the list not automatically added as a member: |
1816 | @@ -593,7 +593,7 @@ |
1817 | |
1818 | >>> test_one.add_moderator('bar@example.com') |
1819 | >>> for moderator in test_one.moderators: |
1820 | - ... print moderator |
1821 | + ... print(moderator) |
1822 | bar@example.com |
1823 | |
1824 | Moderators are also not automatically added as members: |
1825 | @@ -608,7 +608,7 @@ |
1826 | <Member "bar@example.com" on "test-one.example.com"> |
1827 | |
1828 | >>> for member in client.members: |
1829 | - ... print '%s: %s' %(member, member.role) |
1830 | + ... print('%s: %s' %(member, member.role)) |
1831 | <Member "foo@example.com" on "test-one.example.com">: owner |
1832 | <Member "bar@example.com" on "test-one.example.com">: moderator |
1833 | <Member "bar@example.com" on "test-one.example.com">: member |
1834 | @@ -632,33 +632,52 @@ |
1835 | Message Moderation |
1836 | ------------------ |
1837 | |
1838 | +By injecting a message by a non-member into the incoming queue, we can |
1839 | +simulate a message being held for moderator approval. |
1840 | + |
1841 | >>> msg = """From: nomember@example.com |
1842 | ... To: test-one@example.com |
1843 | ... Subject: Something |
1844 | ... Message-ID: <moderated_01> |
1845 | - ... |
1846 | + ... |
1847 | ... Some text. |
1848 | - ... |
1849 | + ... |
1850 | ... """ |
1851 | - >>> inject_message('test-one@example.com', msg) |
1852 | + >>> inq = client.queues['in'] |
1853 | + >>> inq.inject('test-one.example.com', msg) |
1854 | + |
1855 | +Now wait until the message has been processed. |
1856 | + |
1857 | + >>> while True: |
1858 | + ... if len(inq.files) == 0: |
1859 | + ... break |
1860 | + ... time.sleep(0.1) |
1861 | + |
1862 | +It might take a few moments for the message to show up in the moderation |
1863 | +queue. |
1864 | + |
1865 | + >>> while True: |
1866 | + ... held = test_one.held |
1867 | + ... if len(held) > 0: |
1868 | + ... break |
1869 | + ... time.sleep(0.1) |
1870 | |
1871 | Messages held for moderation can be listed on a per list basis. |
1872 | |
1873 | - >>> held = test_one.held |
1874 | - >>> print held[0]['subject'] |
1875 | + >>> print(held[0]['subject']) |
1876 | Something |
1877 | - >>> print held[0]['reason'] |
1878 | + >>> print(held[0]['reason']) |
1879 | <BLANKLINE> |
1880 | - >>> print held[0]['request_id'] |
1881 | + >>> print(held[0]['request_id']) |
1882 | 1 |
1883 | |
1884 | - >>> print test_one.defer_message(held[0]['request_id'])['status'] |
1885 | + >>> print(test_one.defer_message(held[0]['request_id'])['status']) |
1886 | 204 |
1887 | |
1888 | >>> len(test_one.held) |
1889 | 1 |
1890 | |
1891 | - >>> print test_one.discard_message(held[0]['request_id'])['status'] |
1892 | + >>> print(test_one.discard_message(held[0]['request_id'])['status']) |
1893 | 204 |
1894 | |
1895 | >>> len(test_one.held) |
1896 | |
1897 | === added directory 'src/mailmanclient/testing' |
1898 | === added file 'src/mailmanclient/testing/__init__.py' |
1899 | === added file 'src/mailmanclient/testing/documentation.py' |
1900 | --- src/mailmanclient/testing/documentation.py 1970-01-01 00:00:00 +0000 |
1901 | +++ src/mailmanclient/testing/documentation.py 2015-01-04 23:44:27 +0000 |
1902 | @@ -0,0 +1,84 @@ |
1903 | +# Copyright (C) 2007-2015 by the Free Software Foundation, Inc. |
1904 | +# |
1905 | +# This file is part of GNU Mailman. |
1906 | +# |
1907 | +# GNU Mailman is free software: you can redistribute it and/or modify it under |
1908 | +# the terms of the GNU General Public License as published by the Free |
1909 | +# Software Foundation, either version 3 of the License, or (at your option) |
1910 | +# any later version. |
1911 | +# |
1912 | +# GNU Mailman is distributed in the hope that it will be useful, but WITHOUT |
1913 | +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
1914 | +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
1915 | +# more details. |
1916 | +# |
1917 | +# You should have received a copy of the GNU General Public License along with |
1918 | +# GNU Mailman. If not, see <http://www.gnu.org/licenses/>. |
1919 | + |
1920 | +"""Harness for testing Mailman's documentation. |
1921 | + |
1922 | +Note that doctest extraction does not currently work for zip file |
1923 | +distributions. doctest discovery currently requires file system traversal. |
1924 | +""" |
1925 | + |
1926 | +from __future__ import absolute_import, print_function, unicode_literals |
1927 | + |
1928 | +__metaclass__ = type |
1929 | +__all__ = [ |
1930 | + 'setup', |
1931 | + 'teardown' |
1932 | + ] |
1933 | + |
1934 | + |
1935 | +from inspect import isfunction, ismethod |
1936 | + |
1937 | + |
1938 | + |
1939 | |
1940 | +def stop(): |
1941 | + """Call into pdb.set_trace()""" |
1942 | + # Do the import here so that you get the wacky special hacked pdb instead |
1943 | + # of Python's normal pdb. |
1944 | + import pdb |
1945 | + pdb.set_trace() |
1946 | + |
1947 | + |
1948 | +def dump(results): |
1949 | + if results is None: |
1950 | + print(None) |
1951 | + return |
1952 | + for key in sorted(results): |
1953 | + if key == 'entries': |
1954 | + for i, entry in enumerate(results[key]): |
1955 | + # entry is a dictionary. |
1956 | + print('entry %d:' % i) |
1957 | + for entry_key in sorted(entry): |
1958 | + print(' {0}: {1}'.format(entry_key, entry[entry_key])) |
1959 | + else: |
1960 | + print('{0}: {1}'.format(key, results[key])) |
1961 | + |
1962 | + |
1963 | + |
1964 | |
1965 | +def setup(testobj): |
1966 | + """Test setup.""" |
1967 | + # Make sure future statements in our doctests are the same as everywhere |
1968 | + # else. |
1969 | + testobj.globs['absolute_import'] = absolute_import |
1970 | + testobj.globs['print_function'] = print_function |
1971 | + testobj.globs['unicode_literals'] = unicode_literals |
1972 | + # In general, I don't like adding convenience functions, since I think |
1973 | + # doctests should do the imports themselves. It makes for better |
1974 | + # documentation that way. However, a few are really useful, or help to |
1975 | + # hide some icky test implementation details. |
1976 | + testobj.globs['stop'] = stop |
1977 | + testobj.globs['dump'] = dump |
1978 | + # Add this so that cleanups can be automatically added by the doctest. |
1979 | + testobj.globs['cleanups'] = [] |
1980 | + |
1981 | + |
1982 | + |
1983 | |
1984 | +def teardown(testobj): |
1985 | + for cleanup in testobj.globs['cleanups']: |
1986 | + if isfunction(cleanup) or ismethod(cleanup): |
1987 | + cleanup() |
1988 | + else: |
1989 | + cleanup[0](*cleanup[1:]) |
1990 | |
1991 | === added file 'src/mailmanclient/testing/nose.py' |
1992 | --- src/mailmanclient/testing/nose.py 1970-01-01 00:00:00 +0000 |
1993 | +++ src/mailmanclient/testing/nose.py 2015-01-04 23:44:27 +0000 |
1994 | @@ -0,0 +1,129 @@ |
1995 | +# Copyright (C) 2013-2015 by the Free Software Foundation, Inc. |
1996 | +# |
1997 | +# This file is part of GNU Mailman. |
1998 | +# |
1999 | +# GNU Mailman is free software: you can redistribute it and/or modify it under |
2000 | +# the terms of the GNU General Public License as published by the Free |
2001 | +# Software Foundation, either version 3 of the License, or (at your option) |
2002 | +# any later version. |
2003 | +# |
2004 | +# GNU Mailman is distributed in the hope that it will be useful, but WITHOUT |
2005 | +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
2006 | +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
2007 | +# more details. |
2008 | +# |
2009 | +# You should have received a copy of the GNU General Public License along with |
2010 | +# GNU Mailman. If not, see <http://www.gnu.org/licenses/>. |
2011 | + |
2012 | +"""nose2 test infrastructure.""" |
2013 | + |
2014 | +__all__ = [ |
2015 | + 'NosePlugin', |
2016 | + ] |
2017 | + |
2018 | + |
2019 | +import os |
2020 | +import re |
2021 | +import vcr |
2022 | +import errno |
2023 | +import doctest |
2024 | +import mailmanclient |
2025 | + |
2026 | +from contextlib2 import ExitStack |
2027 | +from mailmanclient.testing.documentation import setup, teardown |
2028 | +from nose2.events import Plugin |
2029 | + |
2030 | + |
2031 | +DOT = '.' |
2032 | +FLAGS = doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE | doctest.REPORT_NDIFF |
2033 | +TOPDIR = os.path.dirname(mailmanclient.__file__) |
2034 | + |
2035 | + |
2036 | + |
2037 | |
2038 | +class NosePlugin(Plugin): |
2039 | + configSection = 'mailman' |
2040 | + |
2041 | + def __init__(self): |
2042 | + super(NosePlugin, self).__init__() |
2043 | + self.patterns = [] |
2044 | + self.stderr = False |
2045 | + self.record = False |
2046 | + def set_stderr(ignore): |
2047 | + self.stderr = True |
2048 | + self.addArgument(self.patterns, 'P', 'pattern', |
2049 | + 'Add a test matching pattern') |
2050 | + self.addFlag(set_stderr, 'E', 'stderr', |
2051 | + 'Enable stderr logging to sub-runners') |
2052 | + def set_record(ignore): |
2053 | + self.record = True |
2054 | + self.addFlag(set_record, 'R', 'rerecord', |
2055 | + """Force re-recording of test responses. Requires |
2056 | + Mailman to be running.""") |
2057 | + self._data_path = os.path.join(TOPDIR, 'tests', 'data', 'tape.yaml') |
2058 | + self._resources = ExitStack() |
2059 | + |
2060 | + def startTestRun(self, event): |
2061 | + # Check to see if we're running the test suite in record mode. If so, |
2062 | + # delete any existing recording. |
2063 | + if self.record: |
2064 | + try: |
2065 | + os.remove(self._data_path) |
2066 | + except OSError as error: |
2067 | + if error.errno != errno.ENOENT: |
2068 | + raise |
2069 | + # This will automatically create the recording file. |
2070 | + self._resources.enter_context(vcr.use_cassette(self._data_path)) |
2071 | + |
2072 | + def stopTestRun(self, event): |
2073 | + # Stop all recording. |
2074 | + self._resources.close() |
2075 | + |
2076 | + def getTestCaseNames(self, event): |
2077 | + if len(self.patterns) == 0: |
2078 | + # No filter patterns, so everything should be tested. |
2079 | + return |
2080 | + # Does the pattern match the fully qualified class name? |
2081 | + for pattern in self.patterns: |
2082 | + full_class_name = '{}.{}'.format( |
2083 | + event.testCase.__module__, event.testCase.__name__) |
2084 | + if re.search(pattern, full_class_name): |
2085 | + # Don't suppress this test class. |
2086 | + return |
2087 | + names = filter(event.isTestMethod, dir(event.testCase)) |
2088 | + for name in names: |
2089 | + full_test_name = '{}.{}.{}'.format( |
2090 | + event.testCase.__module__, |
2091 | + event.testCase.__name__, |
2092 | + name) |
2093 | + for pattern in self.patterns: |
2094 | + if re.search(pattern, full_test_name): |
2095 | + break |
2096 | + else: |
2097 | + event.excludedNames.append(name) |
2098 | + |
2099 | + def handleFile(self, event): |
2100 | + path = event.path[len(TOPDIR)+1:] |
2101 | + if len(self.patterns) > 0: |
2102 | + for pattern in self.patterns: |
2103 | + if re.search(pattern, path): |
2104 | + break |
2105 | + else: |
2106 | + # Skip this doctest. |
2107 | + return |
2108 | + base, ext = os.path.splitext(path) |
2109 | + if ext != '.rst': |
2110 | + return |
2111 | + test = doctest.DocFileTest( |
2112 | + path, package=mailmanclient, |
2113 | + optionflags=FLAGS, |
2114 | + setUp=setup, |
2115 | + tearDown=teardown) |
2116 | + # Suppress the extra "Doctest: ..." line. |
2117 | + test.shortDescription = lambda: None |
2118 | + event.extraTests.append(test) |
2119 | + |
2120 | + ## def startTest(self, event): |
2121 | + ## import sys; print('vvvvv', event.test, file=sys.stderr) |
2122 | + |
2123 | + ## def stopTest(self, event): |
2124 | + ## import sys; print('^^^^^', event.test, file=sys.stderr) |
2125 | |
2126 | === added directory 'src/mailmanclient/tests/data' |
2127 | === added file 'src/mailmanclient/tests/data/tape.yaml' |
2128 | --- src/mailmanclient/tests/data/tape.yaml 1970-01-01 00:00:00 +0000 |
2129 | +++ src/mailmanclient/tests/data/tape.yaml 2015-01-04 23:44:27 +0000 |
2130 | @@ -0,0 +1,3905 @@ |
2131 | +interactions: |
2132 | +- request: |
2133 | + body: null |
2134 | + headers: |
2135 | + accept-encoding: ['gzip, deflate'] |
2136 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2137 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2138 | + method: GET |
2139 | + uri: http://localhost:9001/3.0/domains/example.org |
2140 | + response: |
2141 | + body: {string: 404 Not Found} |
2142 | + headers: |
2143 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2144 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2145 | + content-length: ['13'] |
2146 | + content-type: [application/json; charset=utf-8] |
2147 | + status: {code: 404, message: Not Found} |
2148 | +- request: |
2149 | + body: null |
2150 | + headers: |
2151 | + accept-encoding: ['gzip, deflate'] |
2152 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2153 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2154 | + method: GET |
2155 | + uri: http://localhost:9001/3.0/system/versions |
2156 | + response: |
2157 | + body: {string: '{"python_version": "3.4.2 (default, Dec 27 2014, 23:37:21) \n[GCC |
2158 | + 4.9.2]", "http_etag": "\"9fa41b456a0e065e31f34bf9ce42637722d3bf15\"", "mailman_version": |
2159 | + "GNU Mailman 3.0.0b5 (Carve Away The Stone)", "self_link": "http://localhost:9001/3.0/system/versions"}'} |
2160 | + headers: |
2161 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2162 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2163 | + content-length: ['258'] |
2164 | + content-type: [application/json; charset=utf-8] |
2165 | + status: {code: 200, message: OK} |
2166 | +- request: |
2167 | + body: null |
2168 | + headers: |
2169 | + accept-encoding: ['gzip, deflate'] |
2170 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2171 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2172 | + method: GET |
2173 | + uri: http://localhost:9001/3.0/lists |
2174 | + response: |
2175 | + body: {string: '{"http_etag": "\"32223434a0f3af4cdc4673d1fbc5bac1f6d98fd3\"", |
2176 | + "total_size": 0, "start": 0}'} |
2177 | + headers: |
2178 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2179 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2180 | + content-length: ['90'] |
2181 | + content-type: [application/json; charset=utf-8] |
2182 | + status: {code: 200, message: OK} |
2183 | +- request: |
2184 | + body: null |
2185 | + headers: |
2186 | + accept-encoding: ['gzip, deflate'] |
2187 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2188 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2189 | + method: GET |
2190 | + uri: http://localhost:9001/3.0/domains |
2191 | + response: |
2192 | + body: {string: '{"http_etag": "\"32223434a0f3af4cdc4673d1fbc5bac1f6d98fd3\"", |
2193 | + "total_size": 0, "start": 0}'} |
2194 | + headers: |
2195 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2196 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2197 | + content-length: ['90'] |
2198 | + content-type: [application/json; charset=utf-8] |
2199 | + status: {code: 200, message: OK} |
2200 | +- request: |
2201 | + body: contact_address=admin%40example.com&mail_host=example.com |
2202 | + headers: |
2203 | + accept-encoding: ['gzip, deflate'] |
2204 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2205 | + content-type: [application/x-www-form-urlencoded] |
2206 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2207 | + method: POST |
2208 | + uri: http://localhost:9001/3.0/domains |
2209 | + response: |
2210 | + body: {string: ''} |
2211 | + headers: |
2212 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2213 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2214 | + content-length: ['0'] |
2215 | + location: ['http://localhost:9001/3.0/domains/example.com'] |
2216 | + status: {code: 201, message: Created} |
2217 | +- request: |
2218 | + body: null |
2219 | + headers: |
2220 | + accept-encoding: ['gzip, deflate'] |
2221 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2222 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2223 | + method: GET |
2224 | + uri: http://localhost:9001/3.0/domains/example.com |
2225 | + response: |
2226 | + body: {string: '{"base_url": "http://example.com", "http_etag": "\"8e9e004095e6daf79c3b9906bf1bb63f21cf60d7\"", |
2227 | + "url_host": "example.com", "self_link": "http://localhost:9001/3.0/domains/example.com", |
2228 | + "contact_address": "admin@example.com", "mail_host": "example.com", "description": |
2229 | + null}'} |
2230 | + headers: |
2231 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2232 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2233 | + content-length: ['273'] |
2234 | + content-type: [application/json; charset=utf-8] |
2235 | + status: {code: 200, message: OK} |
2236 | +- request: |
2237 | + body: null |
2238 | + headers: |
2239 | + accept-encoding: ['gzip, deflate'] |
2240 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2241 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2242 | + method: GET |
2243 | + uri: http://localhost:9001/3.0/domains/example.com |
2244 | + response: |
2245 | + body: {string: '{"base_url": "http://example.com", "http_etag": "\"8e9e004095e6daf79c3b9906bf1bb63f21cf60d7\"", |
2246 | + "url_host": "example.com", "self_link": "http://localhost:9001/3.0/domains/example.com", |
2247 | + "contact_address": "admin@example.com", "mail_host": "example.com", "description": |
2248 | + null}'} |
2249 | + headers: |
2250 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2251 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2252 | + content-length: ['273'] |
2253 | + content-type: [application/json; charset=utf-8] |
2254 | + status: {code: 200, message: OK} |
2255 | +- request: |
2256 | + body: null |
2257 | + headers: |
2258 | + accept-encoding: ['gzip, deflate'] |
2259 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2260 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2261 | + method: GET |
2262 | + uri: http://localhost:9001/3.0/domains/example.com |
2263 | + response: |
2264 | + body: {string: '{"base_url": "http://example.com", "http_etag": "\"8e9e004095e6daf79c3b9906bf1bb63f21cf60d7\"", |
2265 | + "url_host": "example.com", "self_link": "http://localhost:9001/3.0/domains/example.com", |
2266 | + "contact_address": "admin@example.com", "mail_host": "example.com", "description": |
2267 | + null}'} |
2268 | + headers: |
2269 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2270 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2271 | + content-length: ['273'] |
2272 | + content-type: [application/json; charset=utf-8] |
2273 | + status: {code: 200, message: OK} |
2274 | +- request: |
2275 | + body: null |
2276 | + headers: |
2277 | + accept-encoding: ['gzip, deflate'] |
2278 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2279 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2280 | + method: GET |
2281 | + uri: http://localhost:9001/3.0/domains |
2282 | + response: |
2283 | + body: {string: '{"entries": [{"base_url": "http://example.com", "http_etag": "\"8e9e004095e6daf79c3b9906bf1bb63f21cf60d7\"", |
2284 | + "url_host": "example.com", "self_link": "http://localhost:9001/3.0/domains/example.com", |
2285 | + "contact_address": "admin@example.com", "mail_host": "example.com", "description": |
2286 | + null}], "http_etag": "\"6df529c1146b355d86760c043ba724375711c3fb\"", "total_size": |
2287 | + 1, "start": 0}'} |
2288 | + headers: |
2289 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2290 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2291 | + content-length: ['378'] |
2292 | + content-type: [application/json; charset=utf-8] |
2293 | + status: {code: 200, message: OK} |
2294 | +- request: |
2295 | + body: null |
2296 | + headers: |
2297 | + accept-encoding: ['gzip, deflate'] |
2298 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2299 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2300 | + method: GET |
2301 | + uri: http://localhost:9001/3.0/domains/example.com |
2302 | + response: |
2303 | + body: {string: '{"base_url": "http://example.com", "http_etag": "\"8e9e004095e6daf79c3b9906bf1bb63f21cf60d7\"", |
2304 | + "url_host": "example.com", "self_link": "http://localhost:9001/3.0/domains/example.com", |
2305 | + "contact_address": "admin@example.com", "mail_host": "example.com", "description": |
2306 | + null}'} |
2307 | + headers: |
2308 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2309 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2310 | + content-length: ['273'] |
2311 | + content-type: [application/json; charset=utf-8] |
2312 | + status: {code: 200, message: OK} |
2313 | +- request: |
2314 | + body: mail_host=example.net |
2315 | + headers: |
2316 | + accept-encoding: ['gzip, deflate'] |
2317 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2318 | + content-type: [application/x-www-form-urlencoded] |
2319 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2320 | + method: POST |
2321 | + uri: http://localhost:9001/3.0/domains |
2322 | + response: |
2323 | + body: {string: ''} |
2324 | + headers: |
2325 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2326 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2327 | + content-length: ['0'] |
2328 | + location: ['http://localhost:9001/3.0/domains/example.net'] |
2329 | + status: {code: 201, message: Created} |
2330 | +- request: |
2331 | + body: null |
2332 | + headers: |
2333 | + accept-encoding: ['gzip, deflate'] |
2334 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2335 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2336 | + method: GET |
2337 | + uri: http://localhost:9001/3.0/domains/example.net |
2338 | + response: |
2339 | + body: {string: '{"base_url": "http://example.net", "http_etag": "\"e9851cfb8e0e0999c083459951f4f9764f3be325\"", |
2340 | + "url_host": "example.net", "self_link": "http://localhost:9001/3.0/domains/example.net", |
2341 | + "contact_address": "postmaster@example.net", "mail_host": "example.net", "description": |
2342 | + null}'} |
2343 | + headers: |
2344 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2345 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2346 | + content-length: ['278'] |
2347 | + content-type: [application/json; charset=utf-8] |
2348 | + status: {code: 200, message: OK} |
2349 | +- request: |
2350 | + body: mail_host=example.org |
2351 | + headers: |
2352 | + accept-encoding: ['gzip, deflate'] |
2353 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2354 | + content-type: [application/x-www-form-urlencoded] |
2355 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2356 | + method: POST |
2357 | + uri: http://localhost:9001/3.0/domains |
2358 | + response: |
2359 | + body: {string: ''} |
2360 | + headers: |
2361 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2362 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2363 | + content-length: ['0'] |
2364 | + location: ['http://localhost:9001/3.0/domains/example.org'] |
2365 | + status: {code: 201, message: Created} |
2366 | +- request: |
2367 | + body: null |
2368 | + headers: |
2369 | + accept-encoding: ['gzip, deflate'] |
2370 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2371 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2372 | + method: GET |
2373 | + uri: http://localhost:9001/3.0/domains/example.org |
2374 | + response: |
2375 | + body: {string: '{"base_url": "http://example.org", "http_etag": "\"730f23a7a90aecfe1248f952d15bcfe97ce9e51f\"", |
2376 | + "url_host": "example.org", "self_link": "http://localhost:9001/3.0/domains/example.org", |
2377 | + "contact_address": "postmaster@example.org", "mail_host": "example.org", "description": |
2378 | + null}'} |
2379 | + headers: |
2380 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2381 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2382 | + content-length: ['278'] |
2383 | + content-type: [application/json; charset=utf-8] |
2384 | + status: {code: 200, message: OK} |
2385 | +- request: |
2386 | + body: null |
2387 | + headers: |
2388 | + accept-encoding: ['gzip, deflate'] |
2389 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2390 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2391 | + method: GET |
2392 | + uri: http://localhost:9001/3.0/domains |
2393 | + response: |
2394 | + body: {string: '{"entries": [{"base_url": "http://example.com", "http_etag": "\"8e9e004095e6daf79c3b9906bf1bb63f21cf60d7\"", |
2395 | + "url_host": "example.com", "self_link": "http://localhost:9001/3.0/domains/example.com", |
2396 | + "contact_address": "admin@example.com", "mail_host": "example.com", "description": |
2397 | + null}, {"base_url": "http://example.net", "http_etag": "\"e9851cfb8e0e0999c083459951f4f9764f3be325\"", |
2398 | + "url_host": "example.net", "self_link": "http://localhost:9001/3.0/domains/example.net", |
2399 | + "contact_address": "postmaster@example.net", "mail_host": "example.net", "description": |
2400 | + null}, {"base_url": "http://example.org", "http_etag": "\"730f23a7a90aecfe1248f952d15bcfe97ce9e51f\"", |
2401 | + "url_host": "example.org", "self_link": "http://localhost:9001/3.0/domains/example.org", |
2402 | + "contact_address": "postmaster@example.org", "mail_host": "example.org", "description": |
2403 | + null}], "http_etag": "\"f76dc099470a0e1b5bb1788c290dbff8b2e06822\"", "total_size": |
2404 | + 3, "start": 0}'} |
2405 | + headers: |
2406 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2407 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2408 | + content-length: ['938'] |
2409 | + content-type: [application/json; charset=utf-8] |
2410 | + status: {code: 200, message: OK} |
2411 | +- request: |
2412 | + body: null |
2413 | + headers: |
2414 | + accept-encoding: ['gzip, deflate'] |
2415 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2416 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2417 | + method: GET |
2418 | + uri: http://localhost:9001/3.0/domains/example.com |
2419 | + response: |
2420 | + body: {string: '{"base_url": "http://example.com", "http_etag": "\"8e9e004095e6daf79c3b9906bf1bb63f21cf60d7\"", |
2421 | + "url_host": "example.com", "self_link": "http://localhost:9001/3.0/domains/example.com", |
2422 | + "contact_address": "admin@example.com", "mail_host": "example.com", "description": |
2423 | + null}'} |
2424 | + headers: |
2425 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2426 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2427 | + content-length: ['273'] |
2428 | + content-type: [application/json; charset=utf-8] |
2429 | + status: {code: 200, message: OK} |
2430 | +- request: |
2431 | + body: null |
2432 | + headers: |
2433 | + accept-encoding: ['gzip, deflate'] |
2434 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2435 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2436 | + method: GET |
2437 | + uri: http://localhost:9001/3.0/domains/example.net |
2438 | + response: |
2439 | + body: {string: '{"base_url": "http://example.net", "http_etag": "\"e9851cfb8e0e0999c083459951f4f9764f3be325\"", |
2440 | + "url_host": "example.net", "self_link": "http://localhost:9001/3.0/domains/example.net", |
2441 | + "contact_address": "postmaster@example.net", "mail_host": "example.net", "description": |
2442 | + null}'} |
2443 | + headers: |
2444 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2445 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2446 | + content-length: ['278'] |
2447 | + content-type: [application/json; charset=utf-8] |
2448 | + status: {code: 200, message: OK} |
2449 | +- request: |
2450 | + body: null |
2451 | + headers: |
2452 | + accept-encoding: ['gzip, deflate'] |
2453 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2454 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2455 | + method: GET |
2456 | + uri: http://localhost:9001/3.0/domains/example.org |
2457 | + response: |
2458 | + body: {string: '{"base_url": "http://example.org", "http_etag": "\"730f23a7a90aecfe1248f952d15bcfe97ce9e51f\"", |
2459 | + "url_host": "example.org", "self_link": "http://localhost:9001/3.0/domains/example.org", |
2460 | + "contact_address": "postmaster@example.org", "mail_host": "example.org", "description": |
2461 | + null}'} |
2462 | + headers: |
2463 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2464 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2465 | + content-length: ['278'] |
2466 | + content-type: [application/json; charset=utf-8] |
2467 | + status: {code: 200, message: OK} |
2468 | +- request: |
2469 | + body: null |
2470 | + headers: |
2471 | + accept-encoding: ['gzip, deflate'] |
2472 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2473 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2474 | + method: DELETE |
2475 | + uri: http://localhost:9001/3.0/domains/example.org |
2476 | + response: |
2477 | + body: {string: ''} |
2478 | + headers: |
2479 | + Content-Length: ['0'] |
2480 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2481 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2482 | + status: {code: 204, message: No Content} |
2483 | +- request: |
2484 | + body: null |
2485 | + headers: |
2486 | + accept-encoding: ['gzip, deflate'] |
2487 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2488 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2489 | + method: GET |
2490 | + uri: http://localhost:9001/3.0/domains |
2491 | + response: |
2492 | + body: {string: '{"entries": [{"base_url": "http://example.com", "http_etag": "\"8e9e004095e6daf79c3b9906bf1bb63f21cf60d7\"", |
2493 | + "url_host": "example.com", "self_link": "http://localhost:9001/3.0/domains/example.com", |
2494 | + "contact_address": "admin@example.com", "mail_host": "example.com", "description": |
2495 | + null}, {"base_url": "http://example.net", "http_etag": "\"e9851cfb8e0e0999c083459951f4f9764f3be325\"", |
2496 | + "url_host": "example.net", "self_link": "http://localhost:9001/3.0/domains/example.net", |
2497 | + "contact_address": "postmaster@example.net", "mail_host": "example.net", "description": |
2498 | + null}], "http_etag": "\"8c072a5737b36719925d2e222ca2f8fc5a758b50\"", "total_size": |
2499 | + 2, "start": 0}'} |
2500 | + headers: |
2501 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2502 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2503 | + content-length: ['658'] |
2504 | + content-type: [application/json; charset=utf-8] |
2505 | + status: {code: 200, message: OK} |
2506 | +- request: |
2507 | + body: null |
2508 | + headers: |
2509 | + accept-encoding: ['gzip, deflate'] |
2510 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2511 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2512 | + method: GET |
2513 | + uri: http://localhost:9001/3.0/domains/example.com |
2514 | + response: |
2515 | + body: {string: '{"base_url": "http://example.com", "http_etag": "\"8e9e004095e6daf79c3b9906bf1bb63f21cf60d7\"", |
2516 | + "url_host": "example.com", "self_link": "http://localhost:9001/3.0/domains/example.com", |
2517 | + "contact_address": "admin@example.com", "mail_host": "example.com", "description": |
2518 | + null}'} |
2519 | + headers: |
2520 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2521 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2522 | + content-length: ['273'] |
2523 | + content-type: [application/json; charset=utf-8] |
2524 | + status: {code: 200, message: OK} |
2525 | +- request: |
2526 | + body: null |
2527 | + headers: |
2528 | + accept-encoding: ['gzip, deflate'] |
2529 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2530 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2531 | + method: GET |
2532 | + uri: http://localhost:9001/3.0/domains/example.net |
2533 | + response: |
2534 | + body: {string: '{"base_url": "http://example.net", "http_etag": "\"e9851cfb8e0e0999c083459951f4f9764f3be325\"", |
2535 | + "url_host": "example.net", "self_link": "http://localhost:9001/3.0/domains/example.net", |
2536 | + "contact_address": "postmaster@example.net", "mail_host": "example.net", "description": |
2537 | + null}'} |
2538 | + headers: |
2539 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2540 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2541 | + content-length: ['278'] |
2542 | + content-type: [application/json; charset=utf-8] |
2543 | + status: {code: 200, message: OK} |
2544 | +- request: |
2545 | + body: fqdn_listname=test-one%40example.com |
2546 | + headers: |
2547 | + accept-encoding: ['gzip, deflate'] |
2548 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2549 | + content-type: [application/x-www-form-urlencoded] |
2550 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2551 | + method: POST |
2552 | + uri: http://localhost:9001/3.0/lists |
2553 | + response: |
2554 | + body: {string: ''} |
2555 | + headers: |
2556 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2557 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2558 | + content-length: ['0'] |
2559 | + location: ['http://localhost:9001/3.0/lists/test-one.example.com'] |
2560 | + status: {code: 201, message: Created} |
2561 | +- request: |
2562 | + body: null |
2563 | + headers: |
2564 | + accept-encoding: ['gzip, deflate'] |
2565 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2566 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2567 | + method: GET |
2568 | + uri: http://localhost:9001/3.0/lists/test-one.example.com |
2569 | + response: |
2570 | + body: {string: '{"display_name": "Test-one", "list_name": "test-one", "mail_host": |
2571 | + "example.com", "volume": 1, "fqdn_listname": "test-one@example.com", "member_count": |
2572 | + 0, "http_etag": "\"37400908e98dea4024428dd7983a06b749c86582\"", "self_link": |
2573 | + "http://localhost:9001/3.0/lists/test-one.example.com", "list_id": "test-one.example.com"}'} |
2574 | + headers: |
2575 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2576 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2577 | + content-length: ['319'] |
2578 | + content-type: [application/json; charset=utf-8] |
2579 | + status: {code: 200, message: OK} |
2580 | +- request: |
2581 | + body: null |
2582 | + headers: |
2583 | + accept-encoding: ['gzip, deflate'] |
2584 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2585 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2586 | + method: GET |
2587 | + uri: http://localhost:9001/3.0/lists/test-one@example.com |
2588 | + response: |
2589 | + body: {string: '{"display_name": "Test-one", "list_name": "test-one", "mail_host": |
2590 | + "example.com", "volume": 1, "fqdn_listname": "test-one@example.com", "member_count": |
2591 | + 0, "http_etag": "\"37400908e98dea4024428dd7983a06b749c86582\"", "self_link": |
2592 | + "http://localhost:9001/3.0/lists/test-one.example.com", "list_id": "test-one.example.com"}'} |
2593 | + headers: |
2594 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2595 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2596 | + content-length: ['319'] |
2597 | + content-type: [application/json; charset=utf-8] |
2598 | + status: {code: 200, message: OK} |
2599 | +- request: |
2600 | + body: fqdn_listname=test-two%40example.com |
2601 | + headers: |
2602 | + accept-encoding: ['gzip, deflate'] |
2603 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2604 | + content-type: [application/x-www-form-urlencoded] |
2605 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2606 | + method: POST |
2607 | + uri: http://localhost:9001/3.0/lists |
2608 | + response: |
2609 | + body: {string: ''} |
2610 | + headers: |
2611 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2612 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2613 | + content-length: ['0'] |
2614 | + location: ['http://localhost:9001/3.0/lists/test-two.example.com'] |
2615 | + status: {code: 201, message: Created} |
2616 | +- request: |
2617 | + body: null |
2618 | + headers: |
2619 | + accept-encoding: ['gzip, deflate'] |
2620 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2621 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2622 | + method: GET |
2623 | + uri: http://localhost:9001/3.0/lists/test-two.example.com |
2624 | + response: |
2625 | + body: {string: '{"display_name": "Test-two", "list_name": "test-two", "mail_host": |
2626 | + "example.com", "volume": 1, "fqdn_listname": "test-two@example.com", "member_count": |
2627 | + 0, "http_etag": "\"2b786766b483232ecccef33e919016281990bc7f\"", "self_link": |
2628 | + "http://localhost:9001/3.0/lists/test-two.example.com", "list_id": "test-two.example.com"}'} |
2629 | + headers: |
2630 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2631 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2632 | + content-length: ['319'] |
2633 | + content-type: [application/json; charset=utf-8] |
2634 | + status: {code: 200, message: OK} |
2635 | +- request: |
2636 | + body: null |
2637 | + headers: |
2638 | + accept-encoding: ['gzip, deflate'] |
2639 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2640 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2641 | + method: GET |
2642 | + uri: http://localhost:9001/3.0/domains/example.net |
2643 | + response: |
2644 | + body: {string: '{"base_url": "http://example.net", "http_etag": "\"e9851cfb8e0e0999c083459951f4f9764f3be325\"", |
2645 | + "url_host": "example.net", "self_link": "http://localhost:9001/3.0/domains/example.net", |
2646 | + "contact_address": "postmaster@example.net", "mail_host": "example.net", "description": |
2647 | + null}'} |
2648 | + headers: |
2649 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2650 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2651 | + content-length: ['278'] |
2652 | + content-type: [application/json; charset=utf-8] |
2653 | + status: {code: 200, message: OK} |
2654 | +- request: |
2655 | + body: null |
2656 | + headers: |
2657 | + accept-encoding: ['gzip, deflate'] |
2658 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2659 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2660 | + method: GET |
2661 | + uri: http://localhost:9001/3.0/domains/example.net |
2662 | + response: |
2663 | + body: {string: '{"base_url": "http://example.net", "http_etag": "\"e9851cfb8e0e0999c083459951f4f9764f3be325\"", |
2664 | + "url_host": "example.net", "self_link": "http://localhost:9001/3.0/domains/example.net", |
2665 | + "contact_address": "postmaster@example.net", "mail_host": "example.net", "description": |
2666 | + null}'} |
2667 | + headers: |
2668 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2669 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2670 | + content-length: ['278'] |
2671 | + content-type: [application/json; charset=utf-8] |
2672 | + status: {code: 200, message: OK} |
2673 | +- request: |
2674 | + body: fqdn_listname=test-three%40example.net |
2675 | + headers: |
2676 | + accept-encoding: ['gzip, deflate'] |
2677 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2678 | + content-type: [application/x-www-form-urlencoded] |
2679 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2680 | + method: POST |
2681 | + uri: http://localhost:9001/3.0/lists |
2682 | + response: |
2683 | + body: {string: ''} |
2684 | + headers: |
2685 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2686 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2687 | + content-length: ['0'] |
2688 | + location: ['http://localhost:9001/3.0/lists/test-three.example.net'] |
2689 | + status: {code: 201, message: Created} |
2690 | +- request: |
2691 | + body: null |
2692 | + headers: |
2693 | + accept-encoding: ['gzip, deflate'] |
2694 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2695 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2696 | + method: GET |
2697 | + uri: http://localhost:9001/3.0/lists/test-three.example.net |
2698 | + response: |
2699 | + body: {string: '{"display_name": "Test-three", "list_name": "test-three", "mail_host": |
2700 | + "example.net", "volume": 1, "fqdn_listname": "test-three@example.net", "member_count": |
2701 | + 0, "http_etag": "\"aac838e6414aceb4bd94838ce8587acd14c82689\"", "self_link": |
2702 | + "http://localhost:9001/3.0/lists/test-three.example.net", "list_id": "test-three.example.net"}'} |
2703 | + headers: |
2704 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2705 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2706 | + content-length: ['329'] |
2707 | + content-type: [application/json; charset=utf-8] |
2708 | + status: {code: 200, message: OK} |
2709 | +- request: |
2710 | + body: fqdn_listname=test-three%40example.com |
2711 | + headers: |
2712 | + accept-encoding: ['gzip, deflate'] |
2713 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2714 | + content-type: [application/x-www-form-urlencoded] |
2715 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2716 | + method: POST |
2717 | + uri: http://localhost:9001/3.0/lists |
2718 | + response: |
2719 | + body: {string: ''} |
2720 | + headers: |
2721 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2722 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2723 | + content-length: ['0'] |
2724 | + location: ['http://localhost:9001/3.0/lists/test-three.example.com'] |
2725 | + status: {code: 201, message: Created} |
2726 | +- request: |
2727 | + body: null |
2728 | + headers: |
2729 | + accept-encoding: ['gzip, deflate'] |
2730 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2731 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2732 | + method: GET |
2733 | + uri: http://localhost:9001/3.0/lists/test-three.example.com |
2734 | + response: |
2735 | + body: {string: '{"display_name": "Test-three", "list_name": "test-three", "mail_host": |
2736 | + "example.com", "volume": 1, "fqdn_listname": "test-three@example.com", "member_count": |
2737 | + 0, "http_etag": "\"c168aa6f2589f789bf71e7f3146b5f2cfb1c87f9\"", "self_link": |
2738 | + "http://localhost:9001/3.0/lists/test-three.example.com", "list_id": "test-three.example.com"}'} |
2739 | + headers: |
2740 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2741 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2742 | + content-length: ['329'] |
2743 | + content-type: [application/json; charset=utf-8] |
2744 | + status: {code: 200, message: OK} |
2745 | +- request: |
2746 | + body: null |
2747 | + headers: |
2748 | + accept-encoding: ['gzip, deflate'] |
2749 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2750 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2751 | + method: GET |
2752 | + uri: http://localhost:9001/3.0/lists |
2753 | + response: |
2754 | + body: {string: '{"entries": [{"display_name": "Test-one", "list_name": "test-one", |
2755 | + "mail_host": "example.com", "volume": 1, "fqdn_listname": "test-one@example.com", |
2756 | + "member_count": 0, "http_etag": "\"37400908e98dea4024428dd7983a06b749c86582\"", |
2757 | + "self_link": "http://localhost:9001/3.0/lists/test-one.example.com", "list_id": |
2758 | + "test-one.example.com"}, {"display_name": "Test-two", "list_name": "test-two", |
2759 | + "mail_host": "example.com", "volume": 1, "fqdn_listname": "test-two@example.com", |
2760 | + "member_count": 0, "http_etag": "\"2b786766b483232ecccef33e919016281990bc7f\"", |
2761 | + "self_link": "http://localhost:9001/3.0/lists/test-two.example.com", "list_id": |
2762 | + "test-two.example.com"}, {"display_name": "Test-three", "list_name": "test-three", |
2763 | + "mail_host": "example.net", "volume": 1, "fqdn_listname": "test-three@example.net", |
2764 | + "member_count": 0, "http_etag": "\"aac838e6414aceb4bd94838ce8587acd14c82689\"", |
2765 | + "self_link": "http://localhost:9001/3.0/lists/test-three.example.net", "list_id": |
2766 | + "test-three.example.net"}, {"display_name": "Test-three", "list_name": "test-three", |
2767 | + "mail_host": "example.com", "volume": 1, "fqdn_listname": "test-three@example.com", |
2768 | + "member_count": 0, "http_etag": "\"c168aa6f2589f789bf71e7f3146b5f2cfb1c87f9\"", |
2769 | + "self_link": "http://localhost:9001/3.0/lists/test-three.example.com", "list_id": |
2770 | + "test-three.example.com"}], "http_etag": "\"364f4981c17939f6475615640cf38eca0354df52\"", |
2771 | + "total_size": 4, "start": 0}'} |
2772 | + headers: |
2773 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2774 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2775 | + content-length: ['1407'] |
2776 | + content-type: [application/json; charset=utf-8] |
2777 | + status: {code: 200, message: OK} |
2778 | +- request: |
2779 | + body: null |
2780 | + headers: |
2781 | + accept-encoding: ['gzip, deflate'] |
2782 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2783 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2784 | + method: GET |
2785 | + uri: http://localhost:9001/3.0/lists/test-one.example.com |
2786 | + response: |
2787 | + body: {string: '{"display_name": "Test-one", "list_name": "test-one", "mail_host": |
2788 | + "example.com", "volume": 1, "fqdn_listname": "test-one@example.com", "member_count": |
2789 | + 0, "http_etag": "\"37400908e98dea4024428dd7983a06b749c86582\"", "self_link": |
2790 | + "http://localhost:9001/3.0/lists/test-one.example.com", "list_id": "test-one.example.com"}'} |
2791 | + headers: |
2792 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2793 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2794 | + content-length: ['319'] |
2795 | + content-type: [application/json; charset=utf-8] |
2796 | + status: {code: 200, message: OK} |
2797 | +- request: |
2798 | + body: null |
2799 | + headers: |
2800 | + accept-encoding: ['gzip, deflate'] |
2801 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2802 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2803 | + method: GET |
2804 | + uri: http://localhost:9001/3.0/lists/test-two.example.com |
2805 | + response: |
2806 | + body: {string: '{"display_name": "Test-two", "list_name": "test-two", "mail_host": |
2807 | + "example.com", "volume": 1, "fqdn_listname": "test-two@example.com", "member_count": |
2808 | + 0, "http_etag": "\"2b786766b483232ecccef33e919016281990bc7f\"", "self_link": |
2809 | + "http://localhost:9001/3.0/lists/test-two.example.com", "list_id": "test-two.example.com"}'} |
2810 | + headers: |
2811 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2812 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2813 | + content-length: ['319'] |
2814 | + content-type: [application/json; charset=utf-8] |
2815 | + status: {code: 200, message: OK} |
2816 | +- request: |
2817 | + body: null |
2818 | + headers: |
2819 | + accept-encoding: ['gzip, deflate'] |
2820 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2821 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2822 | + method: GET |
2823 | + uri: http://localhost:9001/3.0/lists/test-three.example.net |
2824 | + response: |
2825 | + body: {string: '{"display_name": "Test-three", "list_name": "test-three", "mail_host": |
2826 | + "example.net", "volume": 1, "fqdn_listname": "test-three@example.net", "member_count": |
2827 | + 0, "http_etag": "\"aac838e6414aceb4bd94838ce8587acd14c82689\"", "self_link": |
2828 | + "http://localhost:9001/3.0/lists/test-three.example.net", "list_id": "test-three.example.net"}'} |
2829 | + headers: |
2830 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2831 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2832 | + content-length: ['329'] |
2833 | + content-type: [application/json; charset=utf-8] |
2834 | + status: {code: 200, message: OK} |
2835 | +- request: |
2836 | + body: null |
2837 | + headers: |
2838 | + accept-encoding: ['gzip, deflate'] |
2839 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2840 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2841 | + method: GET |
2842 | + uri: http://localhost:9001/3.0/lists/test-three.example.com |
2843 | + response: |
2844 | + body: {string: '{"display_name": "Test-three", "list_name": "test-three", "mail_host": |
2845 | + "example.com", "volume": 1, "fqdn_listname": "test-three@example.com", "member_count": |
2846 | + 0, "http_etag": "\"c168aa6f2589f789bf71e7f3146b5f2cfb1c87f9\"", "self_link": |
2847 | + "http://localhost:9001/3.0/lists/test-three.example.com", "list_id": "test-three.example.com"}'} |
2848 | + headers: |
2849 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2850 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2851 | + content-length: ['329'] |
2852 | + content-type: [application/json; charset=utf-8] |
2853 | + status: {code: 200, message: OK} |
2854 | +- request: |
2855 | + body: null |
2856 | + headers: |
2857 | + accept-encoding: ['gzip, deflate'] |
2858 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2859 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2860 | + method: GET |
2861 | + uri: http://localhost:9001/3.0/lists?count=2&page=1 |
2862 | + response: |
2863 | + body: {string: '{"entries": [{"display_name": "Test-one", "list_name": "test-one", |
2864 | + "mail_host": "example.com", "volume": 1, "fqdn_listname": "test-one@example.com", |
2865 | + "member_count": 0, "http_etag": "\"37400908e98dea4024428dd7983a06b749c86582\"", |
2866 | + "self_link": "http://localhost:9001/3.0/lists/test-one.example.com", "list_id": |
2867 | + "test-one.example.com"}, {"display_name": "Test-two", "list_name": "test-two", |
2868 | + "mail_host": "example.com", "volume": 1, "fqdn_listname": "test-two@example.com", |
2869 | + "member_count": 0, "http_etag": "\"2b786766b483232ecccef33e919016281990bc7f\"", |
2870 | + "self_link": "http://localhost:9001/3.0/lists/test-two.example.com", "list_id": |
2871 | + "test-two.example.com"}], "http_etag": "\"7576518b52cee8dd837ba7de06531325e23d8051\"", |
2872 | + "total_size": 2, "start": 0}'} |
2873 | + headers: |
2874 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2875 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2876 | + content-length: ['745'] |
2877 | + content-type: [application/json; charset=utf-8] |
2878 | + status: {code: 200, message: OK} |
2879 | +- request: |
2880 | + body: null |
2881 | + headers: |
2882 | + accept-encoding: ['gzip, deflate'] |
2883 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2884 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2885 | + method: GET |
2886 | + uri: http://localhost:9001/3.0/lists/test-one.example.com |
2887 | + response: |
2888 | + body: {string: '{"display_name": "Test-one", "list_name": "test-one", "mail_host": |
2889 | + "example.com", "volume": 1, "fqdn_listname": "test-one@example.com", "member_count": |
2890 | + 0, "http_etag": "\"37400908e98dea4024428dd7983a06b749c86582\"", "self_link": |
2891 | + "http://localhost:9001/3.0/lists/test-one.example.com", "list_id": "test-one.example.com"}'} |
2892 | + headers: |
2893 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2894 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2895 | + content-length: ['319'] |
2896 | + content-type: [application/json; charset=utf-8] |
2897 | + status: {code: 200, message: OK} |
2898 | +- request: |
2899 | + body: null |
2900 | + headers: |
2901 | + accept-encoding: ['gzip, deflate'] |
2902 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2903 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2904 | + method: GET |
2905 | + uri: http://localhost:9001/3.0/lists/test-two.example.com |
2906 | + response: |
2907 | + body: {string: '{"display_name": "Test-two", "list_name": "test-two", "mail_host": |
2908 | + "example.com", "volume": 1, "fqdn_listname": "test-two@example.com", "member_count": |
2909 | + 0, "http_etag": "\"2b786766b483232ecccef33e919016281990bc7f\"", "self_link": |
2910 | + "http://localhost:9001/3.0/lists/test-two.example.com", "list_id": "test-two.example.com"}'} |
2911 | + headers: |
2912 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2913 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2914 | + content-length: ['319'] |
2915 | + content-type: [application/json; charset=utf-8] |
2916 | + status: {code: 200, message: OK} |
2917 | +- request: |
2918 | + body: null |
2919 | + headers: |
2920 | + accept-encoding: ['gzip, deflate'] |
2921 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2922 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2923 | + method: GET |
2924 | + uri: http://localhost:9001/3.0/lists?count=2&page=2 |
2925 | + response: |
2926 | + body: {string: '{"entries": [{"display_name": "Test-three", "list_name": "test-three", |
2927 | + "mail_host": "example.net", "volume": 1, "fqdn_listname": "test-three@example.net", |
2928 | + "member_count": 0, "http_etag": "\"aac838e6414aceb4bd94838ce8587acd14c82689\"", |
2929 | + "self_link": "http://localhost:9001/3.0/lists/test-three.example.net", "list_id": |
2930 | + "test-three.example.net"}, {"display_name": "Test-three", "list_name": "test-three", |
2931 | + "mail_host": "example.com", "volume": 1, "fqdn_listname": "test-three@example.com", |
2932 | + "member_count": 0, "http_etag": "\"c168aa6f2589f789bf71e7f3146b5f2cfb1c87f9\"", |
2933 | + "self_link": "http://localhost:9001/3.0/lists/test-three.example.com", "list_id": |
2934 | + "test-three.example.com"}], "http_etag": "\"8bb63eb4f57656bfbeda922896dc67efd33fb31c\"", |
2935 | + "total_size": 2, "start": 0}'} |
2936 | + headers: |
2937 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2938 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2939 | + content-length: ['765'] |
2940 | + content-type: [application/json; charset=utf-8] |
2941 | + status: {code: 200, message: OK} |
2942 | +- request: |
2943 | + body: null |
2944 | + headers: |
2945 | + accept-encoding: ['gzip, deflate'] |
2946 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2947 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2948 | + method: GET |
2949 | + uri: http://localhost:9001/3.0/lists/test-three.example.net |
2950 | + response: |
2951 | + body: {string: '{"display_name": "Test-three", "list_name": "test-three", "mail_host": |
2952 | + "example.net", "volume": 1, "fqdn_listname": "test-three@example.net", "member_count": |
2953 | + 0, "http_etag": "\"aac838e6414aceb4bd94838ce8587acd14c82689\"", "self_link": |
2954 | + "http://localhost:9001/3.0/lists/test-three.example.net", "list_id": "test-three.example.net"}'} |
2955 | + headers: |
2956 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2957 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2958 | + content-length: ['329'] |
2959 | + content-type: [application/json; charset=utf-8] |
2960 | + status: {code: 200, message: OK} |
2961 | +- request: |
2962 | + body: null |
2963 | + headers: |
2964 | + accept-encoding: ['gzip, deflate'] |
2965 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2966 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2967 | + method: GET |
2968 | + uri: http://localhost:9001/3.0/lists/test-three.example.com |
2969 | + response: |
2970 | + body: {string: '{"display_name": "Test-three", "list_name": "test-three", "mail_host": |
2971 | + "example.com", "volume": 1, "fqdn_listname": "test-three@example.com", "member_count": |
2972 | + 0, "http_etag": "\"c168aa6f2589f789bf71e7f3146b5f2cfb1c87f9\"", "self_link": |
2973 | + "http://localhost:9001/3.0/lists/test-three.example.com", "list_id": "test-three.example.com"}'} |
2974 | + headers: |
2975 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
2976 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
2977 | + content-length: ['329'] |
2978 | + content-type: [application/json; charset=utf-8] |
2979 | + status: {code: 200, message: OK} |
2980 | +- request: |
2981 | + body: null |
2982 | + headers: |
2983 | + accept-encoding: ['gzip, deflate'] |
2984 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
2985 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
2986 | + method: GET |
2987 | + uri: http://localhost:9001/3.0/domains/example.com/lists |
2988 | + response: |
2989 | + body: {string: '{"entries": [{"display_name": "Test-one", "list_name": "test-one", |
2990 | + "mail_host": "example.com", "volume": 1, "fqdn_listname": "test-one@example.com", |
2991 | + "member_count": 0, "http_etag": "\"37400908e98dea4024428dd7983a06b749c86582\"", |
2992 | + "self_link": "http://localhost:9001/3.0/lists/test-one.example.com", "list_id": |
2993 | + "test-one.example.com"}, {"display_name": "Test-three", "list_name": "test-three", |
2994 | + "mail_host": "example.com", "volume": 1, "fqdn_listname": "test-three@example.com", |
2995 | + "member_count": 0, "http_etag": "\"c168aa6f2589f789bf71e7f3146b5f2cfb1c87f9\"", |
2996 | + "self_link": "http://localhost:9001/3.0/lists/test-three.example.com", "list_id": |
2997 | + "test-three.example.com"}, {"display_name": "Test-two", "list_name": "test-two", |
2998 | + "mail_host": "example.com", "volume": 1, "fqdn_listname": "test-two@example.com", |
2999 | + "member_count": 0, "http_etag": "\"2b786766b483232ecccef33e919016281990bc7f\"", |
3000 | + "self_link": "http://localhost:9001/3.0/lists/test-two.example.com", "list_id": |
3001 | + "test-two.example.com"}], "http_etag": "\"abf9ade1d031e7c98d4b258a33f14ec9f00ba12a\"", |
3002 | + "total_size": 3, "start": 0}'} |
3003 | + headers: |
3004 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
3005 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3006 | + content-length: ['1076'] |
3007 | + content-type: [application/json; charset=utf-8] |
3008 | + status: {code: 200, message: OK} |
3009 | +- request: |
3010 | + body: null |
3011 | + headers: |
3012 | + accept-encoding: ['gzip, deflate'] |
3013 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3014 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3015 | + method: GET |
3016 | + uri: http://localhost:9001/3.0/lists/test-one.example.com |
3017 | + response: |
3018 | + body: {string: '{"display_name": "Test-one", "list_name": "test-one", "mail_host": |
3019 | + "example.com", "volume": 1, "fqdn_listname": "test-one@example.com", "member_count": |
3020 | + 0, "http_etag": "\"37400908e98dea4024428dd7983a06b749c86582\"", "self_link": |
3021 | + "http://localhost:9001/3.0/lists/test-one.example.com", "list_id": "test-one.example.com"}'} |
3022 | + headers: |
3023 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
3024 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3025 | + content-length: ['319'] |
3026 | + content-type: [application/json; charset=utf-8] |
3027 | + status: {code: 200, message: OK} |
3028 | +- request: |
3029 | + body: null |
3030 | + headers: |
3031 | + accept-encoding: ['gzip, deflate'] |
3032 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3033 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3034 | + method: GET |
3035 | + uri: http://localhost:9001/3.0/lists/test-three.example.com |
3036 | + response: |
3037 | + body: {string: '{"display_name": "Test-three", "list_name": "test-three", "mail_host": |
3038 | + "example.com", "volume": 1, "fqdn_listname": "test-three@example.com", "member_count": |
3039 | + 0, "http_etag": "\"c168aa6f2589f789bf71e7f3146b5f2cfb1c87f9\"", "self_link": |
3040 | + "http://localhost:9001/3.0/lists/test-three.example.com", "list_id": "test-three.example.com"}'} |
3041 | + headers: |
3042 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
3043 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3044 | + content-length: ['329'] |
3045 | + content-type: [application/json; charset=utf-8] |
3046 | + status: {code: 200, message: OK} |
3047 | +- request: |
3048 | + body: null |
3049 | + headers: |
3050 | + accept-encoding: ['gzip, deflate'] |
3051 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3052 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3053 | + method: GET |
3054 | + uri: http://localhost:9001/3.0/lists/test-two.example.com |
3055 | + response: |
3056 | + body: {string: '{"display_name": "Test-two", "list_name": "test-two", "mail_host": |
3057 | + "example.com", "volume": 1, "fqdn_listname": "test-two@example.com", "member_count": |
3058 | + 0, "http_etag": "\"2b786766b483232ecccef33e919016281990bc7f\"", "self_link": |
3059 | + "http://localhost:9001/3.0/lists/test-two.example.com", "list_id": "test-two.example.com"}'} |
3060 | + headers: |
3061 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
3062 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3063 | + content-length: ['319'] |
3064 | + content-type: [application/json; charset=utf-8] |
3065 | + status: {code: 200, message: OK} |
3066 | +- request: |
3067 | + body: null |
3068 | + headers: |
3069 | + accept-encoding: ['gzip, deflate'] |
3070 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3071 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3072 | + method: GET |
3073 | + uri: http://localhost:9001/3.0/lists/test-three@example.net |
3074 | + response: |
3075 | + body: {string: '{"display_name": "Test-three", "list_name": "test-three", "mail_host": |
3076 | + "example.net", "volume": 1, "fqdn_listname": "test-three@example.net", "member_count": |
3077 | + 0, "http_etag": "\"aac838e6414aceb4bd94838ce8587acd14c82689\"", "self_link": |
3078 | + "http://localhost:9001/3.0/lists/test-three.example.net", "list_id": "test-three.example.net"}'} |
3079 | + headers: |
3080 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
3081 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3082 | + content-length: ['329'] |
3083 | + content-type: [application/json; charset=utf-8] |
3084 | + status: {code: 200, message: OK} |
3085 | +- request: |
3086 | + body: null |
3087 | + headers: |
3088 | + accept-encoding: ['gzip, deflate'] |
3089 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3090 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3091 | + method: DELETE |
3092 | + uri: http://localhost:9001/3.0/lists/test-three@example.net |
3093 | + response: |
3094 | + body: {string: ''} |
3095 | + headers: |
3096 | + Content-Length: ['0'] |
3097 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
3098 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3099 | + status: {code: 204, message: No Content} |
3100 | +- request: |
3101 | + body: null |
3102 | + headers: |
3103 | + accept-encoding: ['gzip, deflate'] |
3104 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3105 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3106 | + method: DELETE |
3107 | + uri: http://localhost:9001/3.0/lists/test-three@example.com |
3108 | + response: |
3109 | + body: {string: ''} |
3110 | + headers: |
3111 | + Content-Length: ['0'] |
3112 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
3113 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3114 | + status: {code: 204, message: No Content} |
3115 | +- request: |
3116 | + body: null |
3117 | + headers: |
3118 | + accept-encoding: ['gzip, deflate'] |
3119 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3120 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3121 | + method: GET |
3122 | + uri: http://localhost:9001/3.0/lists |
3123 | + response: |
3124 | + body: {string: '{"entries": [{"display_name": "Test-one", "list_name": "test-one", |
3125 | + "mail_host": "example.com", "volume": 1, "fqdn_listname": "test-one@example.com", |
3126 | + "member_count": 0, "http_etag": "\"37400908e98dea4024428dd7983a06b749c86582\"", |
3127 | + "self_link": "http://localhost:9001/3.0/lists/test-one.example.com", "list_id": |
3128 | + "test-one.example.com"}, {"display_name": "Test-two", "list_name": "test-two", |
3129 | + "mail_host": "example.com", "volume": 1, "fqdn_listname": "test-two@example.com", |
3130 | + "member_count": 0, "http_etag": "\"2b786766b483232ecccef33e919016281990bc7f\"", |
3131 | + "self_link": "http://localhost:9001/3.0/lists/test-two.example.com", "list_id": |
3132 | + "test-two.example.com"}], "http_etag": "\"7576518b52cee8dd837ba7de06531325e23d8051\"", |
3133 | + "total_size": 2, "start": 0}'} |
3134 | + headers: |
3135 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
3136 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3137 | + content-length: ['745'] |
3138 | + content-type: [application/json; charset=utf-8] |
3139 | + status: {code: 200, message: OK} |
3140 | +- request: |
3141 | + body: null |
3142 | + headers: |
3143 | + accept-encoding: ['gzip, deflate'] |
3144 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3145 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3146 | + method: GET |
3147 | + uri: http://localhost:9001/3.0/lists/test-one.example.com |
3148 | + response: |
3149 | + body: {string: '{"display_name": "Test-one", "list_name": "test-one", "mail_host": |
3150 | + "example.com", "volume": 1, "fqdn_listname": "test-one@example.com", "member_count": |
3151 | + 0, "http_etag": "\"37400908e98dea4024428dd7983a06b749c86582\"", "self_link": |
3152 | + "http://localhost:9001/3.0/lists/test-one.example.com", "list_id": "test-one.example.com"}'} |
3153 | + headers: |
3154 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
3155 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3156 | + content-length: ['319'] |
3157 | + content-type: [application/json; charset=utf-8] |
3158 | + status: {code: 200, message: OK} |
3159 | +- request: |
3160 | + body: null |
3161 | + headers: |
3162 | + accept-encoding: ['gzip, deflate'] |
3163 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3164 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3165 | + method: GET |
3166 | + uri: http://localhost:9001/3.0/lists/test-two.example.com |
3167 | + response: |
3168 | + body: {string: '{"display_name": "Test-two", "list_name": "test-two", "mail_host": |
3169 | + "example.com", "volume": 1, "fqdn_listname": "test-two@example.com", "member_count": |
3170 | + 0, "http_etag": "\"2b786766b483232ecccef33e919016281990bc7f\"", "self_link": |
3171 | + "http://localhost:9001/3.0/lists/test-two.example.com", "list_id": "test-two.example.com"}'} |
3172 | + headers: |
3173 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
3174 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3175 | + content-length: ['319'] |
3176 | + content-type: [application/json; charset=utf-8] |
3177 | + status: {code: 200, message: OK} |
3178 | +- request: |
3179 | + body: null |
3180 | + headers: |
3181 | + accept-encoding: ['gzip, deflate'] |
3182 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3183 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3184 | + method: GET |
3185 | + uri: http://localhost:9001/3.0/members |
3186 | + response: |
3187 | + body: {string: '{"http_etag": "\"32223434a0f3af4cdc4673d1fbc5bac1f6d98fd3\"", |
3188 | + "total_size": 0, "start": 0}'} |
3189 | + headers: |
3190 | + Date: ['Sun, 04 Jan 2015 22:42:45 GMT'] |
3191 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3192 | + content-length: ['90'] |
3193 | + content-type: [application/json; charset=utf-8] |
3194 | + status: {code: 200, message: OK} |
3195 | +- request: |
3196 | + body: null |
3197 | + headers: |
3198 | + accept-encoding: ['gzip, deflate'] |
3199 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3200 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3201 | + method: GET |
3202 | + uri: http://localhost:9001/3.0/lists/test-two@example.com |
3203 | + response: |
3204 | + body: {string: '{"display_name": "Test-two", "list_name": "test-two", "mail_host": |
3205 | + "example.com", "volume": 1, "fqdn_listname": "test-two@example.com", "member_count": |
3206 | + 0, "http_etag": "\"2b786766b483232ecccef33e919016281990bc7f\"", "self_link": |
3207 | + "http://localhost:9001/3.0/lists/test-two.example.com", "list_id": "test-two.example.com"}'} |
3208 | + headers: |
3209 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3210 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3211 | + content-length: ['319'] |
3212 | + content-type: [application/json; charset=utf-8] |
3213 | + status: {code: 200, message: OK} |
3214 | +- request: |
3215 | + body: subscriber=anna%40example.com&display_name=Anna&list_id=test-one.example.com |
3216 | + headers: |
3217 | + accept-encoding: ['gzip, deflate'] |
3218 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3219 | + content-type: [application/x-www-form-urlencoded] |
3220 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3221 | + method: POST |
3222 | + uri: http://localhost:9001/3.0/members |
3223 | + response: |
3224 | + body: {string: ''} |
3225 | + headers: |
3226 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3227 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3228 | + content-length: ['0'] |
3229 | + location: ['http://localhost:9001/3.0/members/104473260871439163529610165544142173708'] |
3230 | + status: {code: 201, message: Created} |
3231 | +- request: |
3232 | + body: null |
3233 | + headers: |
3234 | + accept-encoding: ['gzip, deflate'] |
3235 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3236 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3237 | + method: GET |
3238 | + uri: http://localhost:9001/3.0/members/104473260871439163529610165544142173708 |
3239 | + response: |
3240 | + body: {string: '{"http_etag": "\"791c35b4fc3a7d325559ba98bf459a91f0ec0b97\"", |
3241 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/104473260871439163529610165544142173708", |
3242 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3243 | + "test-one.example.com", "email": "anna@example.com", "role": "member", "user": |
3244 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}'} |
3245 | + headers: |
3246 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3247 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3248 | + content-length: ['410'] |
3249 | + content-type: [application/json; charset=utf-8] |
3250 | + status: {code: 200, message: OK} |
3251 | +- request: |
3252 | + body: subscriber=bill%40example.com&display_name=Bill&list_id=test-one.example.com |
3253 | + headers: |
3254 | + accept-encoding: ['gzip, deflate'] |
3255 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3256 | + content-type: [application/x-www-form-urlencoded] |
3257 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3258 | + method: POST |
3259 | + uri: http://localhost:9001/3.0/members |
3260 | + response: |
3261 | + body: {string: ''} |
3262 | + headers: |
3263 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3264 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3265 | + content-length: ['0'] |
3266 | + location: ['http://localhost:9001/3.0/members/275272594951032189318671732666193338856'] |
3267 | + status: {code: 201, message: Created} |
3268 | +- request: |
3269 | + body: null |
3270 | + headers: |
3271 | + accept-encoding: ['gzip, deflate'] |
3272 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3273 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3274 | + method: GET |
3275 | + uri: http://localhost:9001/3.0/members/275272594951032189318671732666193338856 |
3276 | + response: |
3277 | + body: {string: '{"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", |
3278 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
3279 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
3280 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
3281 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}'} |
3282 | + headers: |
3283 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3284 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3285 | + content-length: ['411'] |
3286 | + content-type: [application/json; charset=utf-8] |
3287 | + status: {code: 200, message: OK} |
3288 | +- request: |
3289 | + body: subscriber=anna%40example.com&display_name=None&list_id=test-two.example.com |
3290 | + headers: |
3291 | + accept-encoding: ['gzip, deflate'] |
3292 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3293 | + content-type: [application/x-www-form-urlencoded] |
3294 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3295 | + method: POST |
3296 | + uri: http://localhost:9001/3.0/members |
3297 | + response: |
3298 | + body: {string: ''} |
3299 | + headers: |
3300 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3301 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3302 | + content-length: ['0'] |
3303 | + location: ['http://localhost:9001/3.0/members/18090098823740248348445588761302258241'] |
3304 | + status: {code: 201, message: Created} |
3305 | +- request: |
3306 | + body: null |
3307 | + headers: |
3308 | + accept-encoding: ['gzip, deflate'] |
3309 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3310 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3311 | + method: GET |
3312 | + uri: http://localhost:9001/3.0/members/18090098823740248348445588761302258241 |
3313 | + response: |
3314 | + body: {string: '{"http_etag": "\"cb2d6f0b4bed8456d32dc0f83a47ba2ee264e661\"", |
3315 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/18090098823740248348445588761302258241", |
3316 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3317 | + "test-two.example.com", "email": "anna@example.com", "role": "member", "user": |
3318 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}'} |
3319 | + headers: |
3320 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3321 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3322 | + content-length: ['409'] |
3323 | + content-type: [application/json; charset=utf-8] |
3324 | + status: {code: 200, message: OK} |
3325 | +- request: |
3326 | + body: subscriber=cris%40example.com&display_name=Cris&list_id=test-two.example.com |
3327 | + headers: |
3328 | + accept-encoding: ['gzip, deflate'] |
3329 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3330 | + content-type: [application/x-www-form-urlencoded] |
3331 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3332 | + method: POST |
3333 | + uri: http://localhost:9001/3.0/members |
3334 | + response: |
3335 | + body: {string: ''} |
3336 | + headers: |
3337 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3338 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3339 | + content-length: ['0'] |
3340 | + location: ['http://localhost:9001/3.0/members/277964071707554096935986210544886743347'] |
3341 | + status: {code: 201, message: Created} |
3342 | +- request: |
3343 | + body: null |
3344 | + headers: |
3345 | + accept-encoding: ['gzip, deflate'] |
3346 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3347 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3348 | + method: GET |
3349 | + uri: http://localhost:9001/3.0/members/277964071707554096935986210544886743347 |
3350 | + response: |
3351 | + body: {string: '{"http_etag": "\"7e9fbe757624318db74a977eb13491950d78fce7\"", |
3352 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/277964071707554096935986210544886743347", |
3353 | + "address": "http://localhost:9001/3.0/addresses/cris@example.com", "list_id": |
3354 | + "test-two.example.com", "email": "cris@example.com", "role": "member", "user": |
3355 | + "http://localhost:9001/3.0/users/124469682936455360048380387046363665337"}'} |
3356 | + headers: |
3357 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3358 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3359 | + content-length: ['411'] |
3360 | + content-type: [application/json; charset=utf-8] |
3361 | + status: {code: 200, message: OK} |
3362 | +- request: |
3363 | + body: null |
3364 | + headers: |
3365 | + accept-encoding: ['gzip, deflate'] |
3366 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3367 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3368 | + method: GET |
3369 | + uri: http://localhost:9001/3.0/members |
3370 | + response: |
3371 | + body: {string: '{"entries": [{"http_etag": "\"791c35b4fc3a7d325559ba98bf459a91f0ec0b97\"", |
3372 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/104473260871439163529610165544142173708", |
3373 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3374 | + "test-one.example.com", "email": "anna@example.com", "role": "member", "user": |
3375 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}, |
3376 | + {"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", "delivery_mode": |
3377 | + "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
3378 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
3379 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
3380 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}, |
3381 | + {"http_etag": "\"cb2d6f0b4bed8456d32dc0f83a47ba2ee264e661\"", "delivery_mode": |
3382 | + "regular", "self_link": "http://localhost:9001/3.0/members/18090098823740248348445588761302258241", |
3383 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3384 | + "test-two.example.com", "email": "anna@example.com", "role": "member", "user": |
3385 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}, |
3386 | + {"http_etag": "\"7e9fbe757624318db74a977eb13491950d78fce7\"", "delivery_mode": |
3387 | + "regular", "self_link": "http://localhost:9001/3.0/members/277964071707554096935986210544886743347", |
3388 | + "address": "http://localhost:9001/3.0/addresses/cris@example.com", "list_id": |
3389 | + "test-two.example.com", "email": "cris@example.com", "role": "member", "user": |
3390 | + "http://localhost:9001/3.0/users/124469682936455360048380387046363665337"}], |
3391 | + "http_etag": "\"52ccb218ea5b606545a0a1509ecb57fcea5c30da\"", "total_size": |
3392 | + 4, "start": 0}'} |
3393 | + headers: |
3394 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3395 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3396 | + content-length: ['1752'] |
3397 | + content-type: [application/json; charset=utf-8] |
3398 | + status: {code: 200, message: OK} |
3399 | +- request: |
3400 | + body: null |
3401 | + headers: |
3402 | + accept-encoding: ['gzip, deflate'] |
3403 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3404 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3405 | + method: GET |
3406 | + uri: http://localhost:9001/3.0/members/104473260871439163529610165544142173708 |
3407 | + response: |
3408 | + body: {string: '{"http_etag": "\"791c35b4fc3a7d325559ba98bf459a91f0ec0b97\"", |
3409 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/104473260871439163529610165544142173708", |
3410 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3411 | + "test-one.example.com", "email": "anna@example.com", "role": "member", "user": |
3412 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}'} |
3413 | + headers: |
3414 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3415 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3416 | + content-length: ['410'] |
3417 | + content-type: [application/json; charset=utf-8] |
3418 | + status: {code: 200, message: OK} |
3419 | +- request: |
3420 | + body: null |
3421 | + headers: |
3422 | + accept-encoding: ['gzip, deflate'] |
3423 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3424 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3425 | + method: GET |
3426 | + uri: http://localhost:9001/3.0/members/275272594951032189318671732666193338856 |
3427 | + response: |
3428 | + body: {string: '{"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", |
3429 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
3430 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
3431 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
3432 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}'} |
3433 | + headers: |
3434 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3435 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3436 | + content-length: ['411'] |
3437 | + content-type: [application/json; charset=utf-8] |
3438 | + status: {code: 200, message: OK} |
3439 | +- request: |
3440 | + body: null |
3441 | + headers: |
3442 | + accept-encoding: ['gzip, deflate'] |
3443 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3444 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3445 | + method: GET |
3446 | + uri: http://localhost:9001/3.0/members/18090098823740248348445588761302258241 |
3447 | + response: |
3448 | + body: {string: '{"http_etag": "\"cb2d6f0b4bed8456d32dc0f83a47ba2ee264e661\"", |
3449 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/18090098823740248348445588761302258241", |
3450 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3451 | + "test-two.example.com", "email": "anna@example.com", "role": "member", "user": |
3452 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}'} |
3453 | + headers: |
3454 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3455 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3456 | + content-length: ['409'] |
3457 | + content-type: [application/json; charset=utf-8] |
3458 | + status: {code: 200, message: OK} |
3459 | +- request: |
3460 | + body: null |
3461 | + headers: |
3462 | + accept-encoding: ['gzip, deflate'] |
3463 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3464 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3465 | + method: GET |
3466 | + uri: http://localhost:9001/3.0/members/277964071707554096935986210544886743347 |
3467 | + response: |
3468 | + body: {string: '{"http_etag": "\"7e9fbe757624318db74a977eb13491950d78fce7\"", |
3469 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/277964071707554096935986210544886743347", |
3470 | + "address": "http://localhost:9001/3.0/addresses/cris@example.com", "list_id": |
3471 | + "test-two.example.com", "email": "cris@example.com", "role": "member", "user": |
3472 | + "http://localhost:9001/3.0/users/124469682936455360048380387046363665337"}'} |
3473 | + headers: |
3474 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3475 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3476 | + content-length: ['411'] |
3477 | + content-type: [application/json; charset=utf-8] |
3478 | + status: {code: 200, message: OK} |
3479 | +- request: |
3480 | + body: null |
3481 | + headers: |
3482 | + accept-encoding: ['gzip, deflate'] |
3483 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3484 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3485 | + method: GET |
3486 | + uri: http://localhost:9001/3.0/lists/test-one@example.com/roster/member |
3487 | + response: |
3488 | + body: {string: '{"entries": [{"http_etag": "\"791c35b4fc3a7d325559ba98bf459a91f0ec0b97\"", |
3489 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/104473260871439163529610165544142173708", |
3490 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3491 | + "test-one.example.com", "email": "anna@example.com", "role": "member", "user": |
3492 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}, |
3493 | + {"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", "delivery_mode": |
3494 | + "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
3495 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
3496 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
3497 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}], |
3498 | + "http_etag": "\"035b2ef6161ccb46df27b7a6bec02c1a85cf471f\"", "total_size": |
3499 | + 2, "start": 0}'} |
3500 | + headers: |
3501 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3502 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3503 | + content-length: ['928'] |
3504 | + content-type: [application/json; charset=utf-8] |
3505 | + status: {code: 200, message: OK} |
3506 | +- request: |
3507 | + body: null |
3508 | + headers: |
3509 | + accept-encoding: ['gzip, deflate'] |
3510 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3511 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3512 | + method: GET |
3513 | + uri: http://localhost:9001/3.0/members/104473260871439163529610165544142173708 |
3514 | + response: |
3515 | + body: {string: '{"http_etag": "\"791c35b4fc3a7d325559ba98bf459a91f0ec0b97\"", |
3516 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/104473260871439163529610165544142173708", |
3517 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3518 | + "test-one.example.com", "email": "anna@example.com", "role": "member", "user": |
3519 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}'} |
3520 | + headers: |
3521 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3522 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3523 | + content-length: ['410'] |
3524 | + content-type: [application/json; charset=utf-8] |
3525 | + status: {code: 200, message: OK} |
3526 | +- request: |
3527 | + body: null |
3528 | + headers: |
3529 | + accept-encoding: ['gzip, deflate'] |
3530 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3531 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3532 | + method: GET |
3533 | + uri: http://localhost:9001/3.0/members/275272594951032189318671732666193338856 |
3534 | + response: |
3535 | + body: {string: '{"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", |
3536 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
3537 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
3538 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
3539 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}'} |
3540 | + headers: |
3541 | + Date: ['Sun, 04 Jan 2015 22:42:46 GMT'] |
3542 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3543 | + content-length: ['411'] |
3544 | + content-type: [application/json; charset=utf-8] |
3545 | + status: {code: 200, message: OK} |
3546 | +- request: |
3547 | + body: null |
3548 | + headers: |
3549 | + accept-encoding: ['gzip, deflate'] |
3550 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3551 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3552 | + method: GET |
3553 | + uri: http://localhost:9001/3.0/members?count=2&page=1 |
3554 | + response: |
3555 | + body: {string: '{"entries": [{"http_etag": "\"791c35b4fc3a7d325559ba98bf459a91f0ec0b97\"", |
3556 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/104473260871439163529610165544142173708", |
3557 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3558 | + "test-one.example.com", "email": "anna@example.com", "role": "member", "user": |
3559 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}, |
3560 | + {"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", "delivery_mode": |
3561 | + "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
3562 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
3563 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
3564 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}], |
3565 | + "http_etag": "\"035b2ef6161ccb46df27b7a6bec02c1a85cf471f\"", "total_size": |
3566 | + 2, "start": 0}'} |
3567 | + headers: |
3568 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3569 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3570 | + content-length: ['928'] |
3571 | + content-type: [application/json; charset=utf-8] |
3572 | + status: {code: 200, message: OK} |
3573 | +- request: |
3574 | + body: null |
3575 | + headers: |
3576 | + accept-encoding: ['gzip, deflate'] |
3577 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3578 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3579 | + method: GET |
3580 | + uri: http://localhost:9001/3.0/members/104473260871439163529610165544142173708 |
3581 | + response: |
3582 | + body: {string: '{"http_etag": "\"791c35b4fc3a7d325559ba98bf459a91f0ec0b97\"", |
3583 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/104473260871439163529610165544142173708", |
3584 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3585 | + "test-one.example.com", "email": "anna@example.com", "role": "member", "user": |
3586 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}'} |
3587 | + headers: |
3588 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3589 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3590 | + content-length: ['410'] |
3591 | + content-type: [application/json; charset=utf-8] |
3592 | + status: {code: 200, message: OK} |
3593 | +- request: |
3594 | + body: null |
3595 | + headers: |
3596 | + accept-encoding: ['gzip, deflate'] |
3597 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3598 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3599 | + method: GET |
3600 | + uri: http://localhost:9001/3.0/members/275272594951032189318671732666193338856 |
3601 | + response: |
3602 | + body: {string: '{"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", |
3603 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
3604 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
3605 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
3606 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}'} |
3607 | + headers: |
3608 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3609 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3610 | + content-length: ['411'] |
3611 | + content-type: [application/json; charset=utf-8] |
3612 | + status: {code: 200, message: OK} |
3613 | +- request: |
3614 | + body: null |
3615 | + headers: |
3616 | + accept-encoding: ['gzip, deflate'] |
3617 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3618 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3619 | + method: GET |
3620 | + uri: http://localhost:9001/3.0/members?count=2&page=2 |
3621 | + response: |
3622 | + body: {string: '{"entries": [{"http_etag": "\"cb2d6f0b4bed8456d32dc0f83a47ba2ee264e661\"", |
3623 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/18090098823740248348445588761302258241", |
3624 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3625 | + "test-two.example.com", "email": "anna@example.com", "role": "member", "user": |
3626 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}, |
3627 | + {"http_etag": "\"7e9fbe757624318db74a977eb13491950d78fce7\"", "delivery_mode": |
3628 | + "regular", "self_link": "http://localhost:9001/3.0/members/277964071707554096935986210544886743347", |
3629 | + "address": "http://localhost:9001/3.0/addresses/cris@example.com", "list_id": |
3630 | + "test-two.example.com", "email": "cris@example.com", "role": "member", "user": |
3631 | + "http://localhost:9001/3.0/users/124469682936455360048380387046363665337"}], |
3632 | + "http_etag": "\"1146a3a8fbea4f6d9cd141f0243f98a5c85e9c47\"", "total_size": |
3633 | + 2, "start": 0}'} |
3634 | + headers: |
3635 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3636 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3637 | + content-length: ['927'] |
3638 | + content-type: [application/json; charset=utf-8] |
3639 | + status: {code: 200, message: OK} |
3640 | +- request: |
3641 | + body: null |
3642 | + headers: |
3643 | + accept-encoding: ['gzip, deflate'] |
3644 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3645 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3646 | + method: GET |
3647 | + uri: http://localhost:9001/3.0/members/18090098823740248348445588761302258241 |
3648 | + response: |
3649 | + body: {string: '{"http_etag": "\"cb2d6f0b4bed8456d32dc0f83a47ba2ee264e661\"", |
3650 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/18090098823740248348445588761302258241", |
3651 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3652 | + "test-two.example.com", "email": "anna@example.com", "role": "member", "user": |
3653 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}'} |
3654 | + headers: |
3655 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3656 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3657 | + content-length: ['409'] |
3658 | + content-type: [application/json; charset=utf-8] |
3659 | + status: {code: 200, message: OK} |
3660 | +- request: |
3661 | + body: null |
3662 | + headers: |
3663 | + accept-encoding: ['gzip, deflate'] |
3664 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3665 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3666 | + method: GET |
3667 | + uri: http://localhost:9001/3.0/members/277964071707554096935986210544886743347 |
3668 | + response: |
3669 | + body: {string: '{"http_etag": "\"7e9fbe757624318db74a977eb13491950d78fce7\"", |
3670 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/277964071707554096935986210544886743347", |
3671 | + "address": "http://localhost:9001/3.0/addresses/cris@example.com", "list_id": |
3672 | + "test-two.example.com", "email": "cris@example.com", "role": "member", "user": |
3673 | + "http://localhost:9001/3.0/users/124469682936455360048380387046363665337"}'} |
3674 | + headers: |
3675 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3676 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3677 | + content-length: ['411'] |
3678 | + content-type: [application/json; charset=utf-8] |
3679 | + status: {code: 200, message: OK} |
3680 | +- request: |
3681 | + body: null |
3682 | + headers: |
3683 | + accept-encoding: ['gzip, deflate'] |
3684 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3685 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3686 | + method: GET |
3687 | + uri: http://localhost:9001/3.0/lists/test-one@example.com/roster/member?count=1&page=1 |
3688 | + response: |
3689 | + body: {string: '{"entries": [{"http_etag": "\"791c35b4fc3a7d325559ba98bf459a91f0ec0b97\"", |
3690 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/104473260871439163529610165544142173708", |
3691 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3692 | + "test-one.example.com", "email": "anna@example.com", "role": "member", "user": |
3693 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}], |
3694 | + "http_etag": "\"ddb98e7ce39d8994d3b2de98bcae1650a7359e78\"", "total_size": |
3695 | + 1, "start": 0}'} |
3696 | + headers: |
3697 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3698 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3699 | + content-length: ['515'] |
3700 | + content-type: [application/json; charset=utf-8] |
3701 | + status: {code: 200, message: OK} |
3702 | +- request: |
3703 | + body: null |
3704 | + headers: |
3705 | + accept-encoding: ['gzip, deflate'] |
3706 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3707 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3708 | + method: GET |
3709 | + uri: http://localhost:9001/3.0/members/104473260871439163529610165544142173708 |
3710 | + response: |
3711 | + body: {string: '{"http_etag": "\"791c35b4fc3a7d325559ba98bf459a91f0ec0b97\"", |
3712 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/104473260871439163529610165544142173708", |
3713 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3714 | + "test-one.example.com", "email": "anna@example.com", "role": "member", "user": |
3715 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}'} |
3716 | + headers: |
3717 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3718 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3719 | + content-length: ['410'] |
3720 | + content-type: [application/json; charset=utf-8] |
3721 | + status: {code: 200, message: OK} |
3722 | +- request: |
3723 | + body: null |
3724 | + headers: |
3725 | + accept-encoding: ['gzip, deflate'] |
3726 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3727 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3728 | + method: GET |
3729 | + uri: http://localhost:9001/3.0/lists/test-one@example.com/roster/member?count=1&page=2 |
3730 | + response: |
3731 | + body: {string: '{"entries": [{"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", |
3732 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
3733 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
3734 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
3735 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}], |
3736 | + "http_etag": "\"f0171d45c23ec5087836f92aaf8ff0f0f70a9294\"", "total_size": |
3737 | + 1, "start": 0}'} |
3738 | + headers: |
3739 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3740 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3741 | + content-length: ['516'] |
3742 | + content-type: [application/json; charset=utf-8] |
3743 | + status: {code: 200, message: OK} |
3744 | +- request: |
3745 | + body: null |
3746 | + headers: |
3747 | + accept-encoding: ['gzip, deflate'] |
3748 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3749 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3750 | + method: GET |
3751 | + uri: http://localhost:9001/3.0/members/275272594951032189318671732666193338856 |
3752 | + response: |
3753 | + body: {string: '{"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", |
3754 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
3755 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
3756 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
3757 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}'} |
3758 | + headers: |
3759 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3760 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3761 | + content-length: ['411'] |
3762 | + content-type: [application/json; charset=utf-8] |
3763 | + status: {code: 200, message: OK} |
3764 | +- request: |
3765 | + body: null |
3766 | + headers: |
3767 | + accept-encoding: ['gzip, deflate'] |
3768 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3769 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3770 | + method: GET |
3771 | + uri: http://localhost:9001/3.0/lists/test-two@example.com/roster/member |
3772 | + response: |
3773 | + body: {string: '{"entries": [{"http_etag": "\"cb2d6f0b4bed8456d32dc0f83a47ba2ee264e661\"", |
3774 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/18090098823740248348445588761302258241", |
3775 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3776 | + "test-two.example.com", "email": "anna@example.com", "role": "member", "user": |
3777 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}, |
3778 | + {"http_etag": "\"7e9fbe757624318db74a977eb13491950d78fce7\"", "delivery_mode": |
3779 | + "regular", "self_link": "http://localhost:9001/3.0/members/277964071707554096935986210544886743347", |
3780 | + "address": "http://localhost:9001/3.0/addresses/cris@example.com", "list_id": |
3781 | + "test-two.example.com", "email": "cris@example.com", "role": "member", "user": |
3782 | + "http://localhost:9001/3.0/users/124469682936455360048380387046363665337"}], |
3783 | + "http_etag": "\"1146a3a8fbea4f6d9cd141f0243f98a5c85e9c47\"", "total_size": |
3784 | + 2, "start": 0}'} |
3785 | + headers: |
3786 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3787 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3788 | + content-length: ['927'] |
3789 | + content-type: [application/json; charset=utf-8] |
3790 | + status: {code: 200, message: OK} |
3791 | +- request: |
3792 | + body: null |
3793 | + headers: |
3794 | + accept-encoding: ['gzip, deflate'] |
3795 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3796 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3797 | + method: GET |
3798 | + uri: http://localhost:9001/3.0/members/18090098823740248348445588761302258241 |
3799 | + response: |
3800 | + body: {string: '{"http_etag": "\"cb2d6f0b4bed8456d32dc0f83a47ba2ee264e661\"", |
3801 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/18090098823740248348445588761302258241", |
3802 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3803 | + "test-two.example.com", "email": "anna@example.com", "role": "member", "user": |
3804 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}'} |
3805 | + headers: |
3806 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3807 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3808 | + content-length: ['409'] |
3809 | + content-type: [application/json; charset=utf-8] |
3810 | + status: {code: 200, message: OK} |
3811 | +- request: |
3812 | + body: null |
3813 | + headers: |
3814 | + accept-encoding: ['gzip, deflate'] |
3815 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3816 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3817 | + method: GET |
3818 | + uri: http://localhost:9001/3.0/members/277964071707554096935986210544886743347 |
3819 | + response: |
3820 | + body: {string: '{"http_etag": "\"7e9fbe757624318db74a977eb13491950d78fce7\"", |
3821 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/277964071707554096935986210544886743347", |
3822 | + "address": "http://localhost:9001/3.0/addresses/cris@example.com", "list_id": |
3823 | + "test-two.example.com", "email": "cris@example.com", "role": "member", "user": |
3824 | + "http://localhost:9001/3.0/users/124469682936455360048380387046363665337"}'} |
3825 | + headers: |
3826 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3827 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3828 | + content-length: ['411'] |
3829 | + content-type: [application/json; charset=utf-8] |
3830 | + status: {code: 200, message: OK} |
3831 | +- request: |
3832 | + body: null |
3833 | + headers: |
3834 | + accept-encoding: ['gzip, deflate'] |
3835 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3836 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3837 | + method: GET |
3838 | + uri: http://localhost:9001/3.0/lists/test-two@example.com |
3839 | + response: |
3840 | + body: {string: '{"display_name": "Test-two", "list_name": "test-two", "mail_host": |
3841 | + "example.com", "volume": 1, "fqdn_listname": "test-two@example.com", "member_count": |
3842 | + 2, "http_etag": "\"d08cd84bdb77efc54164c377e86a9540fffcf6ab\"", "self_link": |
3843 | + "http://localhost:9001/3.0/lists/test-two.example.com", "list_id": "test-two.example.com"}'} |
3844 | + headers: |
3845 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3846 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3847 | + content-length: ['319'] |
3848 | + content-type: [application/json; charset=utf-8] |
3849 | + status: {code: 200, message: OK} |
3850 | +- request: |
3851 | + body: null |
3852 | + headers: |
3853 | + accept-encoding: ['gzip, deflate'] |
3854 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3855 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3856 | + method: GET |
3857 | + uri: http://localhost:9001/3.0/lists/test-two@example.com/roster/member |
3858 | + response: |
3859 | + body: {string: '{"entries": [{"http_etag": "\"cb2d6f0b4bed8456d32dc0f83a47ba2ee264e661\"", |
3860 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/18090098823740248348445588761302258241", |
3861 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3862 | + "test-two.example.com", "email": "anna@example.com", "role": "member", "user": |
3863 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}, |
3864 | + {"http_etag": "\"7e9fbe757624318db74a977eb13491950d78fce7\"", "delivery_mode": |
3865 | + "regular", "self_link": "http://localhost:9001/3.0/members/277964071707554096935986210544886743347", |
3866 | + "address": "http://localhost:9001/3.0/addresses/cris@example.com", "list_id": |
3867 | + "test-two.example.com", "email": "cris@example.com", "role": "member", "user": |
3868 | + "http://localhost:9001/3.0/users/124469682936455360048380387046363665337"}], |
3869 | + "http_etag": "\"1146a3a8fbea4f6d9cd141f0243f98a5c85e9c47\"", "total_size": |
3870 | + 2, "start": 0}'} |
3871 | + headers: |
3872 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3873 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3874 | + content-length: ['927'] |
3875 | + content-type: [application/json; charset=utf-8] |
3876 | + status: {code: 200, message: OK} |
3877 | +- request: |
3878 | + body: null |
3879 | + headers: |
3880 | + accept-encoding: ['gzip, deflate'] |
3881 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3882 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3883 | + method: GET |
3884 | + uri: http://localhost:9001/3.0/members/18090098823740248348445588761302258241 |
3885 | + response: |
3886 | + body: {string: '{"http_etag": "\"cb2d6f0b4bed8456d32dc0f83a47ba2ee264e661\"", |
3887 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/18090098823740248348445588761302258241", |
3888 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3889 | + "test-two.example.com", "email": "anna@example.com", "role": "member", "user": |
3890 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}'} |
3891 | + headers: |
3892 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3893 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3894 | + content-length: ['409'] |
3895 | + content-type: [application/json; charset=utf-8] |
3896 | + status: {code: 200, message: OK} |
3897 | +- request: |
3898 | + body: null |
3899 | + headers: |
3900 | + accept-encoding: ['gzip, deflate'] |
3901 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3902 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3903 | + method: GET |
3904 | + uri: http://localhost:9001/3.0/members/277964071707554096935986210544886743347 |
3905 | + response: |
3906 | + body: {string: '{"http_etag": "\"7e9fbe757624318db74a977eb13491950d78fce7\"", |
3907 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/277964071707554096935986210544886743347", |
3908 | + "address": "http://localhost:9001/3.0/addresses/cris@example.com", "list_id": |
3909 | + "test-two.example.com", "email": "cris@example.com", "role": "member", "user": |
3910 | + "http://localhost:9001/3.0/users/124469682936455360048380387046363665337"}'} |
3911 | + headers: |
3912 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3913 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3914 | + content-length: ['411'] |
3915 | + content-type: [application/json; charset=utf-8] |
3916 | + status: {code: 200, message: OK} |
3917 | +- request: |
3918 | + body: null |
3919 | + headers: |
3920 | + accept-encoding: ['gzip, deflate'] |
3921 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3922 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3923 | + method: GET |
3924 | + uri: http://localhost:9001/3.0/members/277964071707554096935986210544886743347/preferences |
3925 | + response: |
3926 | + body: {string: '{"http_etag": "\"c92a598f73d802965003673ce4b295c8ac99044e\"", |
3927 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/277964071707554096935986210544886743347/preferences"}'} |
3928 | + headers: |
3929 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3930 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3931 | + content-length: ['191'] |
3932 | + content-type: [application/json; charset=utf-8] |
3933 | + status: {code: 200, message: OK} |
3934 | +- request: |
3935 | + body: null |
3936 | + headers: |
3937 | + accept-encoding: ['gzip, deflate'] |
3938 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3939 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3940 | + method: GET |
3941 | + uri: http://localhost:9001/3.0/users/124469682936455360048380387046363665337 |
3942 | + response: |
3943 | + body: {string: '{"display_name": "Cris", "created_on": "2015-01-04T22:42:46.585952", |
3944 | + "http_etag": "\"d90ffc1b68bce7104b233c1db8f845e99c7bd825\"", "password": "$6$rounds=92010$7YY2dmehop54XUlN$AmEKAOmx8038OgvF5/lXAJZuIW9ZWw.q.sEgT2BO9ypTD0GsTzkwQxKVgu2aCkcpkCQRJaw2sM/EjaeqUYfMY0", |
3945 | + "self_link": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
3946 | + "user_id": 124469682936455360048380387046363665337}'} |
3947 | + headers: |
3948 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3949 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3950 | + content-length: ['404'] |
3951 | + content-type: [application/json; charset=utf-8] |
3952 | + status: {code: 200, message: OK} |
3953 | +- request: |
3954 | + body: null |
3955 | + headers: |
3956 | + accept-encoding: ['gzip, deflate'] |
3957 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3958 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3959 | + method: GET |
3960 | + uri: http://localhost:9001/3.0/lists/test-two@example.com/roster/member |
3961 | + response: |
3962 | + body: {string: '{"entries": [{"http_etag": "\"cb2d6f0b4bed8456d32dc0f83a47ba2ee264e661\"", |
3963 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/18090098823740248348445588761302258241", |
3964 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3965 | + "test-two.example.com", "email": "anna@example.com", "role": "member", "user": |
3966 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}, |
3967 | + {"http_etag": "\"7e9fbe757624318db74a977eb13491950d78fce7\"", "delivery_mode": |
3968 | + "regular", "self_link": "http://localhost:9001/3.0/members/277964071707554096935986210544886743347", |
3969 | + "address": "http://localhost:9001/3.0/addresses/cris@example.com", "list_id": |
3970 | + "test-two.example.com", "email": "cris@example.com", "role": "member", "user": |
3971 | + "http://localhost:9001/3.0/users/124469682936455360048380387046363665337"}], |
3972 | + "http_etag": "\"1146a3a8fbea4f6d9cd141f0243f98a5c85e9c47\"", "total_size": |
3973 | + 2, "start": 0}'} |
3974 | + headers: |
3975 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3976 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3977 | + content-length: ['927'] |
3978 | + content-type: [application/json; charset=utf-8] |
3979 | + status: {code: 200, message: OK} |
3980 | +- request: |
3981 | + body: null |
3982 | + headers: |
3983 | + accept-encoding: ['gzip, deflate'] |
3984 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
3985 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
3986 | + method: GET |
3987 | + uri: http://localhost:9001/3.0/members/18090098823740248348445588761302258241 |
3988 | + response: |
3989 | + body: {string: '{"http_etag": "\"cb2d6f0b4bed8456d32dc0f83a47ba2ee264e661\"", |
3990 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/18090098823740248348445588761302258241", |
3991 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
3992 | + "test-two.example.com", "email": "anna@example.com", "role": "member", "user": |
3993 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}'} |
3994 | + headers: |
3995 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
3996 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
3997 | + content-length: ['409'] |
3998 | + content-type: [application/json; charset=utf-8] |
3999 | + status: {code: 200, message: OK} |
4000 | +- request: |
4001 | + body: null |
4002 | + headers: |
4003 | + accept-encoding: ['gzip, deflate'] |
4004 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4005 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4006 | + method: GET |
4007 | + uri: http://localhost:9001/3.0/members/277964071707554096935986210544886743347 |
4008 | + response: |
4009 | + body: {string: '{"http_etag": "\"7e9fbe757624318db74a977eb13491950d78fce7\"", |
4010 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/277964071707554096935986210544886743347", |
4011 | + "address": "http://localhost:9001/3.0/addresses/cris@example.com", "list_id": |
4012 | + "test-two.example.com", "email": "cris@example.com", "role": "member", "user": |
4013 | + "http://localhost:9001/3.0/users/124469682936455360048380387046363665337"}'} |
4014 | + headers: |
4015 | + Date: ['Sun, 04 Jan 2015 22:42:47 GMT'] |
4016 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4017 | + content-length: ['411'] |
4018 | + content-type: [application/json; charset=utf-8] |
4019 | + status: {code: 200, message: OK} |
4020 | +- request: |
4021 | + body: null |
4022 | + headers: |
4023 | + accept-encoding: ['gzip, deflate'] |
4024 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4025 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4026 | + method: GET |
4027 | + uri: http://localhost:9001/3.0/lists/test-one@example.com/roster/member |
4028 | + response: |
4029 | + body: {string: '{"entries": [{"http_etag": "\"791c35b4fc3a7d325559ba98bf459a91f0ec0b97\"", |
4030 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/104473260871439163529610165544142173708", |
4031 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
4032 | + "test-one.example.com", "email": "anna@example.com", "role": "member", "user": |
4033 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}, |
4034 | + {"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", "delivery_mode": |
4035 | + "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
4036 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
4037 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
4038 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}], |
4039 | + "http_etag": "\"035b2ef6161ccb46df27b7a6bec02c1a85cf471f\"", "total_size": |
4040 | + 2, "start": 0}'} |
4041 | + headers: |
4042 | + Date: ['Sun, 04 Jan 2015 22:42:49 GMT'] |
4043 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4044 | + content-length: ['928'] |
4045 | + content-type: [application/json; charset=utf-8] |
4046 | + status: {code: 200, message: OK} |
4047 | +- request: |
4048 | + body: null |
4049 | + headers: |
4050 | + accept-encoding: ['gzip, deflate'] |
4051 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4052 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4053 | + method: GET |
4054 | + uri: http://localhost:9001/3.0/members/104473260871439163529610165544142173708 |
4055 | + response: |
4056 | + body: {string: '{"http_etag": "\"791c35b4fc3a7d325559ba98bf459a91f0ec0b97\"", |
4057 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/104473260871439163529610165544142173708", |
4058 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
4059 | + "test-one.example.com", "email": "anna@example.com", "role": "member", "user": |
4060 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}'} |
4061 | + headers: |
4062 | + Date: ['Sun, 04 Jan 2015 22:42:49 GMT'] |
4063 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4064 | + content-length: ['410'] |
4065 | + content-type: [application/json; charset=utf-8] |
4066 | + status: {code: 200, message: OK} |
4067 | +- request: |
4068 | + body: null |
4069 | + headers: |
4070 | + accept-encoding: ['gzip, deflate'] |
4071 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4072 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4073 | + method: DELETE |
4074 | + uri: http://localhost:9001/3.0/members/104473260871439163529610165544142173708 |
4075 | + response: |
4076 | + body: {string: ''} |
4077 | + headers: |
4078 | + Content-Length: ['0'] |
4079 | + Date: ['Sun, 04 Jan 2015 22:42:49 GMT'] |
4080 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4081 | + status: {code: 204, message: No Content} |
4082 | +- request: |
4083 | + body: null |
4084 | + headers: |
4085 | + accept-encoding: ['gzip, deflate'] |
4086 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4087 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4088 | + method: GET |
4089 | + uri: http://localhost:9001/3.0/members |
4090 | + response: |
4091 | + body: {string: '{"entries": [{"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", |
4092 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
4093 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
4094 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
4095 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}, |
4096 | + {"http_etag": "\"cb2d6f0b4bed8456d32dc0f83a47ba2ee264e661\"", "delivery_mode": |
4097 | + "regular", "self_link": "http://localhost:9001/3.0/members/18090098823740248348445588761302258241", |
4098 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
4099 | + "test-two.example.com", "email": "anna@example.com", "role": "member", "user": |
4100 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}, |
4101 | + {"http_etag": "\"7e9fbe757624318db74a977eb13491950d78fce7\"", "delivery_mode": |
4102 | + "regular", "self_link": "http://localhost:9001/3.0/members/277964071707554096935986210544886743347", |
4103 | + "address": "http://localhost:9001/3.0/addresses/cris@example.com", "list_id": |
4104 | + "test-two.example.com", "email": "cris@example.com", "role": "member", "user": |
4105 | + "http://localhost:9001/3.0/users/124469682936455360048380387046363665337"}], |
4106 | + "http_etag": "\"0dfdbb6a939f9d964c0aec89b14a11a3c5089eee\"", "total_size": |
4107 | + 3, "start": 0}'} |
4108 | + headers: |
4109 | + Date: ['Sun, 04 Jan 2015 22:42:49 GMT'] |
4110 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4111 | + content-length: ['1340'] |
4112 | + content-type: [application/json; charset=utf-8] |
4113 | + status: {code: 200, message: OK} |
4114 | +- request: |
4115 | + body: null |
4116 | + headers: |
4117 | + accept-encoding: ['gzip, deflate'] |
4118 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4119 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4120 | + method: GET |
4121 | + uri: http://localhost:9001/3.0/members/275272594951032189318671732666193338856 |
4122 | + response: |
4123 | + body: {string: '{"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", |
4124 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
4125 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
4126 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
4127 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}'} |
4128 | + headers: |
4129 | + Date: ['Sun, 04 Jan 2015 22:42:49 GMT'] |
4130 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4131 | + content-length: ['411'] |
4132 | + content-type: [application/json; charset=utf-8] |
4133 | + status: {code: 200, message: OK} |
4134 | +- request: |
4135 | + body: null |
4136 | + headers: |
4137 | + accept-encoding: ['gzip, deflate'] |
4138 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4139 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4140 | + method: GET |
4141 | + uri: http://localhost:9001/3.0/members/18090098823740248348445588761302258241 |
4142 | + response: |
4143 | + body: {string: '{"http_etag": "\"cb2d6f0b4bed8456d32dc0f83a47ba2ee264e661\"", |
4144 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/18090098823740248348445588761302258241", |
4145 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
4146 | + "test-two.example.com", "email": "anna@example.com", "role": "member", "user": |
4147 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}'} |
4148 | + headers: |
4149 | + Date: ['Sun, 04 Jan 2015 22:42:49 GMT'] |
4150 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4151 | + content-length: ['409'] |
4152 | + content-type: [application/json; charset=utf-8] |
4153 | + status: {code: 200, message: OK} |
4154 | +- request: |
4155 | + body: null |
4156 | + headers: |
4157 | + accept-encoding: ['gzip, deflate'] |
4158 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4159 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4160 | + method: GET |
4161 | + uri: http://localhost:9001/3.0/members/277964071707554096935986210544886743347 |
4162 | + response: |
4163 | + body: {string: '{"http_etag": "\"7e9fbe757624318db74a977eb13491950d78fce7\"", |
4164 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/277964071707554096935986210544886743347", |
4165 | + "address": "http://localhost:9001/3.0/addresses/cris@example.com", "list_id": |
4166 | + "test-two.example.com", "email": "cris@example.com", "role": "member", "user": |
4167 | + "http://localhost:9001/3.0/users/124469682936455360048380387046363665337"}'} |
4168 | + headers: |
4169 | + Date: ['Sun, 04 Jan 2015 22:42:49 GMT'] |
4170 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4171 | + content-length: ['411'] |
4172 | + content-type: [application/json; charset=utf-8] |
4173 | + status: {code: 200, message: OK} |
4174 | +- request: |
4175 | + body: null |
4176 | + headers: |
4177 | + accept-encoding: ['gzip, deflate'] |
4178 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4179 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4180 | + method: DELETE |
4181 | + uri: http://localhost:9001/3.0/members/277964071707554096935986210544886743347 |
4182 | + response: |
4183 | + body: {string: ''} |
4184 | + headers: |
4185 | + Content-Length: ['0'] |
4186 | + Date: ['Sun, 04 Jan 2015 22:42:49 GMT'] |
4187 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4188 | + status: {code: 204, message: No Content} |
4189 | +- request: |
4190 | + body: null |
4191 | + headers: |
4192 | + accept-encoding: ['gzip, deflate'] |
4193 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4194 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4195 | + method: GET |
4196 | + uri: http://localhost:9001/3.0/members |
4197 | + response: |
4198 | + body: {string: '{"entries": [{"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", |
4199 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
4200 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
4201 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
4202 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}, |
4203 | + {"http_etag": "\"cb2d6f0b4bed8456d32dc0f83a47ba2ee264e661\"", "delivery_mode": |
4204 | + "regular", "self_link": "http://localhost:9001/3.0/members/18090098823740248348445588761302258241", |
4205 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
4206 | + "test-two.example.com", "email": "anna@example.com", "role": "member", "user": |
4207 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}], |
4208 | + "http_etag": "\"0faf9fc88982999af8efa057d2f0871c072eb2bd\"", "total_size": |
4209 | + 2, "start": 0}'} |
4210 | + headers: |
4211 | + Date: ['Sun, 04 Jan 2015 22:42:49 GMT'] |
4212 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4213 | + content-length: ['927'] |
4214 | + content-type: [application/json; charset=utf-8] |
4215 | + status: {code: 200, message: OK} |
4216 | +- request: |
4217 | + body: null |
4218 | + headers: |
4219 | + accept-encoding: ['gzip, deflate'] |
4220 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4221 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4222 | + method: GET |
4223 | + uri: http://localhost:9001/3.0/members/275272594951032189318671732666193338856 |
4224 | + response: |
4225 | + body: {string: '{"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", |
4226 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
4227 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
4228 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
4229 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}'} |
4230 | + headers: |
4231 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4232 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4233 | + content-length: ['411'] |
4234 | + content-type: [application/json; charset=utf-8] |
4235 | + status: {code: 200, message: OK} |
4236 | +- request: |
4237 | + body: null |
4238 | + headers: |
4239 | + accept-encoding: ['gzip, deflate'] |
4240 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4241 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4242 | + method: GET |
4243 | + uri: http://localhost:9001/3.0/members/18090098823740248348445588761302258241 |
4244 | + response: |
4245 | + body: {string: '{"http_etag": "\"cb2d6f0b4bed8456d32dc0f83a47ba2ee264e661\"", |
4246 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/18090098823740248348445588761302258241", |
4247 | + "address": "http://localhost:9001/3.0/addresses/anna@example.com", "list_id": |
4248 | + "test-two.example.com", "email": "anna@example.com", "role": "member", "user": |
4249 | + "http://localhost:9001/3.0/users/53219726604340771000788887326802581518"}'} |
4250 | + headers: |
4251 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4252 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4253 | + content-length: ['409'] |
4254 | + content-type: [application/json; charset=utf-8] |
4255 | + status: {code: 200, message: OK} |
4256 | +- request: |
4257 | + body: null |
4258 | + headers: |
4259 | + accept-encoding: ['gzip, deflate'] |
4260 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4261 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4262 | + method: GET |
4263 | + uri: http://localhost:9001/3.0/lists/test-one@example.com/roster/member |
4264 | + response: |
4265 | + body: {string: '{"entries": [{"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", |
4266 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
4267 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
4268 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
4269 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}], |
4270 | + "http_etag": "\"f0171d45c23ec5087836f92aaf8ff0f0f70a9294\"", "total_size": |
4271 | + 1, "start": 0}'} |
4272 | + headers: |
4273 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4274 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4275 | + content-length: ['516'] |
4276 | + content-type: [application/json; charset=utf-8] |
4277 | + status: {code: 200, message: OK} |
4278 | +- request: |
4279 | + body: null |
4280 | + headers: |
4281 | + accept-encoding: ['gzip, deflate'] |
4282 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4283 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4284 | + method: GET |
4285 | + uri: http://localhost:9001/3.0/members/275272594951032189318671732666193338856 |
4286 | + response: |
4287 | + body: {string: '{"http_etag": "\"0e88aa304c672fe175da32e7ef6ee81d65d94856\"", |
4288 | + "delivery_mode": "regular", "self_link": "http://localhost:9001/3.0/members/275272594951032189318671732666193338856", |
4289 | + "address": "http://localhost:9001/3.0/addresses/bill@example.com", "list_id": |
4290 | + "test-one.example.com", "email": "bill@example.com", "role": "member", "user": |
4291 | + "http://localhost:9001/3.0/users/282238326831930934086115995946546408713"}'} |
4292 | + headers: |
4293 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4294 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4295 | + content-length: ['411'] |
4296 | + content-type: [application/json; charset=utf-8] |
4297 | + status: {code: 200, message: OK} |
4298 | +- request: |
4299 | + body: list_id=test-one.example.com&role=nonmember |
4300 | + headers: |
4301 | + accept-encoding: ['gzip, deflate'] |
4302 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4303 | + content-type: [application/x-www-form-urlencoded] |
4304 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4305 | + method: POST |
4306 | + uri: http://localhost:9001/3.0/members/find |
4307 | + response: |
4308 | + body: {string: '{"http_etag": "\"32223434a0f3af4cdc4673d1fbc5bac1f6d98fd3\"", |
4309 | + "total_size": 0, "start": 0}'} |
4310 | + headers: |
4311 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4312 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4313 | + content-length: ['90'] |
4314 | + content-type: [application/json; charset=utf-8] |
4315 | + status: {code: 200, message: OK} |
4316 | +- request: |
4317 | + body: null |
4318 | + headers: |
4319 | + accept-encoding: ['gzip, deflate'] |
4320 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4321 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4322 | + method: GET |
4323 | + uri: http://localhost:9001/3.0/users |
4324 | + response: |
4325 | + body: {string: '{"entries": [{"display_name": "Anna", "created_on": "2015-01-04T22:42:46.058449", |
4326 | + "http_etag": "\"38cfaada6ec706c48e1a453e5b774aff209942e4\"", "password": "$6$rounds=104746$a6kjw9ZdJUX8E7Ig$lm4HU6MIyMcOgPteqwHqFpJuey7zc7WkO4.bqw4hmEc7hrfZFmN9iTdgAPc8zm04QT8HL8gfqQKXxnAe6uAFh1", |
4327 | + "self_link": "http://localhost:9001/3.0/users/53219726604340771000788887326802581518", |
4328 | + "user_id": 53219726604340771000788887326802581518}, {"display_name": "Bill", |
4329 | + "created_on": "2015-01-04T22:42:46.289167", "http_etag": "\"c084714d661a69fd433bac818a53cd121323d036\"", |
4330 | + "password": "$6$rounds=93157$R872gB3lPaWHcG85$0BqbkmSBVfkjIHTeJZGGP0yXHAUVM/ys46Tquswpz5zEMIdV4Ya4AyBz.LMkKdsfKjo0P5dSFInFlOsE6W3Sd/", |
4331 | + "self_link": "http://localhost:9001/3.0/users/282238326831930934086115995946546408713", |
4332 | + "user_id": 282238326831930934086115995946546408713}, {"display_name": "Cris", |
4333 | + "created_on": "2015-01-04T22:42:46.585952", "http_etag": "\"d90ffc1b68bce7104b233c1db8f845e99c7bd825\"", |
4334 | + "password": "$6$rounds=92010$7YY2dmehop54XUlN$AmEKAOmx8038OgvF5/lXAJZuIW9ZWw.q.sEgT2BO9ypTD0GsTzkwQxKVgu2aCkcpkCQRJaw2sM/EjaeqUYfMY0", |
4335 | + "self_link": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
4336 | + "user_id": 124469682936455360048380387046363665337}], "http_etag": "\"5cdb208d747b21a3e3f8d7c04c8831d8713a2d02\"", |
4337 | + "total_size": 3, "start": 0}'} |
4338 | + headers: |
4339 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4340 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4341 | + content-length: ['1320'] |
4342 | + content-type: [application/json; charset=utf-8] |
4343 | + status: {code: 200, message: OK} |
4344 | +- request: |
4345 | + body: null |
4346 | + headers: |
4347 | + accept-encoding: ['gzip, deflate'] |
4348 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4349 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4350 | + method: GET |
4351 | + uri: http://localhost:9001/3.0/users/124469682936455360048380387046363665337 |
4352 | + response: |
4353 | + body: {string: '{"display_name": "Cris", "created_on": "2015-01-04T22:42:46.585952", |
4354 | + "http_etag": "\"d90ffc1b68bce7104b233c1db8f845e99c7bd825\"", "password": "$6$rounds=92010$7YY2dmehop54XUlN$AmEKAOmx8038OgvF5/lXAJZuIW9ZWw.q.sEgT2BO9ypTD0GsTzkwQxKVgu2aCkcpkCQRJaw2sM/EjaeqUYfMY0", |
4355 | + "self_link": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
4356 | + "user_id": 124469682936455360048380387046363665337}'} |
4357 | + headers: |
4358 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4359 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4360 | + content-length: ['404'] |
4361 | + content-type: [application/json; charset=utf-8] |
4362 | + status: {code: 200, message: OK} |
4363 | +- request: |
4364 | + body: null |
4365 | + headers: |
4366 | + accept-encoding: ['gzip, deflate'] |
4367 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4368 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4369 | + method: GET |
4370 | + uri: http://localhost:9001/3.0/users/282238326831930934086115995946546408713 |
4371 | + response: |
4372 | + body: {string: '{"display_name": "Bill", "created_on": "2015-01-04T22:42:46.289167", |
4373 | + "http_etag": "\"c084714d661a69fd433bac818a53cd121323d036\"", "password": "$6$rounds=93157$R872gB3lPaWHcG85$0BqbkmSBVfkjIHTeJZGGP0yXHAUVM/ys46Tquswpz5zEMIdV4Ya4AyBz.LMkKdsfKjo0P5dSFInFlOsE6W3Sd/", |
4374 | + "self_link": "http://localhost:9001/3.0/users/282238326831930934086115995946546408713", |
4375 | + "user_id": 282238326831930934086115995946546408713}'} |
4376 | + headers: |
4377 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4378 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4379 | + content-length: ['404'] |
4380 | + content-type: [application/json; charset=utf-8] |
4381 | + status: {code: 200, message: OK} |
4382 | +- request: |
4383 | + body: null |
4384 | + headers: |
4385 | + accept-encoding: ['gzip, deflate'] |
4386 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4387 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4388 | + method: GET |
4389 | + uri: http://localhost:9001/3.0/users/53219726604340771000788887326802581518 |
4390 | + response: |
4391 | + body: {string: '{"display_name": "Anna", "created_on": "2015-01-04T22:42:46.058449", |
4392 | + "http_etag": "\"38cfaada6ec706c48e1a453e5b774aff209942e4\"", "password": "$6$rounds=104746$a6kjw9ZdJUX8E7Ig$lm4HU6MIyMcOgPteqwHqFpJuey7zc7WkO4.bqw4hmEc7hrfZFmN9iTdgAPc8zm04QT8HL8gfqQKXxnAe6uAFh1", |
4393 | + "self_link": "http://localhost:9001/3.0/users/53219726604340771000788887326802581518", |
4394 | + "user_id": 53219726604340771000788887326802581518}'} |
4395 | + headers: |
4396 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4397 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4398 | + content-length: ['403'] |
4399 | + content-type: [application/json; charset=utf-8] |
4400 | + status: {code: 200, message: OK} |
4401 | +- request: |
4402 | + body: null |
4403 | + headers: |
4404 | + accept-encoding: ['gzip, deflate'] |
4405 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4406 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4407 | + method: GET |
4408 | + uri: http://localhost:9001/3.0/users?count=2&page=1 |
4409 | + response: |
4410 | + body: {string: '{"entries": [{"display_name": "Anna", "created_on": "2015-01-04T22:42:46.058449", |
4411 | + "http_etag": "\"38cfaada6ec706c48e1a453e5b774aff209942e4\"", "password": "$6$rounds=104746$a6kjw9ZdJUX8E7Ig$lm4HU6MIyMcOgPteqwHqFpJuey7zc7WkO4.bqw4hmEc7hrfZFmN9iTdgAPc8zm04QT8HL8gfqQKXxnAe6uAFh1", |
4412 | + "self_link": "http://localhost:9001/3.0/users/53219726604340771000788887326802581518", |
4413 | + "user_id": 53219726604340771000788887326802581518}, {"display_name": "Bill", |
4414 | + "created_on": "2015-01-04T22:42:46.289167", "http_etag": "\"c084714d661a69fd433bac818a53cd121323d036\"", |
4415 | + "password": "$6$rounds=93157$R872gB3lPaWHcG85$0BqbkmSBVfkjIHTeJZGGP0yXHAUVM/ys46Tquswpz5zEMIdV4Ya4AyBz.LMkKdsfKjo0P5dSFInFlOsE6W3Sd/", |
4416 | + "self_link": "http://localhost:9001/3.0/users/282238326831930934086115995946546408713", |
4417 | + "user_id": 282238326831930934086115995946546408713}], "http_etag": "\"5a99b5066025762287b4d885d50a920ec8f51ec3\"", |
4418 | + "total_size": 2, "start": 0}'} |
4419 | + headers: |
4420 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4421 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4422 | + content-length: ['914'] |
4423 | + content-type: [application/json; charset=utf-8] |
4424 | + status: {code: 200, message: OK} |
4425 | +- request: |
4426 | + body: null |
4427 | + headers: |
4428 | + accept-encoding: ['gzip, deflate'] |
4429 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4430 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4431 | + method: GET |
4432 | + uri: http://localhost:9001/3.0/users/53219726604340771000788887326802581518 |
4433 | + response: |
4434 | + body: {string: '{"display_name": "Anna", "created_on": "2015-01-04T22:42:46.058449", |
4435 | + "http_etag": "\"38cfaada6ec706c48e1a453e5b774aff209942e4\"", "password": "$6$rounds=104746$a6kjw9ZdJUX8E7Ig$lm4HU6MIyMcOgPteqwHqFpJuey7zc7WkO4.bqw4hmEc7hrfZFmN9iTdgAPc8zm04QT8HL8gfqQKXxnAe6uAFh1", |
4436 | + "self_link": "http://localhost:9001/3.0/users/53219726604340771000788887326802581518", |
4437 | + "user_id": 53219726604340771000788887326802581518}'} |
4438 | + headers: |
4439 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4440 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4441 | + content-length: ['403'] |
4442 | + content-type: [application/json; charset=utf-8] |
4443 | + status: {code: 200, message: OK} |
4444 | +- request: |
4445 | + body: null |
4446 | + headers: |
4447 | + accept-encoding: ['gzip, deflate'] |
4448 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4449 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4450 | + method: GET |
4451 | + uri: http://localhost:9001/3.0/users/282238326831930934086115995946546408713 |
4452 | + response: |
4453 | + body: {string: '{"display_name": "Bill", "created_on": "2015-01-04T22:42:46.289167", |
4454 | + "http_etag": "\"c084714d661a69fd433bac818a53cd121323d036\"", "password": "$6$rounds=93157$R872gB3lPaWHcG85$0BqbkmSBVfkjIHTeJZGGP0yXHAUVM/ys46Tquswpz5zEMIdV4Ya4AyBz.LMkKdsfKjo0P5dSFInFlOsE6W3Sd/", |
4455 | + "self_link": "http://localhost:9001/3.0/users/282238326831930934086115995946546408713", |
4456 | + "user_id": 282238326831930934086115995946546408713}'} |
4457 | + headers: |
4458 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4459 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4460 | + content-length: ['404'] |
4461 | + content-type: [application/json; charset=utf-8] |
4462 | + status: {code: 200, message: OK} |
4463 | +- request: |
4464 | + body: null |
4465 | + headers: |
4466 | + accept-encoding: ['gzip, deflate'] |
4467 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4468 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4469 | + method: GET |
4470 | + uri: http://localhost:9001/3.0/users?count=2&page=2 |
4471 | + response: |
4472 | + body: {string: '{"entries": [{"display_name": "Cris", "created_on": "2015-01-04T22:42:46.585952", |
4473 | + "http_etag": "\"d90ffc1b68bce7104b233c1db8f845e99c7bd825\"", "password": "$6$rounds=92010$7YY2dmehop54XUlN$AmEKAOmx8038OgvF5/lXAJZuIW9ZWw.q.sEgT2BO9ypTD0GsTzkwQxKVgu2aCkcpkCQRJaw2sM/EjaeqUYfMY0", |
4474 | + "self_link": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
4475 | + "user_id": 124469682936455360048380387046363665337}], "http_etag": "\"36e84cef22a2eba7b77c527a1b8de775f70c3810\"", |
4476 | + "total_size": 1, "start": 0}'} |
4477 | + headers: |
4478 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4479 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4480 | + content-length: ['509'] |
4481 | + content-type: [application/json; charset=utf-8] |
4482 | + status: {code: 200, message: OK} |
4483 | +- request: |
4484 | + body: null |
4485 | + headers: |
4486 | + accept-encoding: ['gzip, deflate'] |
4487 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4488 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4489 | + method: GET |
4490 | + uri: http://localhost:9001/3.0/users/124469682936455360048380387046363665337 |
4491 | + response: |
4492 | + body: {string: '{"display_name": "Cris", "created_on": "2015-01-04T22:42:46.585952", |
4493 | + "http_etag": "\"d90ffc1b68bce7104b233c1db8f845e99c7bd825\"", "password": "$6$rounds=92010$7YY2dmehop54XUlN$AmEKAOmx8038OgvF5/lXAJZuIW9ZWw.q.sEgT2BO9ypTD0GsTzkwQxKVgu2aCkcpkCQRJaw2sM/EjaeqUYfMY0", |
4494 | + "self_link": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
4495 | + "user_id": 124469682936455360048380387046363665337}'} |
4496 | + headers: |
4497 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4498 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4499 | + content-length: ['404'] |
4500 | + content-type: [application/json; charset=utf-8] |
4501 | + status: {code: 200, message: OK} |
4502 | +- request: |
4503 | + body: null |
4504 | + headers: |
4505 | + accept-encoding: ['gzip, deflate'] |
4506 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4507 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4508 | + method: GET |
4509 | + uri: http://localhost:9001/3.0/users?count=2&page=1 |
4510 | + response: |
4511 | + body: {string: '{"entries": [{"display_name": "Anna", "created_on": "2015-01-04T22:42:46.058449", |
4512 | + "http_etag": "\"38cfaada6ec706c48e1a453e5b774aff209942e4\"", "password": "$6$rounds=104746$a6kjw9ZdJUX8E7Ig$lm4HU6MIyMcOgPteqwHqFpJuey7zc7WkO4.bqw4hmEc7hrfZFmN9iTdgAPc8zm04QT8HL8gfqQKXxnAe6uAFh1", |
4513 | + "self_link": "http://localhost:9001/3.0/users/53219726604340771000788887326802581518", |
4514 | + "user_id": 53219726604340771000788887326802581518}, {"display_name": "Bill", |
4515 | + "created_on": "2015-01-04T22:42:46.289167", "http_etag": "\"c084714d661a69fd433bac818a53cd121323d036\"", |
4516 | + "password": "$6$rounds=93157$R872gB3lPaWHcG85$0BqbkmSBVfkjIHTeJZGGP0yXHAUVM/ys46Tquswpz5zEMIdV4Ya4AyBz.LMkKdsfKjo0P5dSFInFlOsE6W3Sd/", |
4517 | + "self_link": "http://localhost:9001/3.0/users/282238326831930934086115995946546408713", |
4518 | + "user_id": 282238326831930934086115995946546408713}], "http_etag": "\"5a99b5066025762287b4d885d50a920ec8f51ec3\"", |
4519 | + "total_size": 2, "start": 0}'} |
4520 | + headers: |
4521 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4522 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4523 | + content-length: ['914'] |
4524 | + content-type: [application/json; charset=utf-8] |
4525 | + status: {code: 200, message: OK} |
4526 | +- request: |
4527 | + body: null |
4528 | + headers: |
4529 | + accept-encoding: ['gzip, deflate'] |
4530 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4531 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4532 | + method: GET |
4533 | + uri: http://localhost:9001/3.0/users/53219726604340771000788887326802581518 |
4534 | + response: |
4535 | + body: {string: '{"display_name": "Anna", "created_on": "2015-01-04T22:42:46.058449", |
4536 | + "http_etag": "\"38cfaada6ec706c48e1a453e5b774aff209942e4\"", "password": "$6$rounds=104746$a6kjw9ZdJUX8E7Ig$lm4HU6MIyMcOgPteqwHqFpJuey7zc7WkO4.bqw4hmEc7hrfZFmN9iTdgAPc8zm04QT8HL8gfqQKXxnAe6uAFh1", |
4537 | + "self_link": "http://localhost:9001/3.0/users/53219726604340771000788887326802581518", |
4538 | + "user_id": 53219726604340771000788887326802581518}'} |
4539 | + headers: |
4540 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4541 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4542 | + content-length: ['403'] |
4543 | + content-type: [application/json; charset=utf-8] |
4544 | + status: {code: 200, message: OK} |
4545 | +- request: |
4546 | + body: null |
4547 | + headers: |
4548 | + accept-encoding: ['gzip, deflate'] |
4549 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4550 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4551 | + method: GET |
4552 | + uri: http://localhost:9001/3.0/users/282238326831930934086115995946546408713 |
4553 | + response: |
4554 | + body: {string: '{"display_name": "Bill", "created_on": "2015-01-04T22:42:46.289167", |
4555 | + "http_etag": "\"c084714d661a69fd433bac818a53cd121323d036\"", "password": "$6$rounds=93157$R872gB3lPaWHcG85$0BqbkmSBVfkjIHTeJZGGP0yXHAUVM/ys46Tquswpz5zEMIdV4Ya4AyBz.LMkKdsfKjo0P5dSFInFlOsE6W3Sd/", |
4556 | + "self_link": "http://localhost:9001/3.0/users/282238326831930934086115995946546408713", |
4557 | + "user_id": 282238326831930934086115995946546408713}'} |
4558 | + headers: |
4559 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4560 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4561 | + content-length: ['404'] |
4562 | + content-type: [application/json; charset=utf-8] |
4563 | + status: {code: 200, message: OK} |
4564 | +- request: |
4565 | + body: null |
4566 | + headers: |
4567 | + accept-encoding: ['gzip, deflate'] |
4568 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4569 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4570 | + method: GET |
4571 | + uri: http://localhost:9001/3.0/users/cris@example.com |
4572 | + response: |
4573 | + body: {string: '{"display_name": "Cris", "created_on": "2015-01-04T22:42:46.585952", |
4574 | + "http_etag": "\"d90ffc1b68bce7104b233c1db8f845e99c7bd825\"", "password": "$6$rounds=92010$7YY2dmehop54XUlN$AmEKAOmx8038OgvF5/lXAJZuIW9ZWw.q.sEgT2BO9ypTD0GsTzkwQxKVgu2aCkcpkCQRJaw2sM/EjaeqUYfMY0", |
4575 | + "self_link": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
4576 | + "user_id": 124469682936455360048380387046363665337}'} |
4577 | + headers: |
4578 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4579 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4580 | + content-length: ['404'] |
4581 | + content-type: [application/json; charset=utf-8] |
4582 | + status: {code: 200, message: OK} |
4583 | +- request: |
4584 | + body: null |
4585 | + headers: |
4586 | + accept-encoding: ['gzip, deflate'] |
4587 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4588 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4589 | + method: GET |
4590 | + uri: http://localhost:9001/3.0/users/124469682936455360048380387046363665337 |
4591 | + response: |
4592 | + body: {string: '{"display_name": "Cris", "created_on": "2015-01-04T22:42:46.585952", |
4593 | + "http_etag": "\"d90ffc1b68bce7104b233c1db8f845e99c7bd825\"", "password": "$6$rounds=92010$7YY2dmehop54XUlN$AmEKAOmx8038OgvF5/lXAJZuIW9ZWw.q.sEgT2BO9ypTD0GsTzkwQxKVgu2aCkcpkCQRJaw2sM/EjaeqUYfMY0", |
4594 | + "self_link": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
4595 | + "user_id": 124469682936455360048380387046363665337}'} |
4596 | + headers: |
4597 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4598 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4599 | + content-length: ['404'] |
4600 | + content-type: [application/json; charset=utf-8] |
4601 | + status: {code: 200, message: OK} |
4602 | +- request: |
4603 | + body: null |
4604 | + headers: |
4605 | + accept-encoding: ['gzip, deflate'] |
4606 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4607 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4608 | + method: GET |
4609 | + uri: http://localhost:9001/3.0/users/124469682936455360048380387046363665337/addresses |
4610 | + response: |
4611 | + body: {string: '{"entries": [{"display_name": "Cris", "http_etag": "\"34ebc29602ad70d31b728755584723a2e02238a5\"", |
4612 | + "user": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
4613 | + "self_link": "http://localhost:9001/3.0/addresses/cris@example.com", "registered_on": |
4614 | + "2015-01-04T22:42:46.599496", "email": "cris@example.com", "original_email": |
4615 | + "cris@example.com"}], "http_etag": "\"469ab74e2321ef1e1ab60af79835859cec5786ab\"", |
4616 | + "total_size": 1, "start": 0}'} |
4617 | + headers: |
4618 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4619 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4620 | + content-length: ['456'] |
4621 | + content-type: [application/json; charset=utf-8] |
4622 | + status: {code: 200, message: OK} |
4623 | +- request: |
4624 | + body: null |
4625 | + headers: |
4626 | + accept-encoding: ['gzip, deflate'] |
4627 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4628 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4629 | + method: GET |
4630 | + uri: http://localhost:9001/3.0/addresses/cris@example.com |
4631 | + response: |
4632 | + body: {string: '{"display_name": "Cris", "http_etag": "\"34ebc29602ad70d31b728755584723a2e02238a5\"", |
4633 | + "user": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
4634 | + "self_link": "http://localhost:9001/3.0/addresses/cris@example.com", "registered_on": |
4635 | + "2015-01-04T22:42:46.599496", "email": "cris@example.com", "original_email": |
4636 | + "cris@example.com"}'} |
4637 | + headers: |
4638 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4639 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4640 | + content-length: ['351'] |
4641 | + content-type: [application/json; charset=utf-8] |
4642 | + status: {code: 200, message: OK} |
4643 | +- request: |
4644 | + body: email=cris.person%40example.org |
4645 | + headers: |
4646 | + accept-encoding: ['gzip, deflate'] |
4647 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4648 | + content-type: [application/x-www-form-urlencoded] |
4649 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4650 | + method: POST |
4651 | + uri: http://localhost:9001/3.0/users/124469682936455360048380387046363665337/addresses |
4652 | + response: |
4653 | + body: {string: ''} |
4654 | + headers: |
4655 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4656 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4657 | + content-length: ['0'] |
4658 | + location: ['http://localhost:9001/3.0/addresses/cris.person@example.org'] |
4659 | + status: {code: 201, message: Created} |
4660 | +- request: |
4661 | + body: null |
4662 | + headers: |
4663 | + accept-encoding: ['gzip, deflate'] |
4664 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4665 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4666 | + method: GET |
4667 | + uri: http://localhost:9001/3.0/addresses/cris.person@example.org |
4668 | + response: |
4669 | + body: {string: '{"http_etag": "\"c023ccd7bf2c69ff9dafae0e2bdd223a4bc14aef\"", |
4670 | + "self_link": "http://localhost:9001/3.0/addresses/cris.person@example.org", |
4671 | + "user": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
4672 | + "registered_on": "2015-01-04T22:42:50.455755", "email": "cris.person@example.org", |
4673 | + "original_email": "cris.person@example.org"}'} |
4674 | + headers: |
4675 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4676 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4677 | + content-length: ['348'] |
4678 | + content-type: [application/json; charset=utf-8] |
4679 | + status: {code: 200, message: OK} |
4680 | +- request: |
4681 | + body: null |
4682 | + headers: |
4683 | + accept-encoding: ['gzip, deflate'] |
4684 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4685 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4686 | + method: GET |
4687 | + uri: http://localhost:9001/3.0/users/124469682936455360048380387046363665337/addresses |
4688 | + response: |
4689 | + body: {string: '{"entries": [{"http_etag": "\"c023ccd7bf2c69ff9dafae0e2bdd223a4bc14aef\"", |
4690 | + "self_link": "http://localhost:9001/3.0/addresses/cris.person@example.org", |
4691 | + "user": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
4692 | + "registered_on": "2015-01-04T22:42:50.455755", "email": "cris.person@example.org", |
4693 | + "original_email": "cris.person@example.org"}, {"display_name": "Cris", "http_etag": |
4694 | + "\"34ebc29602ad70d31b728755584723a2e02238a5\"", "user": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
4695 | + "self_link": "http://localhost:9001/3.0/addresses/cris@example.com", "registered_on": |
4696 | + "2015-01-04T22:42:46.599496", "email": "cris@example.com", "original_email": |
4697 | + "cris@example.com"}], "http_etag": "\"e309820611085e383deb6897c40d36343c0c2d9c\"", |
4698 | + "total_size": 2, "start": 0}'} |
4699 | + headers: |
4700 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4701 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4702 | + content-length: ['806'] |
4703 | + content-type: [application/json; charset=utf-8] |
4704 | + status: {code: 200, message: OK} |
4705 | +- request: |
4706 | + body: null |
4707 | + headers: |
4708 | + accept-encoding: ['gzip, deflate'] |
4709 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4710 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4711 | + method: GET |
4712 | + uri: http://localhost:9001/3.0/addresses/cris@example.com |
4713 | + response: |
4714 | + body: {string: '{"display_name": "Cris", "http_etag": "\"34ebc29602ad70d31b728755584723a2e02238a5\"", |
4715 | + "user": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
4716 | + "self_link": "http://localhost:9001/3.0/addresses/cris@example.com", "registered_on": |
4717 | + "2015-01-04T22:42:46.599496", "email": "cris@example.com", "original_email": |
4718 | + "cris@example.com"}'} |
4719 | + headers: |
4720 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4721 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4722 | + content-length: ['351'] |
4723 | + content-type: [application/json; charset=utf-8] |
4724 | + status: {code: 200, message: OK} |
4725 | +- request: |
4726 | + body: null |
4727 | + headers: |
4728 | + accept-encoding: ['gzip, deflate'] |
4729 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4730 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4731 | + method: GET |
4732 | + uri: http://localhost:9001/3.0/addresses/cris@example.com |
4733 | + response: |
4734 | + body: {string: '{"display_name": "Cris", "http_etag": "\"34ebc29602ad70d31b728755584723a2e02238a5\"", |
4735 | + "user": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
4736 | + "self_link": "http://localhost:9001/3.0/addresses/cris@example.com", "registered_on": |
4737 | + "2015-01-04T22:42:46.599496", "email": "cris@example.com", "original_email": |
4738 | + "cris@example.com"}'} |
4739 | + headers: |
4740 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4741 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4742 | + content-length: ['351'] |
4743 | + content-type: [application/json; charset=utf-8] |
4744 | + status: {code: 200, message: OK} |
4745 | +- request: |
4746 | + body: null |
4747 | + headers: |
4748 | + accept-encoding: ['gzip, deflate'] |
4749 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4750 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4751 | + method: POST |
4752 | + uri: http://localhost:9001/3.0/addresses/cris@example.com/verify |
4753 | + response: |
4754 | + body: {string: ''} |
4755 | + headers: |
4756 | + Content-Length: ['0'] |
4757 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4758 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4759 | + status: {code: 204, message: No Content} |
4760 | +- request: |
4761 | + body: null |
4762 | + headers: |
4763 | + accept-encoding: ['gzip, deflate'] |
4764 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4765 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4766 | + method: GET |
4767 | + uri: http://localhost:9001/3.0/addresses/cris@example.com |
4768 | + response: |
4769 | + body: {string: '{"display_name": "Cris", "http_etag": "\"dafcd9b979858ed08be56c28e1d30036ecaaad7d\"", |
4770 | + "verified_on": "2015-01-04T22:42:50.623274", "user": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
4771 | + "self_link": "http://localhost:9001/3.0/addresses/cris@example.com", "registered_on": |
4772 | + "2015-01-04T22:42:46.599496", "email": "cris@example.com", "original_email": |
4773 | + "cris@example.com"}'} |
4774 | + headers: |
4775 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4776 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4777 | + content-length: ['396'] |
4778 | + content-type: [application/json; charset=utf-8] |
4779 | + status: {code: 200, message: OK} |
4780 | +- request: |
4781 | + body: null |
4782 | + headers: |
4783 | + accept-encoding: ['gzip, deflate'] |
4784 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4785 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4786 | + method: POST |
4787 | + uri: http://localhost:9001/3.0/addresses/cris@example.com/unverify |
4788 | + response: |
4789 | + body: {string: ''} |
4790 | + headers: |
4791 | + Content-Length: ['0'] |
4792 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4793 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4794 | + status: {code: 204, message: No Content} |
4795 | +- request: |
4796 | + body: null |
4797 | + headers: |
4798 | + accept-encoding: ['gzip, deflate'] |
4799 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4800 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4801 | + method: GET |
4802 | + uri: http://localhost:9001/3.0/addresses/cris@example.com |
4803 | + response: |
4804 | + body: {string: '{"display_name": "Cris", "http_etag": "\"34ebc29602ad70d31b728755584723a2e02238a5\"", |
4805 | + "user": "http://localhost:9001/3.0/users/124469682936455360048380387046363665337", |
4806 | + "self_link": "http://localhost:9001/3.0/addresses/cris@example.com", "registered_on": |
4807 | + "2015-01-04T22:42:46.599496", "email": "cris@example.com", "original_email": |
4808 | + "cris@example.com"}'} |
4809 | + headers: |
4810 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4811 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4812 | + content-length: ['351'] |
4813 | + content-type: [application/json; charset=utf-8] |
4814 | + status: {code: 200, message: OK} |
4815 | +- request: |
4816 | + body: email=ler%40primus.org&password=somepass&display_name=Ler |
4817 | + headers: |
4818 | + accept-encoding: ['gzip, deflate'] |
4819 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4820 | + content-type: [application/x-www-form-urlencoded] |
4821 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4822 | + method: POST |
4823 | + uri: http://localhost:9001/3.0/users |
4824 | + response: |
4825 | + body: {string: ''} |
4826 | + headers: |
4827 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4828 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4829 | + content-length: ['0'] |
4830 | + location: ['http://localhost:9001/3.0/users/336996234976700619952769788325714110792'] |
4831 | + status: {code: 201, message: Created} |
4832 | +- request: |
4833 | + body: null |
4834 | + headers: |
4835 | + accept-encoding: ['gzip, deflate'] |
4836 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4837 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4838 | + method: GET |
4839 | + uri: http://localhost:9001/3.0/users/336996234976700619952769788325714110792 |
4840 | + response: |
4841 | + body: {string: '{"display_name": "Ler", "created_on": "2015-01-04T22:42:50.764436", |
4842 | + "http_etag": "\"ea381267efb7cbd2d379699f091fc7b4d5cda6b4\"", "password": "$6$rounds=109126$U4DnRdYva2uDoAxg$3FLd0ADkfea9rWd33UaE0CWwp8VVRO9HB7BvYabK4OawXBdrV1kwMW4qO9QMHf67in2XM0So/Gc9cnnwMEf9h/", |
4843 | + "self_link": "http://localhost:9001/3.0/users/336996234976700619952769788325714110792", |
4844 | + "user_id": 336996234976700619952769788325714110792}'} |
4845 | + headers: |
4846 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4847 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4848 | + content-length: ['404'] |
4849 | + content-type: [application/json; charset=utf-8] |
4850 | + status: {code: 200, message: OK} |
4851 | +- request: |
4852 | + body: null |
4853 | + headers: |
4854 | + accept-encoding: ['gzip, deflate'] |
4855 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4856 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4857 | + method: GET |
4858 | + uri: http://localhost:9001/3.0/users/ler@primus.org |
4859 | + response: |
4860 | + body: {string: '{"display_name": "Ler", "created_on": "2015-01-04T22:42:50.764436", |
4861 | + "http_etag": "\"ea381267efb7cbd2d379699f091fc7b4d5cda6b4\"", "password": "$6$rounds=109126$U4DnRdYva2uDoAxg$3FLd0ADkfea9rWd33UaE0CWwp8VVRO9HB7BvYabK4OawXBdrV1kwMW4qO9QMHf67in2XM0So/Gc9cnnwMEf9h/", |
4862 | + "self_link": "http://localhost:9001/3.0/users/336996234976700619952769788325714110792", |
4863 | + "user_id": 336996234976700619952769788325714110792}'} |
4864 | + headers: |
4865 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4866 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4867 | + content-length: ['404'] |
4868 | + content-type: [application/json; charset=utf-8] |
4869 | + status: {code: 200, message: OK} |
4870 | +- request: |
4871 | + body: null |
4872 | + headers: |
4873 | + accept-encoding: ['gzip, deflate'] |
4874 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4875 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4876 | + method: GET |
4877 | + uri: http://localhost:9001/3.0/users/336996234976700619952769788325714110792 |
4878 | + response: |
4879 | + body: {string: '{"display_name": "Ler", "created_on": "2015-01-04T22:42:50.764436", |
4880 | + "http_etag": "\"ea381267efb7cbd2d379699f091fc7b4d5cda6b4\"", "password": "$6$rounds=109126$U4DnRdYva2uDoAxg$3FLd0ADkfea9rWd33UaE0CWwp8VVRO9HB7BvYabK4OawXBdrV1kwMW4qO9QMHf67in2XM0So/Gc9cnnwMEf9h/", |
4881 | + "self_link": "http://localhost:9001/3.0/users/336996234976700619952769788325714110792", |
4882 | + "user_id": 336996234976700619952769788325714110792}'} |
4883 | + headers: |
4884 | + Date: ['Sun, 04 Jan 2015 22:42:50 GMT'] |
4885 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4886 | + content-length: ['404'] |
4887 | + content-type: [application/json; charset=utf-8] |
4888 | + status: {code: 200, message: OK} |
4889 | +- request: |
4890 | + body: display_name=Sir+Ler |
4891 | + headers: |
4892 | + accept-encoding: ['gzip, deflate'] |
4893 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4894 | + content-type: [application/x-www-form-urlencoded] |
4895 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4896 | + method: PATCH |
4897 | + uri: http://localhost:9001/3.0/users/336996234976700619952769788325714110792 |
4898 | + response: |
4899 | + body: {string: ''} |
4900 | + headers: |
4901 | + Content-Length: ['0'] |
4902 | + Date: ['Sun, 04 Jan 2015 22:42:51 GMT'] |
4903 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4904 | + status: {code: 204, message: No Content} |
4905 | +- request: |
4906 | + body: null |
4907 | + headers: |
4908 | + accept-encoding: ['gzip, deflate'] |
4909 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4910 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4911 | + method: GET |
4912 | + uri: http://localhost:9001/3.0/users/ler@primus.org |
4913 | + response: |
4914 | + body: {string: '{"display_name": "Sir Ler", "created_on": "2015-01-04T22:42:50.764436", |
4915 | + "http_etag": "\"d0ad1c90a176ce6e55d152de451c3dcdac8a9694\"", "password": "$6$rounds=109126$U4DnRdYva2uDoAxg$3FLd0ADkfea9rWd33UaE0CWwp8VVRO9HB7BvYabK4OawXBdrV1kwMW4qO9QMHf67in2XM0So/Gc9cnnwMEf9h/", |
4916 | + "self_link": "http://localhost:9001/3.0/users/336996234976700619952769788325714110792", |
4917 | + "user_id": 336996234976700619952769788325714110792}'} |
4918 | + headers: |
4919 | + Date: ['Sun, 04 Jan 2015 22:42:51 GMT'] |
4920 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4921 | + content-length: ['408'] |
4922 | + content-type: [application/json; charset=utf-8] |
4923 | + status: {code: 200, message: OK} |
4924 | +- request: |
4925 | + body: null |
4926 | + headers: |
4927 | + accept-encoding: ['gzip, deflate'] |
4928 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4929 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4930 | + method: GET |
4931 | + uri: http://localhost:9001/3.0/users/336996234976700619952769788325714110792 |
4932 | + response: |
4933 | + body: {string: '{"display_name": "Sir Ler", "created_on": "2015-01-04T22:42:50.764436", |
4934 | + "http_etag": "\"d0ad1c90a176ce6e55d152de451c3dcdac8a9694\"", "password": "$6$rounds=109126$U4DnRdYva2uDoAxg$3FLd0ADkfea9rWd33UaE0CWwp8VVRO9HB7BvYabK4OawXBdrV1kwMW4qO9QMHf67in2XM0So/Gc9cnnwMEf9h/", |
4935 | + "self_link": "http://localhost:9001/3.0/users/336996234976700619952769788325714110792", |
4936 | + "user_id": 336996234976700619952769788325714110792}'} |
4937 | + headers: |
4938 | + Date: ['Sun, 04 Jan 2015 22:42:51 GMT'] |
4939 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4940 | + content-length: ['408'] |
4941 | + content-type: [application/json; charset=utf-8] |
4942 | + status: {code: 200, message: OK} |
4943 | +- request: |
4944 | + body: display_name=Sir+Ler&cleartext_password=easy |
4945 | + headers: |
4946 | + accept-encoding: ['gzip, deflate'] |
4947 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4948 | + content-type: [application/x-www-form-urlencoded] |
4949 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4950 | + method: PATCH |
4951 | + uri: http://localhost:9001/3.0/users/336996234976700619952769788325714110792 |
4952 | + response: |
4953 | + body: {string: ''} |
4954 | + headers: |
4955 | + Content-Length: ['0'] |
4956 | + Date: ['Sun, 04 Jan 2015 22:42:51 GMT'] |
4957 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4958 | + status: {code: 204, message: No Content} |
4959 | +- request: |
4960 | + body: null |
4961 | + headers: |
4962 | + accept-encoding: ['gzip, deflate'] |
4963 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4964 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4965 | + method: GET |
4966 | + uri: http://localhost:9001/3.0/users/336996234976700619952769788325714110792 |
4967 | + response: |
4968 | + body: {string: '{"display_name": "Sir Ler", "created_on": "2015-01-04T22:42:50.764436", |
4969 | + "http_etag": "\"c2292e6d206ad3fae45d815699fab665ffd3152d\"", "password": "$6$rounds=93265$Z5DEe17fTAD3CuwU$mpVZgRg5m2mkoOAQutSUIjw1yNNxGhtKtkYV5s1Hc3OwKPyIa5p74yq/LIMcP4S50BfO.E814Fk4qwBwsJQC91", |
4970 | + "self_link": "http://localhost:9001/3.0/users/336996234976700619952769788325714110792", |
4971 | + "user_id": 336996234976700619952769788325714110792}'} |
4972 | + headers: |
4973 | + Date: ['Sun, 04 Jan 2015 22:42:51 GMT'] |
4974 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4975 | + content-length: ['407'] |
4976 | + content-type: [application/json; charset=utf-8] |
4977 | + status: {code: 200, message: OK} |
4978 | +- request: |
4979 | + body: null |
4980 | + headers: |
4981 | + accept-encoding: ['gzip, deflate'] |
4982 | + authorization: [Basic cmVzdGFkbWluOnJlc3RwYXNz] |
4983 | + user-agent: [GNU Mailman REST client v1.0.0b1] |
4984 | + method: GET |
4985 | + uri: http://localhost:9001/3.0/users/bill@example.com |
4986 | + response: |
4987 | + body: {string: '{"display_name": "Bill", "created_on": "2015-01-04T22:42:46.289167", |
4988 | + "http_etag": "\"c084714d661a69fd433bac818a53cd121323d036\"", "password": "$6$rounds=93157$R872gB3lPaWHcG85$0BqbkmSBVfkjIHTeJZGGP0yXHAUVM/ys46Tquswpz5zEMIdV4Ya4AyBz.LMkKdsfKjo0P5dSFInFlOsE6W3Sd/", |
4989 | + "self_link": "http://localhost:9001/3.0/users/282238326831930934086115995946546408713", |
4990 | + "user_id": 282238326831930934086115995946546408713}'} |
4991 | + headers: |
4992 | + Date: ['Sun, 04 Jan 2015 22:42:51 GMT'] |
4993 | + Server: [WSGIServer/0.2 CPython/3.4.2] |
4994 | + content-length: ['404'] |
4995 | + content-type: [application/json; charset=utf-8] |
4996 | + status: {code: 200, message: OK} |
4997 | +- request: |
4998 | + body: null |
4999 | + headers: |
5000 | + accept-encoding: ['gzip, deflate'] |
The diff has been truncated for viewing.
Hi Barry,
thank you very much for this change! I ran the tests like described in TESTING.rst and also did some manual testing with fresh checkouts of the core, client and postorius. Worked like a charm.
I talked to Aurélien today about whether to wait with this merge until we have corresponing tests in Postorius and Hyperkitty. But we agreed that we better merge this branch now and then take care of Postorius and HK.
Flo