| Commit message (Collapse) | Author | Age | Files | Lines |
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
both encrypted according to a scheme, and a bytes object.
add_member(): Use encrypt_password().
cli_members: Give the user a default, user-friendly password. Of course, this
will be encrypted so it can't be retrieved, but it can be reset.
Passwords are stored as bytes objects, not unicode now.
ConfigLayer: Set the default test password scheme to cleartext.
General test repair.
|
| | | |
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add a 'uid factory' which allows us to return predictable unique ids for
various testing purposes, e.g. user ids. This should work even in the case
of cross-subprocess uid generation.
* REST access to individual users, or the set of all users.
* User objects now have a created_on attribute.
* Users can be created through the web, but must have an email address.
* Add a [devmode] 'testing' variable for communicating to qrunner subprocesses
that we're running in testing mode. This allows us to coordinate factories
and such in the qrunner processes.
* layers.is_testing() for more consistent API.
* Give AddressError a .address attribute for better diagnostics.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
initialization. buildout.cfg is now really simple; it calls one method.
That method does all the relevant layer initializations. This better
localizes what has to be set up before testing can even begin.
* IUsers now have a created_on property which contains the datetime at which
the user record was created.
* Rework the date and uid factories so that they consult the
MockAndMonkeyLayer for the current testing flag. Also, those factories
register themselves with the layer so that they'll get automatically reset
between tests, without the layer actually having to know about them.
* Move the User model object initialization into User.__init__() from the user
manager. The User now also adds itself to the store.
* Add a 'uid factory' for unique id creation, which is test suite aware.
|
| |
|
|
|
|
|
|
| |
was already linked to a user. Found by Florian Fuchs who also provided the
fix, though I implemented the test differently. LP: #710182
Also, refactor the "reset the world" functionality ConfigLayer.testTearDown()
so that it could be used by other test code.
|
| |
|
|
|
| |
Added smtp_user and smtp_pass options to the [mta] section to support logging
into the SMTP server. All the underlying support is in Python's smtplib.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* member-moderation happens at the same place in the built-in chain that the
previously named moderation rule happens. nonmember-moderation happens
after all the other normal moderation rules.
* Handle unsubscribed nonmember posts.
Other changes:
* Message.senders now filters out Nones and empty strings.
* Various test cleanups and simplifications.
* More `address` -> `email` fixes.
* Give Link class a useful repr.
* Fix a potential UnboundLocalError.
* Various other small changes.
|
| | |
|
| |
|
|
|
|
| |
ports are still hard coded.
Also, 'bin/mailman info' dumps the REST root url and credentials.
|
| |\
| |
| |
| | |
corrections by Barry.
|
| | |
| |
| |
| | |
regarding the basic auth for the REST server.
|
| |/
|
|
|
| |
due to _() interpolation) and a few other problems that did not have
immediately obvious fixes.
|
| |
|
|
| |
approach to finding the bin directory. Thanks go to Gary Poster.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
zope.testrunner. Actually, divorce it from the latter and handle the
sys.argv sequence ourselves.
* Added IMailingList.get_roster() which returns the named roster (from a
MemberRole enum).
* The start of an IMailingList doctest. This needs much more detail.
* Move the subscribe() function from membership.txt into the
mailman.testing.helpers.
* Added new REST interface for getting all the members of a roster for a
specific mailing list: .../lists/<list>/roster/<role>. Note that <role> is
the plural form of the MemberRole enum.
|
| | |
|
| |
|
|
| |
* Move DigestFrequency from mailinglist to digests.
|
| |
|
|
| |
Clean up the chains.txt doctest to use this and other recent improvements.
|
| |
|
|
|
|
|
|
| |
support the Filesystem Hierarchy Standard. This is done through the
configuration file.
* add a --paths/-p option to 'bin/mailman info'
* PIDFILE -> PID_FILE
|
| | |
|
| |
|
|
| |
files.
|
| |
|
|
|
|
|
|
| |
* Give IMailingList a .domain attribute which looks up the IDomain for its
.host_name. This cleans up a lot of code.
* Add a test for the 'confirm' email command.
* Suppress blank lines in email command responses.
* Make the IDomainCollection a utility.
|
| |
|
|
| |
attribute. Add this for UserNotifications.
|
| | |
|
| |
|
|
|
| |
The tests do require a partial French translation for digester.txt, so just
include the bare minimum, already msgfmt'd in the mailman.testing package.
|
| |
|
|
| |
package.
|
| | |
|
| |
|
|
| |
between temporary and permanent failures. That will happen at a higher level.
|
| |
|
|
|
|
|
|
|
| |
SMTP.sendmail().
Handle SMTPRecipientsRefused just like smtp_direct.py.
Hack the test mail server to be able to generate failures. SMTP responses
must be bytes (don't forget we're using unicode literals).
|
| |
|
|
| |
Add IMailTransportAgentDelivery and begin to flesh out the doctest.
|
| |
|
|
| |
of sessions per connection (or at least 10 <wink>).
|
| | |
|
| |
|
|
| |
of session start and end events in the server.
|
| |
|
|
|
| |
Update the lazr.restful IWebServiceConfiguration implementation to include the
new hop_by_hop_headers attribute, by way of BaseWSGIWebServiceConfiguration.
|
| |
|
|
|
| |
never killed with a signal. In the real-world, it is though. So put the
.pause() in a method that can be overridden by TestableMaster.
|
| |
|
|
| |
utility.
|
| |
|
|
|
|
|
|
| |
Add an IDomainManager and a global domain manager which can be gotten by
adapting the global config object.
Add an IDomainCollection interface for exposing the domain manager onto the
API.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add get_mailing_lists() which is used just for the web interface. Because of
a bug in lazr.restful, this cannot be a generator.
Similar change in IDomainSet.
Instrument IListManager to be vended through the api.
The REST server must be run in a separate process since SQLite does not like
objects created in one thread to be used in another thread. Note that this
breaks the domain.txt test, but domains really need to be in the database
anyway.
|
| |
|
|
| |
Fix system absolute url.
|
| |
|
|
| |
given, then SMTPLayer is used by default.
|
| |
|
|
|
|
|
|
|
|
|
| |
Add logging to the RESTRunner.
Also, use pkg_resources.resource_stream() instead of .resource_string() where
appropriate.
Add a bunch of XXX comments for things I need to figure out about the Zope-ish
parts of the lazr.restful implementation. Change __getitem__() api to
_lookup().
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
predictable dates and times.
Fill out the autorespond.txt test to show that when the date flips over, the
response counts reset.
Add a date/time factory which we should use rather than the built-in datetime
for now() and today() so that they can be appropriately tested.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This moves actual digest creation and sending into a new queue runner. That
way, digest creation does not block the main incoming processor. Lots of code
clean up and reorganization too, and many fixes.
digest_last_sent_at: Make this a DateTime
digest_size_threshold: Make this a Float
digest_volume_frequency: Make this an Enum
DigestFrequency: new enum
Fix up IMailingList interface to reflect reality.
In Runner base class, allow for msg.get_sender() to return a False value. If
this happens (as it can with the empty marker messages used to signal the
digester that there's work to do), just use the list's preferred language.
Give the retry.py and incoming.py queue runner modules some proper epilogues.
The EmptyingRunner (for testing) logs itself as the runner its wrapping.
The digest file name now ends in .mmdf since that's the format we're using.
Add 'create_list' to doctest globals.
Add a Mailbox class to add support for the context manager protocol.
|
|
|
correctly regardless of how it's used.
|