Example #1
0
    def test_delete(self):
        """test_delete

        CouchDBBackend.delete should return and take two params
        db conn to pycouchdb is mocked.
        TODO Should test on key not exists

        """
        self.app.conf.CELERY_COUCHDB_BACKEND_SETTINGS = {}
        x = CouchDBBackend(app=self.app)
        x._connection = Mock()
        mocked_delete = x._connection.delete = Mock()
        mocked_delete.return_value = None
        # should return None
        self.assertIsNone(x.delete("1f3fab"))
        x._connection.delete.assert_called_once_with("1f3fab")
Example #2
0
    def test_get(self):
        """test_get

        CouchDBBackend.get should return  and take two params
        db conn to couchdb is mocked.
        TODO Should test on key not exists

        """
        self.app.conf.CELERY_COUCHDB_BACKEND_SETTINGS = {}
        x = CouchDBBackend(app=self.app)
        x._connection = Mock()
        mocked_get = x._connection.get = Mock()
        mocked_get.return_value = sentinel.retval
        # should return None
        self.assertEqual(x.get("1f3fab"), sentinel.retval)
        x._connection.get.assert_called_once_with("1f3fab")
Example #3
0
 def setup(self):
     if pycouchdb is None:
         raise SkipTest("pycouchdb is not installed.")
     self.backend = CouchDBBackend(app=self.app)
Example #4
0
class test_CouchDBBackend(AppCase):
    def setup(self):
        if pycouchdb is None:
            raise SkipTest("pycouchdb is not installed.")
        self.backend = CouchDBBackend(app=self.app)

    def test_init_no_pycouchdb(self):
        """test init no pycouchdb raises"""
        prev, module.pycouchdb = module.pycouchdb, None
        try:
            with self.assertRaises(ImproperlyConfigured):
                CouchDBBackend(app=self.app)
        finally:
            module.pycouchdb = prev

    def test_init_no_settings(self):
        """test init no settings"""
        self.app.conf.CELERY_COUCHDB_BACKEND_SETTINGS = []
        with self.assertRaises(ImproperlyConfigured):
            CouchDBBackend(app=self.app)

    def test_init_settings_is_None(self):
        """Test init settings is None"""
        self.app.conf.CELERY_COUCHDB_BACKEND_SETTINGS = None
        CouchDBBackend(app=self.app)

    def test_get_container_exists(self):
        with patch("pycouchdb.client.Database") as mock_Connection:
            self.backend._connection = sentinel._connection

            connection = self.backend._get_connection()

            self.assertEqual(sentinel._connection, connection)
            self.assertFalse(mock_Connection.called)

    def test_get(self):
        """test_get

        CouchDBBackend.get should return  and take two params
        db conn to couchdb is mocked.
        TODO Should test on key not exists

        """
        self.app.conf.CELERY_COUCHDB_BACKEND_SETTINGS = {}
        x = CouchDBBackend(app=self.app)
        x._connection = Mock()
        mocked_get = x._connection.get = Mock()
        mocked_get.return_value = sentinel.retval
        # should return None
        self.assertEqual(x.get("1f3fab"), sentinel.retval)
        x._connection.get.assert_called_once_with("1f3fab")

    def test_delete(self):
        """test_delete

        CouchDBBackend.delete should return and take two params
        db conn to pycouchdb is mocked.
        TODO Should test on key not exists

        """
        self.app.conf.CELERY_COUCHDB_BACKEND_SETTINGS = {}
        x = CouchDBBackend(app=self.app)
        x._connection = Mock()
        mocked_delete = x._connection.delete = Mock()
        mocked_delete.return_value = None
        # should return None
        self.assertIsNone(x.delete("1f3fab"))
        x._connection.delete.assert_called_once_with("1f3fab")

    def test_config_params(self):
        """test_config_params

        celery.conf.CELERY_COUCHDB_BACKEND_SETTINGS is properly set
        """
        self.app.conf.CELERY_COUCHDB_BACKEND_SETTINGS = {
            "container": "mycoolcontainer",
            "host": ["here.host.com", "there.host.com"],
            "username": "******",
            "password": "******",
            "port": "1234",
        }
        x = CouchDBBackend(app=self.app)
        self.assertEqual(x.container, "mycoolcontainer")
        self.assertEqual(x.host, ["here.host.com", "there.host.com"])
        self.assertEqual(x.username, "johndoe")
        self.assertEqual(x.password, "mysecret")
        self.assertEqual(x.port, 1234)

    def test_backend_by_url(self, url="couchdb://myhost/mycoolcontainer"):
        from celery.backends.couchdb import CouchDBBackend

        backend, url_ = backends.get_backend_by_url(url, self.app.loader)
        self.assertIs(backend, CouchDBBackend)
        self.assertEqual(url_, url)

    def test_backend_params_by_url(self):
        url = "couchdb://*****:*****@myhost:123/mycoolcontainer"
        with self.Celery(backend=url) as app:
            x = app.backend
            self.assertEqual(x.container, "mycoolcontainer")
            self.assertEqual(x.host, "myhost")
            self.assertEqual(x.username, "johndoe")
            self.assertEqual(x.password, "mysecret")
            self.assertEqual(x.port, 123)