コード例 #1
0
 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')})
コード例 #2
0
 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')})
コード例 #3
0
 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')})
コード例 #4
0
 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')})
コード例 #5
0
    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")
コード例 #6
0
    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")
コード例 #7
0
    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"})
コード例 #8
0
    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
コード例 #9
0
ファイル: test_app_detail_view.py プロジェクト: hfeeki/abyss
 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)
コード例 #10
0
    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
コード例 #11
0
    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'})
コード例 #12
0
    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'})
コード例 #13
0
 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
コード例 #14
0
ファイル: test_app_detail_view.py プロジェクト: hfeeki/abyss
 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"])
コード例 #15
0
    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)
コード例 #16
0
    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)
コード例 #17
0
 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")
コード例 #18
0
ファイル: urls.py プロジェクト: hfeeki/abyss
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()
コード例 #19
0
    def test_process_list_without_units(self):
        app = {}
        process_list = AppDetail().process_list(app)

        expected = set()
        self.assertEqual(expected, process_list)
コード例 #20
0
ファイル: urls.py プロジェクト: approom/approom
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'),
)