Skip to content

Commit 09ca1ad

Browse files
committed
send_build_status tests added
1 parent 3a68121 commit 09ca1ad

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

readthedocs/rtd_tests/tests/test_oauth.py

+53
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
from django.test import TestCase
66
from django.test.utils import override_settings
77

8+
from django_dynamic_fixture import get
9+
10+
from readthedocs.builds.constants import EXTERNAL, BUILD_STATUS_SUCCESS
11+
from readthedocs.builds.models import Version, Build
812
from readthedocs.oauth.models import RemoteOrganization, RemoteRepository
913
from readthedocs.oauth.services import (
1014
BitbucketService,
@@ -26,6 +30,10 @@ def setUp(self):
2630
self.org = RemoteOrganization.objects.create(slug='rtfd', json='')
2731
self.privacy = self.project.version_privacy_level
2832
self.service = GitHubService(user=self.user, account=None)
33+
self.external_version = get(Version, project=self.project, type=EXTERNAL)
34+
self.external_build = get(
35+
Build, project=self.project, version=self.external_version
36+
)
2937

3038
def test_make_project_pass(self):
3139
repo_json = {
@@ -142,6 +150,51 @@ def test_multiple_users_same_repo(self):
142150
self.assertEqual(github_project, github_project_5)
143151
self.assertEqual(github_project_2, github_project_6)
144152

153+
@mock.patch('readthedocs.oauth.services.github.log')
154+
@mock.patch('readthedocs.oauth.services.github.GitHubService.get_session')
155+
def test_send_build_status_successful(self, session, mock_logger):
156+
session().post.return_value.status_code = 201
157+
success = self.service.send_build_status(
158+
self.external_build,
159+
BUILD_STATUS_SUCCESS
160+
)
161+
162+
self.assertTrue(success)
163+
mock_logger.info.assert_called_with(
164+
'GitHub commit status for project: %s',
165+
self.project
166+
)
167+
168+
@mock.patch('readthedocs.oauth.services.github.log')
169+
@mock.patch('readthedocs.oauth.services.github.GitHubService.get_session')
170+
def test_send_build_status_404_error(self, session, mock_logger):
171+
session().post.return_value.status_code = 404
172+
success = self.service.send_build_status(
173+
self.external_build,
174+
BUILD_STATUS_SUCCESS
175+
)
176+
177+
self.assertFalse(success)
178+
mock_logger.info.assert_called_with(
179+
'GitHub project does not exist or user does not have '
180+
'permissions: project=%s',
181+
self.project
182+
)
183+
184+
@mock.patch('readthedocs.oauth.services.github.log')
185+
@mock.patch('readthedocs.oauth.services.github.GitHubService.get_session')
186+
def test_send_build_status_value_error(self, session, mock_logger):
187+
session().post.side_effect = ValueError
188+
success = self.service.send_build_status(
189+
self.external_build, BUILD_STATUS_SUCCESS
190+
)
191+
192+
self.assertFalse(success)
193+
mock_logger.exception.assert_called_with(
194+
'GitHub commit status creation failed for project: %s',
195+
self.project,
196+
)
197+
145198
@override_settings(DEFAULT_PRIVACY_LEVEL='private')
146199
def test_make_private_project(self):
147200
"""

0 commit comments

Comments
 (0)