def test_service_list(self, get): AppDetail.service_list = self.old_service_list app_detail = AppDetail() app_detail.request = self.request app_detail.service_list() get.assert_called_with( '{0}/services/instances'.format(settings.TSURU_HOST), headers={'authorization': self.request.session.get('tsuru_token')})
def test_service_instances(self, get): get.return_value = Mock(status_code=200) AppDetail.service_instances = self.old_service_instances app_detail = AppDetail() app_detail.request = self.request app_detail.service_instances("appname") get.assert_called_with( '{0}/services/instances?app=appname'.format(settings.TSURU_HOST), headers={'authorization': self.request.session.get('tsuru_token')})
def test_service_info(self, get): AppDetail.service_info = self.old_service_info app_detail = AppDetail() app_detail.request = self.request instance_name = "shubiduba" app_detail.service_info(instance_name) get.assert_called_with( '{0}/services/instances/{1}'.format(settings.TSURU_HOST, instance_name), headers={'authorization': self.request.session.get('tsuru_token')})
def test_not_found(self, token_is_valid, requests_mock): token_is_valid.return_value = True request = RequestFactory().get("/") request.session = {"tsuru_token": "admin"} requests_mock.return_value = Mock(status_code=404) service_instances_mock = Mock() service_instances_mock.return_value = [{"service": "mongodb", "instances": ["mymongo"]}] AppDetail.service_instances = service_instances_mock with self.assertRaises(Http404): AppDetail.as_view()(request, app_name="app1")
def test_not_found(self, token_is_valid, requests_mock): token_is_valid.return_value = True request = RequestFactory().get("/") request.session = {"tsuru_token": "admin"} requests_mock.return_value = Mock(status_code=404) service_instances_mock = Mock() service_instances_mock.return_value = [{ "service": "mongodb", "instances": ["mymongo"] }] AppDetail.service_instances = service_instances_mock with self.assertRaises(Http404): AppDetail.as_view()(request, app_name="app1")
def test_get_containers(self, get): expected = [] response_mock = Mock(status_code=200) response_mock.json.return_value = expected get.return_value = response_mock request = RequestFactory().get("/") request.session = {"is_admin": True, "tsuru_token": "admin"} app_detail = AppDetail() app_detail.request = request envs = app_detail.get_containers("appname") self.assertListEqual(envs, expected) url = "{}/docker/node/apps/appname/containers".format(settings.TSURU_HOST) get.assert_called_with(url, headers={"authorization": "admin"})
def setUp(self, requests_mock): request = RequestFactory().get("/") request.session = {"tsuru_token": "admin"} self.expected = { "name": "app1", "framework": "php", "repository": "[email protected]:php.git", "state": "dead", "units": [{ "Ip": "10.10.10.10" }, { "Ip": "9.9.9.9" }], "teams": ["tsuruteam", "crane"] } json_mock = Mock() json_mock.json.return_value = self.expected requests_mock.return_value = json_mock service_instances_mock = Mock() service_instances_mock.return_value = [{ "service": "mongodb", "instances": ["mymongo"] }] self.old_service_instances = AppDetail.service_instances AppDetail.service_instances = service_instances_mock self.response = AppDetail.as_view()(request, app_name="app1") self.request = request
def test_should_use_detail_template(self): request = RequestFactory().get("/") request.session = {"tsuru_token":"admin"} with mock.patch("requests.get") as get: get.return_value = mock.Mock(status_code=200, json={}) response = AppDetail.as_view()(request, app_name="app1") self.assertEqual("apps/details.html", response.template_name)
def setUp(self, requests_mock): request = RequestFactory().get("/") request.session = {"tsuru_token": "admin"} self.expected = { "name": "app1", "framework": "php", "repository": "[email protected]:php.git", "state": "dead", "units": [ {"Ip": "10.10.10.10", "Status": "started", "ProcessName": "web"}, {"Ip": "9.9.9.9", "Status": "stopped", "ProcessName": "worker"}, ], "teams": ["tsuruteam", "crane"] } json_mock = Mock(status_code=200) json_mock.json.return_value = self.expected requests_mock.return_value = json_mock service_instances_mock = Mock() service_instances_mock.return_value = [{"service": "mongodb", "instances": ["mymongo"]}] self.old_service_instances = AppDetail.service_instances AppDetail.service_instances = service_instances_mock self.response = AppDetail.as_view()(request, app_name="app1") self.request = request
def test_get_containers(self, get): expected = [] response_mock = Mock(status_code=200) response_mock.json.return_value = expected get.return_value = response_mock request = RequestFactory().get("/") request.session = {"is_admin": True, "tsuru_token": "admin"} app_detail = AppDetail() app_detail.request = request envs = app_detail.get_containers("appname") self.assertListEqual(envs, expected) url = '{}/docker/node/apps/appname/containers'.format( settings.TSURU_HOST) get.assert_called_with(url, headers={'authorization': 'admin'})
def test_get_envs(self, get): expected = [{ "name": "DATABASE_HOST", "value": "localhost", "public": True }] response_mock = Mock() response_mock.json.return_value = expected get.return_value = response_mock request = RequestFactory().get("/") request.session = {"tsuru_token": "admin"} app_detail = AppDetail() app_detail.request = request envs = app_detail.get_envs("appname") self.assertListEqual(envs, expected) url = '{}/apps/appname/env'.format(settings.TSURU_HOST) get.assert_called_with(url, headers={'authorization': 'admin'})
def setUp(self, get, requests_mock): request = RequestFactory().get("/") request.session = {"tsuru_token": "admin"} self.expected = { "name": "app1", "framework": "php", "repository": "[email protected]:php.git", "state": "dead", "units": [ {"Ip": "10.10.10.10"}, {"Ip": "9.9.9.9"} ], "teams": ["tsuruteam", "crane"] } schema = Schema( "", type="object", properties={ "units": { "type": "array", "items": {}, }, "teams": { "type": "array", "items": {}, } } ) resource = Resource( url="url.com", data=self.expected, schema=schema ) get.return_value = resource json_mock = mock.Mock() json_mock.json.return_value = self.expected requests_mock.return_value = json_mock service_list_mock = mock.Mock() service_list_mock.return_value = [{"service": "mongodb", "instances": ["mymongo"]}] service_info_mock = mock.Mock() service_info_mock.return_value = {"Name": "mymongo", "ServiceName": "mongodb", "Apps": ["app1"]} self.old_service_list = AppDetail.service_list AppDetail.service_list = service_list_mock self.old_service_info = AppDetail.service_info AppDetail.service_info = service_info_mock self.response = AppDetail.as_view()(request, app_name="app1") self.request = request
def test_should_get_the_app_info_from_tsuru(self): request = RequestFactory().get("/") request.session = {"tsuru_token":"admin"} expected = { "Name": "app1", "Framework": "php", "Repository": "[email protected]:php.git", "State": "dead", "Units": [ {"Ip": "10.10.10.10"}, {"Ip": "9.9.9.9"} ], "Teams": ["tsuruteam", "crane"] } with mock.patch("requests.get") as get: get.return_value = mock.Mock(status_code=200, json=expected) response = AppDetail.as_view()(request, app_name="app1") self.assertDictEqual(expected, response.context_data["app"])
def test_process_list_units_without_process_name(self): app = { "units": [ { "ip": "0.0.0.0" }, { "ip": "0.0.0.1" }, { "ip": "0.0.0.2" }, { "ip": "0.0.0.3" }, ], } process_list = AppDetail().process_list(app) expected = set() self.assertEqual(expected, process_list)
def test_process_list(self): app = { "units": [ { "ProcessName": "web" }, { "ProcessName": "web" }, { "ProcessName": "web" }, { "ProcessName": "worker" }, ], } process_list = AppDetail().process_list(app) expected = set(["web", "worker"]) self.assertEqual(expected, process_list)
def setUp(self, get): request = RequestFactory().get("/") request.session = {"tsuru_token": "admin"} self.expected = { "name": "app1", "framework": "php", "repository": "[email protected]:php.git", "state": "dead", "units": [ {"Ip": "10.10.10.10"}, {"Ip": "9.9.9.9"} ], "teams": ["tsuruteam", "crane"] } schema = Schema( "", type="object", properties={ "units": { "type": "array", "items": {}, }, "teams": { "type": "array", "items": {}, } } ) resource = Resource( url="url.com", data=self.expected, schema=schema ) get.return_value = resource self.response = AppDetail.as_view()(request, app_name="app1")
class TextPlainView(TemplateView): def render_to_response(self, context, **kwargs): return super(TextPlainView, self).render_to_response( context, content_type='text/plain', **kwargs) urlpatterns = patterns('', url(r'^robots\.txt$', TextPlainView.as_view(template_name='robots.txt')), url(r'^favicon\.ico$', RedirectView.as_view(url='/static/img/favicon.ico')), url(r'^$', Login.as_view(), name='login'), url(r'^login$', Login.as_view(), name='login'), url(r'^logout$', Logout.as_view(), name='logout'), url(r'^team/$', Team.as_view(), name='team'), url(r'^key/$', Key.as_view(), name='token'), url(r'^signup$', Signup.as_view(), name='signup'), url(r'^apps/$', ListApp.as_view(), name='list-app'), url(r'^apps/create/$', CreateApp.as_view(), name='create-app'), url(r'^app/run/$', Run.as_view(), name='run'), url(r'^app/(?P<app_name>[\w-]+)/$', AppDetail.as_view(), name='detail-app'), url(r'^app/(?P<name>[\w-]+)/remove/$', RemoveApp.as_view(), name='remove_app'), url(r'^app/(?P<app_name>[\w-]+)/log/$', AppLog.as_view(), name='app_log'), url(r'^app/(?P<app_name>[\w-]+)/env/$', AppEnv.as_view(), name='get-env'), url(r'^app/(?P<app_name>[\w-]+)/teams/$', AppTeams.as_view(), name='app-teams'), url(r'^app/(?P<app_name>[\w-]+)/team/add/$', AppAddTeam.as_view(), name='app-add-team'), url(r'^envs/$', "auth.views.env_vars", name='envs'), ) urlpatterns += staticfiles_urlpatterns()
def test_process_list_without_units(self): app = {} process_list = AppDetail().process_list(app) expected = set() self.assertEqual(expected, process_list)
from django.conf.urls import patterns, include, url from django.contrib.auth.decorators import login_required from apps.views import AppList, AppDetail urlpatterns = patterns('', url(r'^$', AppList.as_view(), name='applist'), url(r'^(?P<slug>[-\w]+)/$', AppDetail.as_view(), name='app'), )