def test_create_database_should_returns_500_when_name_is_blank(self): request = RequestFactory().post("/", {"name": ""}) view = CreateDatabase() view._client = mocks.FakeEC2Client() response = view.post(request) self.assertEqual(500, response.status_code) self.assertEqual("Instance name is empty", response.content)
def test_create_database_should_returns_500_when_name_is_missing(self): request = RequestFactory().post("/", {}) view = CreateDatabase() view._client = mocks.FakeEC2Client() response = view.post(request) self.assertEqual(500, response.status_code) self.assertEqual("Instance name is missing", response.content)
def test_create_database_should_returns_500_when_name_is_blank(self): request = RequestFactory().post("/", {"name": ""}) view = CreateDatabase() view._client = mocks.FakeEC2Client() response = view.post(request) self.assertEqual(500, response.status_code) self.assertEqual("App name is empty", response.content)
def test_create_database_should_returns_500_when_name_is_missing(self): request = RequestFactory().post("/", {}) view = CreateDatabase() view._client = mocks.FakeEC2Client() response = view.post(request) self.assertEqual(500, response.status_code) self.assertEqual("App name is missing", response.content)
def test_create_database_should_call_run_from_client(self): try: cli = mocks.FakeEC2Client() request = RequestFactory().post("/", {"name": "bowl", "service_host": "127.0.0.1"}) view = CreateDatabase() view._client = cli response = view.post(request) time.sleep(0.5) self.assertEqual(201, response.status_code) self.assertIn("run instance bowl", cli.actions) finally: self.cursor.execute("DROP DATABASE IF EXISTS bowl")
def test_create_database_should_returns_405_when_method_is_not_post(self): request = RequestFactory().get("/") view = CreateDatabase() response = view.dispatch(request) self.assertEqual(405, response.status_code) request = RequestFactory().put("/") response = view.dispatch(request) self.assertEqual(405, response.status_code) request = RequestFactory().delete("/") response = view.dispatch(request) self.assertEqual(405, response.status_code)
def test_create_database_should_authorize_access_to_the_instance(self): try: cli = mocks.FakeEC2Client() t = start_creator(DatabaseManager, cli) data = {"name": "entre_nous", "service_host": "127.0.0.1"} request = RequestFactory().post("/", data) view = CreateDatabase() view._client = cli response = view.post(request) t.stop() self.assertEqual(201, response.status_code) self.assertIn("authorize instance entre_nous", cli.actions) finally: self.cursor.execute("DROP DATABASE IF EXISTS entre_nous")
def test_create_database_should_call_run_from_client(self): try: cli = mocks.FakeEC2Client() t = start_creator(DatabaseManager, cli) data = {"name": "bowl", "service_host": "127.0.0.1"} request = RequestFactory().post("/", data) view = CreateDatabase() view._client = cli response = view.post(request) t.stop() self.assertEqual(201, response.status_code) self.assertIn("run instance bowl", cli.actions) finally: self.cursor.execute("DROP DATABASE IF EXISTS bowl")
def test_create_database(self): try: request = RequestFactory().post("/", {"name": "ciclops"}) view = CreateDatabase() view._client = mocks.FakeEC2Client() response = view.post(request) self.assertEqual(201, response.status_code) self.assertEqual("ok", response.content) time.sleep(0.5) self.cursor.execute("select SCHEMA_NAME from information_schema.SCHEMATA where SCHEMA_NAME = 'ciclops'") row = self.cursor.fetchone() self.assertEqual("ciclops", row[0]) finally: db = DatabaseManager("ciclops") db.drop_database()
def test_create_database_ec2(self): try: client = mocks.FakeEC2Client() t = start_creator(DatabaseManager, client) request = RequestFactory().post("/", {"name": "ciclops"}) view = CreateDatabase() view._client = client response = view.post(request) self.assertEqual(201, response.status_code) self.assertEqual("", response.content) t.stop() sql = "select SCHEMA_NAME from information_schema.SCHEMATA " + \ "where SCHEMA_NAME = 'ciclops'" self.cursor.execute(sql) row = self.cursor.fetchone() self.assertEqual("ciclops", row[0]) finally: db = DatabaseManager("ciclops") db.drop_database()
def test_create_database_canonicalizes_the_name_of_the_database(self): settings.SHARED_SERVER = "127.0.0.1" request = RequestFactory().post("/", {"name": "foo-bar"}) response = CreateDatabase().post(request) instances_filter = Instance.objects.filter( name=canonicalize_db_name("foo-bar")) exists = instances_filter.exists() sql = "DROP DATABASE IF EXISTS {0}" self.cursor.execute(sql.format(canonicalize_db_name("foo-bar"))) instances_filter[0].delete() self.assertEqual(201, response.status_code) self.assertTrue(exists)
def test_create_database_should_returns_405_when_method_is_not_post(self): request = RequestFactory().get("/") view = CreateDatabase.as_view() response = view(request) self.assertEqual(405, response.status_code) request = RequestFactory().put("/") response = view(request) self.assertEqual(405, response.status_code) request = RequestFactory().delete("/") response = view(request) self.assertEqual(405, response.status_code)
# Copyright 2013 mysqlapi authors. All rights reserved. # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file. from django.conf.urls import patterns, url from mysqlapi.api.views import (CreateUserOrDropDatabase, CreateDatabase, Healthcheck) urlpatterns = patterns('', url(r'^resources$', CreateDatabase.as_view()), # post url(r'^resources/(?P<name>[\w-]+)$', CreateUserOrDropDatabase.as_view()), url(r'^resources/(?P<name>[\w-]+)/export$', 'mysqlapi.api.views.export'), # get url(r'^resources/(?P<name>[\w-]+)/status$', Healthcheck.as_view()), # get url(r'^resources/(?P<name>[\w-]+)/hostname/' + '(?P<hostname>[\w.]+)$', 'mysqlapi.api.views.drop_user'), )
# Copyright 2014 mysqlapi authors. All rights reserved. # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file. from django.conf.urls import patterns, url from mysqlapi.api.decorators import basic_auth_required from mysqlapi.api.views import (BindApp, BindUnit, CreateDatabase, DropDatabase, Healthcheck) urlpatterns = patterns('', url(r'^resources$', basic_auth_required(CreateDatabase.as_view())), url(r'^resources/(?P<name>[\w-]+)$', basic_auth_required(DropDatabase.as_view())), url(r'^resources/(?P<name>[\w-]+)/bind$', basic_auth_required(BindUnit.as_view())), url(r'^resources/(?P<name>[\w-]+)/bind-app$', basic_auth_required(BindApp.as_view())), url(r'^resources/(?P<name>[\w-]+)/export$', 'mysqlapi.api.views.export'), url(r'^resources/(?P<name>[\w-]+)/status$', basic_auth_required(Healthcheck.as_view())), )
# Copyright 2014 mysqlapi authors. All rights reserved. # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file. from django.conf.urls import patterns, url from mysqlapi.api.decorators import basic_auth_required from mysqlapi.api.views import (BindApp, BindUnit, CreateDatabase, DropDatabase, Healthcheck) urlpatterns = patterns( '', url(r'^resources$', basic_auth_required(CreateDatabase.as_view())), url(r'^resources/(?P<name>[\w-]+)$', basic_auth_required(DropDatabase.as_view())), url(r'^resources/(?P<name>[\w-]+)/bind$', basic_auth_required(BindUnit.as_view())), url(r'^resources/(?P<name>[\w-]+)/bind-app$', basic_auth_required(BindApp.as_view())), url(r'^resources/(?P<name>[\w-]+)/export$', 'mysqlapi.api.views.export'), url(r'^resources/(?P<name>[\w-]+)/status$', basic_auth_required(Healthcheck.as_view())), )