54 lines
2.2 KiB
Python
54 lines
2.2 KiB
Python
import json
|
|
from django.test.client import Client
|
|
from django.test import TestCase
|
|
from mock import patch, Mock
|
|
from override_settings import override_settings
|
|
from django.conf import settings
|
|
|
|
|
|
@override_settings(REPOS={'repo': {'path': 'path', 'branch': 'branch'}})
|
|
class PostReceiveTestCase(TestCase):
|
|
def setUp(self):
|
|
self.client = Client()
|
|
|
|
@patch('github_sync.views.export_to_github')
|
|
@patch('github_sync.views.import_from_github')
|
|
def test_non_branch(self, import_from_github, export_to_github):
|
|
self.client.post('/github_service_hook', {'payload': json.dumps({
|
|
'ref': 'refs/tags/foo'})
|
|
})
|
|
self.assertFalse(import_from_github.called)
|
|
self.assertFalse(export_to_github.called)
|
|
|
|
@patch('github_sync.views.export_to_github')
|
|
@patch('github_sync.views.import_from_github')
|
|
def test_non_watched_repo(self, import_from_github, export_to_github):
|
|
self.client.post('/github_service_hook', {'payload': json.dumps({
|
|
'ref': 'refs/heads/branch',
|
|
'repository': {'name': 'bad_repo'}})
|
|
})
|
|
self.assertFalse(import_from_github.called)
|
|
self.assertFalse(export_to_github.called)
|
|
|
|
@patch('github_sync.views.export_to_github')
|
|
@patch('github_sync.views.import_from_github')
|
|
def test_non_tracked_branch(self, import_from_github, export_to_github):
|
|
self.client.post('/github_service_hook', {'payload': json.dumps({
|
|
'ref': 'refs/heads/non_branch',
|
|
'repository': {'name': 'repo'}})
|
|
})
|
|
self.assertFalse(import_from_github.called)
|
|
self.assertFalse(export_to_github.called)
|
|
|
|
@patch('github_sync.views.export_to_github')
|
|
@patch('github_sync.views.import_from_github', return_value=(Mock(), Mock()))
|
|
def test_tracked_branch(self, import_from_github, export_to_github):
|
|
self.client.post('/github_service_hook', {'payload': json.dumps({
|
|
'ref': 'refs/heads/branch',
|
|
'repository': {'name': 'repo'}})
|
|
})
|
|
import_from_github.assert_called_with(settings.REPOS['repo'])
|
|
mock_revision, mock_course = import_from_github.return_value
|
|
export_to_github.assert_called_with(mock_course, 'path', "Changes from cms import of revision %s" % mock_revision)
|
|
|