Some unit tests need a user in the database, especially to
act as that user. Some routines did that on their own. So
factored this whole thing into a new function and use it
around.
Created a BaseMeddleware which all Meddleware should derive
from. This is not strictly needed, but will greatly help.
The base class has the common __init__ of all the other
Meddlwares and fall backs for all hooks. That way a new
Meddlware only needs to override what it actually wants to
implement.
All references to static, shipped content should go via
request.staticdirect().
So insert a TestingMiddleware in the chain, which tests for
this on all requests/reponses happening in the test suite.
It's a simple text search for a bogus usage pattern.
Lots of fixes to do this.
- setup_celery_from_config no longer responsible for checking
'celery_setup_elsewhere'; that's the app's job. (This was a problem
because more than the app was relying on using this function)
- Allow us to specifically set the config file we're setting up
celery from with setup_self
- Set up celery_always_eager. This is something we strongly want
while doing tests.
- Instead of setting up the app in the get_test_app method, let's set
that up simply by importing from_tests, which should itself up via
from_celery being the environment variable being set.
Lots of changes:
- CELERY_CONFIG_FILE does not need to be set to the from_tests module
to run tests anymore, in fact it *should not be set at all* and is
specifically forbidden.
- moved around the configuration to the new 2-file format
- and generally adjusting the code appropriately.
of the paste config file the way paste would than to load components
of it ourselves.
Aside from this being nicer, it's also necessary for the sake of
getting the middleware working nicely. We could do it ourselves, but
why bother when paste can just do it for us?