diff --git a/rhodecode/api/tests/test_get_repo_refs.py b/rhodecode/api/tests/test_get_repo_refs.py new file mode 100644 --- /dev/null +++ b/rhodecode/api/tests/test_get_repo_refs.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- + +# Copyright (C) 2010-2016 RhodeCode GmbH +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License, version 3 +# (only), as published by the Free Software Foundation. +# +# 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 Affero General Public License +# along with this program. If not, see . +# +# This program is dual-licensed. If you wish to learn more about the +# RhodeCode Enterprise Edition, including its added features, Support services, +# and proprietary license terms, please see https://rhodecode.com/licenses/ + + +import pytest + +from rhodecode.model.meta import Session +from rhodecode.model.repo import RepoModel +from rhodecode.model.user import UserModel +from rhodecode.tests import TEST_USER_ADMIN_LOGIN +from rhodecode.api.tests.utils import ( + build_data, api_call, assert_ok, assert_error, expected_permissions) + + +@pytest.mark.usefixtures("testuser_api", "app") +class TestGetRepo(object): + def test_api_get_repo_refs(self, backend, user_util): + repo = backend.create_repo() + id_, params = build_data(self.apikey, 'get_repo_refs', + **{'repoid': repo.repo_name,}) + response = api_call(self.app, params) + expected = repo.scm_instance().refs() + assert_ok(id_, expected, given=response.body) diff --git a/rhodecode/api/views/repo_api.py b/rhodecode/api/views/repo_api.py --- a/rhodecode/api/views/repo_api.py +++ b/rhodecode/api/views/repo_api.py @@ -512,9 +512,23 @@ def get_repo_refs(request, apiuser, repo .. code-block:: bash id : - result: [ - TODO... - ] + "result": { + "bookmarks": { + "dev": "5611d30200f4040ba2ab4f3d64e5b06408a02188", + "master": "367f590445081d8ec8c2ea0456e73ae1f1c3d6cf" + }, + "branches": { + "default": "5611d30200f4040ba2ab4f3d64e5b06408a02188", + "stable": "367f590445081d8ec8c2ea0456e73ae1f1c3d6cf" + }, + "branches_closed": {}, + "tags": { + "tip": "5611d30200f4040ba2ab4f3d64e5b06408a02188", + "v4.4.0": "1232313f9e6adac5ce5399c2a891dc1e72b79022", + "v4.4.1": "cbb9f1d329ae5768379cdec55a62ebdd546c4e27", + "v4.4.2": "24ffe44a27fcd1c5b6936144e176b9f6dd2f3a17", + } + } error: null """ diff --git a/rhodecode/lib/vcs/backends/base.py b/rhodecode/lib/vcs/backends/base.py --- a/rhodecode/lib/vcs/backends/base.py +++ b/rhodecode/lib/vcs/backends/base.py @@ -226,7 +226,12 @@ class BaseRepository(object): returns a `dict` with branches, bookmarks, tags, and closed_branches for this repository """ - raise NotImplementedError + return dict( + branches=self.branches, + branches_closed=self.branches_closed, + tags=self.tags, + bookmarks=self.bookmarks + ) @LazyProperty def branches(self): @@ -236,6 +241,13 @@ class BaseRepository(object): raise NotImplementedError @LazyProperty + def tags(self): + """ + A `dict` which maps tags names to commit ids. + """ + raise NotImplementedError + + @LazyProperty def size(self): """ Returns combined size in bytes for all repository files