Пример #1
0
    def test_format_results_render_module(self, mock_get_parameters):
        mock_get_parameters.return_value = {'module': 'foo/bar'}
        release = ReleasesPost36View()
        module = 'foo/bar'
        get_dict = {'module': module}
        result_str = release.format_results(
            {
                'foo/bar': [
                    {
                        'dependencies': [('apple', '42.5')],
                        'version': '1.0',
                        'file': 'foo',
                        'file_md5': 'bar'
                    },
                ]
            }, get_dict, '/v3/releases').content
        result = json.loads(result_str)

        module_data = result['results'][0]
        self.assertEquals('foo/bar', module_data['metadata']['name'])
        self.assertEquals('1.0', module_data['metadata']['version'])
        self.assertEquals('foo', module_data['file_uri'])
        self.assertEquals('bar', module_data['file_md5'])
        dependencies = module_data['metadata']['dependencies']
        self.assertEquals('apple', dependencies[0]['name'])
        self.assertEquals('42.5', dependencies[0]['version_requirement'])
Пример #2
0
    def test_format_results_with_single_module(self):
        release = ReleasesPost36View()
        module = 'foo/bar'
        get_dict = {
            'module': module,
            'version': '1.0.0',
            'path': 'foo-bar-1.0.0'
        }
        result_str = release.format_results(
            {
                'foo/bar': [
                    {
                        'dependencies': [('apple', '42.5')],
                        'version': '1.0',
                        'file': 'foo',
                        'file_md5': 'bar'
                    },
                ]
            }, get_dict, '/v3/releases').content
        module_data = json.loads(result_str)

        self.assertEquals('foo/bar', module_data['metadata']['name'])
        self.assertEquals('1.0', module_data['metadata']['version'])
        self.assertEquals('foo', module_data['file_uri'])
        self.assertEquals('bar', module_data['file_md5'])
        dependencies = module_data['metadata']['dependencies']
        self.assertEquals('apple', dependencies[0]['name'])
        self.assertEquals('42.5', dependencies[0]['version_requirement'])
Пример #3
0
 def test_format_query_string_with_version(self):
     result = ReleasesPost36View._format_query_string(
         base_url='https://foo.com/api/v3/',
         module_name='modulename', module_version='3.5',
         offset=5, limit=2
     )
     data = urlparse.urlparse(result)
     query = urlparse.parse_qs(data.query)
     self.assertEquals(['3.5'], query['version'])
Пример #4
0
 def test_format_query_string_with_version(self):
     result = ReleasesPost36View._format_query_string(
         base_url='https://foo.com/api/v3/',
         module_name='modulename',
         module_version='3.5',
         offset=5,
         limit=2)
     data = urlparse.urlparse(result)
     query = urlparse.parse_qs(data.query)
     self.assertEquals(['3.5'], query['version'])
Пример #5
0
 def test_releases_post_36_get_bad_parameters(self, mock_get_credentials):
     """
     Test getting malformed request parameters from HTTP GET request
     """
     mock_get_credentials.return_value = ('consumer1', 'repo1')
     rf = RequestFactory()
     mock_request = rf.get('/v3/releases/blah!')
     releases_view = ReleasesPost36View()
     response = releases_view.get(mock_request)
     self.assertEqual(response.status_code, 400)
Пример #6
0
 def test_releases_post_36_get_single_module_without_version(
         self, mock_get_credentials):
     """
     Test getting a single module without specifying a version
     """
     mock_get_credentials.return_value = ('consumer1', 'repo1')
     rf = RequestFactory()
     mock_request = rf.get('/v3/releases/foo-bar')
     releases_view = ReleasesPost36View()
     response = releases_view.get(mock_request)
     self.assertEqual(response.status_code, 400)
Пример #7
0
 def test_releases_post_36_get_query_parameters(self):
     """
     Test getting request parameters from HTTP GET request
     """
     releases_view = ReleasesPost36View()
     module = 'test-module'
     path = '/test/'
     formatted_module_name = 'test/module'
     get_dict = {'module': module}
     parameters = releases_view._get_parameters(get_dict, path)
     self.assertEqual(formatted_module_name, parameters.get('module'))
Пример #8
0
 def test_releases_post_36_get_path_parameters(self):
     """
     Test getting request parameters from HTTP GET request
     """
     releases_view = ReleasesPost36View()
     param = 'foo-bar-1.0.0'
     version = '1.0.0'
     formatted_module_name = 'foo/bar'
     parameters = releases_view._get_parameters({}, '/v3/releases/' + param)
     self.assertEqual(formatted_module_name, parameters.get('module'))
     self.assertEqual(version, parameters.get('version'))
     self.assertEqual(param, parameters.get('path'))
Пример #9
0
    def test_format_query_string_no_version(self):
        result = ReleasesPost36View._format_query_string(
            base_url='https://foo.com/api/v3/',
            module_name='modulename', module_version=None,
            offset=5, limit=2
        )

        data = urlparse.urlparse(result)
        self.assertEquals('https', data.scheme)
        self.assertEquals('foo.com', data.netloc)
        self.assertEquals('/api/v3/', data.path)

        query = urlparse.parse_qs(data.query)
        self.assertEquals(['modulename'], query['module'])
        self.assertEquals(['2'], query['limit'])
        self.assertEquals(['5'], query['offset'])
        self.assertTrue('version' not in query)
Пример #10
0
    def test_format_query_string_no_version(self):
        result = ReleasesPost36View._format_query_string(
            base_url='https://foo.com/api/v3/',
            module_name='modulename',
            module_version=None,
            offset=5,
            limit=2)

        data = urlparse.urlparse(result)
        self.assertEquals('https', data.scheme)
        self.assertEquals('foo.com', data.netloc)
        self.assertEquals('/api/v3/', data.path)

        query = urlparse.parse_qs(data.query)
        self.assertEquals(['modulename'], query['module'])
        self.assertEquals(['2'], query['limit'])
        self.assertEquals(['5'], query['offset'])
        self.assertTrue('version' not in query)
Пример #11
0
    def test_format_results_pagination_middle_page(self, mock_get_parameters):
        mock_get_parameters.return_value = {'module': 'foo/bar'}
        release = ReleasesPost36View()
        module = 'foo/bar'
        get_dict = {'module': module, 'limit': '1', 'offset': '1'}
        result_str = release.format_results(
            {
                'foo/bar': [
                    {
                        'dependencies': [],
                        'version': '1.0',
                        'file': 'foo',
                        'file_md5': 'bar'
                    },
                    {
                        'dependencies': [],
                        'version': '2.0',
                        'file': 'foo',
                        'file_md5': 'bar'
                    },
                    {
                        'dependencies': [],
                        'version': '3.0',
                        'file': 'foo',
                        'file_md5': 'bar'
                    },
                ]
            }, get_dict, '/v3/releases').content
        result = json.loads(result_str)

        self.assertEquals(1, result['pagination']['limit'])
        self.assertEquals(1, result['pagination']['offset'])
        self.assertEquals(3, result['pagination']['total'])
        self.assertEquals(u'/v3/releases?limit=1&module=foo%2Fbar&offset=0',
                          result['pagination']['first'])
        self.assertEquals(u'/v3/releases?limit=1&module=foo%2Fbar&offset=0',
                          result['pagination']['previous'])
        self.assertEquals(u'/v3/releases?limit=1&module=foo%2Fbar&offset=1',
                          result['pagination']['current'])
        self.assertEquals(u'/v3/releases?limit=1&module=foo%2Fbar&offset=2',
                          result['pagination']['next'])
        self.assertEquals(1, len(result['results']))
        self.assertEquals('2.0', result['results'][0]['metadata']['version'])
Пример #12
0
    def test_format_results_pagination_defaults(self, mock_get_parameters):
        mock_get_parameters.return_value = {'module': 'foo/bar'}
        release = ReleasesPost36View()
        module = 'foo/bar'
        get_dict = {'module': module}
        result_str = release.format_results({
            'foo/bar': []
        }, get_dict, '/v3/releases').content
        result = json.loads(result_str)

        self.assertEquals(20, result['pagination']['limit'])
        self.assertEquals(0, result['pagination']['offset'])
        self.assertEquals(0, result['pagination']['total'])
        self.assertEquals(u'/v3/releases?limit=20&module=foo%2Fbar&offset=0',
                          result['pagination']['first'])
        self.assertEquals(u'/v3/releases?limit=20&module=foo%2Fbar&offset=0',
                          result['pagination']['current'])
        self.assertEquals(None, result['pagination']['previous'])
        self.assertEquals(None, result['pagination']['next'])
Пример #13
0
from django.conf.urls import patterns, url
from pulp_puppet.forge.views.releases import ReleasesView, ReleasesPost36View

urlpatterns = patterns('',
                       url(r'^pulp_puppet/forge/([^/]+)/([^/]+)/api/v1/releases.json',
                           ReleasesView.as_view(),
                           name='post_33_releases'),
                       url(r'^api/v1/releases.json', ReleasesView.as_view(),
                           name='pre_33_releases'),
                       url(r'^v3/releases', ReleasesPost36View.as_view(), name='post_36_releases')
                       )
Пример #14
0
from django.conf.urls import patterns, url
from pulp_puppet.forge.views.releases import ReleasesView, ReleasesPost36View
from pulp_puppet.forge.views.modules import ModulesView, ModulesPost36View
from pulp_puppet.forge.views.files import FilesView, FilesPost36View
from pulp.server.db import connection


connection.initialize()

urlpatterns = patterns('',
    url(r'^pulp_puppet/forge/([^/]+)/([^/]+)/api/v1/releases.json', ReleasesView.as_view(),
        name='post_33_releases'),
    url(r'^api/v1/releases.json', ReleasesView.as_view(), name='pre_33_releases'),
    url(r'^v3/releases', ReleasesPost36View.as_view(), name='post_36_releases'),
    url(r'^v3/modules', ModulesPost36View.as_view(), name='post_36_modules'),
    url(r'^v3/files', FilesPost36View.as_view(), name='post_36_files')
)
Пример #15
0
from django.conf.urls import patterns, url
from pulp_puppet.forge.views.releases import ReleasesView, ReleasesPost36View

urlpatterns = patterns(
    '',
    url(r'^pulp_puppet/forge/([^/]+)/([^/]+)/api/v1/releases.json',
        ReleasesView.as_view(),
        name='post_33_releases'),
    url(r'^api/v1/releases.json',
        ReleasesView.as_view(),
        name='pre_33_releases'),
    url(r'^v3/releases', ReleasesPost36View.as_view(),
        name='post_36_releases'))