diff options
Diffstat (limited to 'src/mango/test/mango.py')
-rw-r--r-- | src/mango/test/mango.py | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/src/mango/test/mango.py b/src/mango/test/mango.py index a275a23d0..ed4cafbe5 100644 --- a/src/mango/test/mango.py +++ b/src/mango/test/mango.py @@ -27,28 +27,46 @@ def random_db_name(): return "mango_test_" + uuid.uuid4().hex def has_text_service(): - return os.path.isfile(os.getcwd() + "/../src/mango_cursor_text.erl") + return os.environ.get('MANGO_TEXT_INDEXES') == '1' + +def get_from_environment(key, default): + value = os.environ.get(key) + return value if value is not None else default class Database(object): - def __init__(self, host, port, dbname, auth=None): - self.host = host - self.port = port + def __init__(self, dbname, + host="127.0.0.1", port="15984", + user='testuser', password='testpass'): + root_url = get_from_environment('COUCH_HOST', "http://{}:{}".format(host, port)) + auth_header = get_from_environment('COUCH_AUTH_HEADER', None) + user = get_from_environment('COUCH_USER', user) + password = get_from_environment('COUCH_PASSWORD', password) + + self.root_url = root_url self.dbname = dbname self.sess = requests.session() - self.sess.auth = ('testuser', 'testpass') + + # allow explicit auth header to be set to enable testing + # against deployments where basic auth isn't available + if auth_header is not None: + self.sess.headers["Authorization"] = auth_header + else: + self.sess.auth = (user, password) + self.sess.headers["Content-Type"] = "application/json" + @property def url(self): - return "http://{}:{}/{}".format(self.host, self.port, self.dbname) + return "{}/{}".format(self.root_url, self.dbname) def path(self, parts): if isinstance(parts, ("".__class__, u"".__class__)): parts = [parts] return "/".join([self.url] + parts) - def create(self, q=1, n=3): + def create(self, q=1, n=1): r = self.sess.get(self.url) if r.status_code == 404: r = self.sess.put(self.url, params={"q":q, "n": n}) @@ -206,7 +224,7 @@ class UsersDbTests(unittest.TestCase): @classmethod def setUpClass(klass): - klass.db = Database("127.0.0.1", "15984", "_users") + klass.db = Database("_users") user_docs.setup_users(klass.db) def setUp(self): @@ -217,7 +235,7 @@ class DbPerClass(unittest.TestCase): @classmethod def setUpClass(klass): - klass.db = Database("127.0.0.1", "15984", random_db_name()) + klass.db = Database(random_db_name()) klass.db.create(q=1, n=3) def setUp(self): |