Files @ 955bbbc29655
Branch filter:

Location: kallithea/kallithea/tests/functional/test_summary.py - annotation

Christian Oyarzun
ssh: maintain authorized_keys file automatically

Based on work by Ilya Beda <ir4y.ix@gmail.com> on
https://bitbucket.org/ir4y/rhodecode/commits/branch/ssh_server_support , also
heavily modified by Mads Kiilerich.
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
8d98924c58b1
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
7f2aa3ec2931
d1addaf7a91e
97ec8cf362c3
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
7691290837d2
d1addaf7a91e
97ea346aa4bd
d1addaf7a91e
7691290837d2
d1addaf7a91e
961ef96fcc65
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
97ec8cf362c3
97ec8cf362c3
97ec8cf362c3
97ec8cf362c3
97ec8cf362c3
97ec8cf362c3
97ec8cf362c3
97ec8cf362c3
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
7691290837d2
d1addaf7a91e
97ea346aa4bd
d1addaf7a91e
7691290837d2
d1addaf7a91e
961ef96fcc65
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
97ec8cf362c3
97ec8cf362c3
97ec8cf362c3
97ec8cf362c3
97ec8cf362c3
97ec8cf362c3
97ec8cf362c3
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
7691290837d2
d1addaf7a91e
97ea346aa4bd
d1addaf7a91e
7691290837d2
d1addaf7a91e
961ef96fcc65
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
bd4840ad72d3
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
bd4840ad72d3
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
7691290837d2
d1addaf7a91e
97ea346aa4bd
d1addaf7a91e
7691290837d2
d1addaf7a91e
961ef96fcc65
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
7691290837d2
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
2cc8d876d1c8
2cc8d876d1c8
2cc8d876d1c8
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
33b71a130b16
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
7691290837d2
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
7691290837d2
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
2cc8d876d1c8
2cc8d876d1c8
2cc8d876d1c8
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
33b71a130b16
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
7691290837d2
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
# -*- coding: utf-8 -*-
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

from kallithea.tests.base import *
from kallithea.tests.fixture import Fixture
from kallithea.model.db import Repository
from kallithea.model.repo import RepoModel
from kallithea.model.meta import Session
from kallithea.model.scm import ScmModel

fixture = Fixture()


class TestSummaryController(TestController):

    def test_index_hg(self):
        self.log_user()
        ID = Repository.get_by_repo_name(HG_REPO).repo_id
        response = self.app.get(url(controller='summary',
                                    action='index',
                                    repo_name=HG_REPO))

        # repo type
        response.mustcontain(
            """<span class="label label-repo" title="Mercurial repository">hg"""
        )
        # public/private
        response.mustcontain(
            """<i class="icon-globe">"""
        )

        # clone url...
        response.mustcontain(
            '''<input class="form-control" size="80" readonly="readonly" value="http://%s@localhost:80/%s"/>''' %
            (TEST_USER_ADMIN_LOGIN, HG_REPO)
        )
        response.mustcontain(
            '''<input class="form-control" size="80" readonly="readonly" value="http://%s@localhost:80/_%s"/>''' %
            (TEST_USER_ADMIN_LOGIN, ID)
        )

    def test_index_git(self):
        self.log_user()
        ID = Repository.get_by_repo_name(GIT_REPO).repo_id
        response = self.app.get(url(controller='summary',
                                    action='index',
                                    repo_name=GIT_REPO))

        # repo type
        response.mustcontain(
            """<span class="label label-repo" title="Git repository">git"""
        )
        # public/private
        response.mustcontain(
            """<i class="icon-globe">"""
        )

        # clone url...
        response.mustcontain(
            '''<input class="form-control" size="80" readonly="readonly" value="http://%s@localhost:80/%s"/>''' %
            (TEST_USER_ADMIN_LOGIN, GIT_REPO))
        response.mustcontain(
            '''<input class="form-control" size="80" readonly="readonly" value="http://%s@localhost:80/_%s"/>''' %
            (TEST_USER_ADMIN_LOGIN, ID)
        )

    def test_index_by_id_hg(self):
        self.log_user()
        ID = Repository.get_by_repo_name(HG_REPO).repo_id
        response = self.app.get(url(controller='summary',
                                    action='index',
                                    repo_name='_%s' % ID))

        # repo type
        response.mustcontain(
            """<span class="label label-repo" title="Mercurial repository">hg"""
        )
        # public/private
        response.mustcontain(
            """<i class="icon-globe">"""
        )

    def test_index_by_repo_having_id_path_in_name_hg(self):
        self.log_user()
        fixture.create_repo(name=u'repo_1')
        response = self.app.get(url(controller='summary',
                                    action='index',
                                    repo_name='repo_1'))

        try:
            response.mustcontain("repo_1")
        finally:
            RepoModel().delete(Repository.get_by_repo_name(u'repo_1'))
            Session().commit()

    def test_index_by_id_git(self):
        self.log_user()
        ID = Repository.get_by_repo_name(GIT_REPO).repo_id
        response = self.app.get(url(controller='summary',
                                    action='index',
                                    repo_name='_%s' % ID))

        # repo type
        response.mustcontain(
            """<span class="label label-repo" title="Git repository">git"""
        )
        # public/private
        response.mustcontain(
            """<i class="icon-globe">"""
        )

    def _enable_stats(self, repo):
        r = Repository.get_by_repo_name(repo)
        r.enable_statistics = True
        Session().commit()

    def test_index_trending(self):
        self.log_user()
        # codes stats
        self._enable_stats(HG_REPO)

        ScmModel().mark_for_invalidation(HG_REPO)
        # generate statistics first
        response = self.app.get(url(controller='summary', action='statistics',
                                    repo_name=HG_REPO))
        response = self.app.get(url(controller='summary', action='index',
                                    repo_name=HG_REPO))
        response.mustcontain(
            '[["py", {"count": 68, "desc": ["Python"]}], '
            '["rst", {"count": 16, "desc": ["Rst"]}], '
            '["css", {"count": 2, "desc": ["Css"]}], '
            '["sh", {"count": 2, "desc": ["Bash"]}], '
            '["yml", {"count": 1, "desc": ["Yaml"]}], '
            '["makefile", {"count": 1, "desc": ["Makefile", "Makefile"]}], '
            '["js", {"count": 1, "desc": ["Javascript"]}], '
            '["cfg", {"count": 1, "desc": ["Ini"]}], '
            '["ini", {"count": 1, "desc": ["Ini"]}], '
            '["html", {"count": 1, "desc": ["EvoqueHtml", "Html"]}]]'
        )

    def test_index_statistics(self):
        self.log_user()
        # codes stats
        self._enable_stats(HG_REPO)

        ScmModel().mark_for_invalidation(HG_REPO)
        response = self.app.get(url(controller='summary', action='statistics',
                                    repo_name=HG_REPO))

    def test_index_trending_git(self):
        self.log_user()
        # codes stats
        self._enable_stats(GIT_REPO)

        ScmModel().mark_for_invalidation(GIT_REPO)
        # generate statistics first
        response = self.app.get(url(controller='summary', action='statistics',
                                    repo_name=GIT_REPO))
        response = self.app.get(url(controller='summary', action='index',
                                    repo_name=GIT_REPO))
        response.mustcontain(
            '[["py", {"count": 68, "desc": ["Python"]}], '
            '["rst", {"count": 16, "desc": ["Rst"]}], '
            '["css", {"count": 2, "desc": ["Css"]}], '
            '["sh", {"count": 2, "desc": ["Bash"]}], '
            '["makefile", {"count": 1, "desc": ["Makefile", "Makefile"]}], '
            '["js", {"count": 1, "desc": ["Javascript"]}], '
            '["cfg", {"count": 1, "desc": ["Ini"]}], '
            '["ini", {"count": 1, "desc": ["Ini"]}], '
            '["html", {"count": 1, "desc": ["EvoqueHtml", "Html"]}], '
            '["bat", {"count": 1, "desc": ["Batch"]}]]'
        )

    def test_index_statistics_git(self):
        self.log_user()
        # codes stats
        self._enable_stats(GIT_REPO)

        ScmModel().mark_for_invalidation(GIT_REPO)
        response = self.app.get(url(controller='summary', action='statistics',
                                    repo_name=GIT_REPO))