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