Ejemplo n.º 1
0
    def test_offering_update_not_found(self):

        data = {
            'name': 'test_offering',
            'version': '1.0',
            'description': 'test offering'
        }

        # Mock get offerings method
        offering_entry = views.OfferingEntry(permitted_methods=('GET', 'PUT',
                                                                'DELETE'))
        views.update_offering = MagicMock(name='update_offering')

        request = self.factory.put(
            '/api/offering/offerings/test_user/test_offering/1.0',
            json.dumps(data),
            content_type='application/json',
            HTTP_ACCEPT='application/json')

        request.user = self.user

        response = offering_entry.update(request, 'test_user', 'test_offering',
                                         '1.0')

        # Check correct call
        self.assertFalse(views.update_offering.called)

        self.assertEqual(response.status_code, 404)
        self.assertEqual(response.get('Content-type'),
                         'application/json; charset=utf-8')
        body_response = json.loads(response.content)

        self.assertEqual(type(body_response), dict)
        self.assertEqual(body_response['message'], 'Offering not found')
        self.assertEqual(body_response['result'], 'error')
Ejemplo n.º 2
0
    def test_get_offering_not_found(self):

        # Mock get offerings method
        offering_entry = views.OfferingEntry(permitted_methods=('GET', 'PUT',
                                                                'DELETE'))
        views.get_offering_info = MagicMock(name='get_offering_info')

        request = self.factory.get(
            '/api/offering/offerings/test_user/test_offering/1.0',
            HTTP_ACCEPT='application/json')
        request.user = self.user

        response = offering_entry.read(request, 'test_user', 'test_offering',
                                       '1.0')

        # Check correct call
        self.assertFalse(views.get_offering_info.called)

        self.assertEqual(response.status_code, 404)
        self.assertEqual(response.get('Content-type'),
                         'application/json; charset=utf-8')
        body_response = json.loads(response.content)

        self.assertEqual(type(body_response), dict)
        self.assertEqual(body_response['message'], 'Offering not found')
        self.assertEqual(body_response['result'], 'error')
Ejemplo n.º 3
0
    def test_offering_update_not_provider(self):

        data = {
            'name': 'test_offering',
            'version': '1.0',
            'description': 'test offering'
        }

        # Mock get offerings method
        offering_entry = views.OfferingEntry(permitted_methods=('GET', 'PUT',
                                                                'DELETE'))
        views.update_offering = MagicMock(name='update_offering')

        request = self.factory.put(
            '/api/offering/offerings/test_user/test_offering/1.0',
            json.dumps(data),
            content_type='application/json',
            HTTP_ACCEPT='application/json')

        request.user = self.user
        org = Organization.objects.get(name='test_user')

        # Call the view
        Offering.objects.create(name='test_offering',
                                owner_organization=org,
                                owner_admin_user=self.user,
                                version='1.0',
                                state='published',
                                description_url='',
                                resources=[],
                                comments=[],
                                tags=[],
                                image_url='',
                                related_images=[],
                                offering_description={},
                                notification_url='',
                                creation_date='2013-06-03 10:00:00')
        # Mock offering functions to obtain that the user is not owner
        views.Offering.is_owner = MagicMock(name='is_owner')
        views.Offering.is_owner.return_value = False
        org.managers = []
        org.save()

        response = offering_entry.update(request, 'test_user', 'test_offering',
                                         '1.0')

        # Check correct call
        self.assertFalse(views.update_offering.called)

        self.assertEqual(response.status_code, 403)
        self.assertEqual(response.get('Content-type'),
                         'application/json; charset=utf-8')
        body_response = json.loads(response.content)

        self.assertEqual(type(body_response), dict)
        self.assertEqual(body_response['message'],
                         'You are not allowed to edit the current offering')
        self.assertEqual(body_response['result'], 'error')
Ejemplo n.º 4
0
    def test_offering_update_exception(self):

        data = {
            'name': 'test_offering',
            'version': '1.0',
            'description': 'test offering'
        }

        # Mock get offerings method
        offering_entry = views.OfferingEntry(permitted_methods=('GET', 'PUT',
                                                                'DELETE'))
        views.update_offering = MagicMock(name='update_offering')
        views.update_offering.side_effect = Exception('Update error')

        request = self.factory.put(
            '/api/offering/offerings/test_user/test_offering/1.0',
            json.dumps(data),
            content_type='application/json',
            HTTP_ACCEPT='application/json')

        request.user = self.user
        org = Organization.objects.get(name='test_user')

        # Call the view
        offering = Offering.objects.create(name='test_offering',
                                           owner_organization=org,
                                           owner_admin_user=self.user,
                                           version='1.0',
                                           state='published',
                                           description_url='',
                                           resources=[],
                                           comments=[],
                                           tags=[],
                                           image_url='',
                                           related_images=[],
                                           offering_description={},
                                           notification_url='',
                                           creation_date='2013-06-03 10:00:00')

        response = offering_entry.update(request, 'test_user', 'test_offering',
                                         '1.0')

        # Check correct call
        views.update_offering.assert_called_once_with(self.user, offering,
                                                      data)

        self.assertEqual(response.status_code, 400)
        self.assertEqual(response.get('Content-type'),
                         'application/json; charset=utf-8')
        body_response = json.loads(response.content)

        self.assertEqual(type(body_response), dict)
        self.assertEqual(body_response['message'], 'Update error')
        self.assertEqual(body_response['result'], 'error')
Ejemplo n.º 5
0
    def test_get_offering(self):

        return_value = {
            'name': 'test_offering',
            'owner_organization': 'test_user',
            'owner_admin_user_id': 'test_user',
            'version': '1.0',
            'state': 'published',
            'description_url': 'http://repository.com/collection/usdl',
            'rating': 0,
            'comments': [],
            'tags': [],
            'image_url': 'media/image.png',
            'related_images': [],
            'creation_date': '2013-05-01 10:00:00',
            'publication_date': '2013-06-03 10:00:00',
            'resources': []
        }

        # Mock get offerings method
        offering_entry = views.OfferingEntry(permitted_methods=('GET', 'PUT',
                                                                'DELETE'))
        views.get_offering_info = MagicMock(name='get_offering_info')
        views.get_offering_info.return_value = return_value

        request = self.factory.get(
            '/api/offering/offerings/test_user/test_offering/1.0')
        request.user = self.user

        # Call the view
        offering = Offering.objects.create(
            name='test_offering',
            owner_organization=Organization.objects.get(name='test_user'),
            owner_admin_user=self.user,
            version='1.0',
            state='published',
            description_url='',
            resources=[],
            comments=[],
            tags=[],
            image_url='',
            related_images=[],
            offering_description={},
            notification_url='',
            creation_date='2013-06-03 10:00:00')

        response = offering_entry.read(request, 'test_user', 'test_offering',
                                       '1.0')

        # Check correct call
        views.get_offering_info.assert_called_once_with(offering, self.user)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.get('Content-type'),
                         'application/json; charset=UTF-8')
        body_response = json.loads(response.content)

        self.assertEqual(type(body_response), dict)
        self.assertEqual(body_response['name'], 'test_offering')
        self.assertEqual(body_response['owner_organization'], 'test_user')
        self.assertEqual(body_response['owner_admin_user_id'], 'test_user')
Ejemplo n.º 6
0
     name='change_current_organization'),
 url(r'^api/administration/organizations/(?P<org>[\w -]+)/?$',
     org_views.OrganizationEntry(permitted_methods=('PUT', 'GET'))),
 url(
     r'^api/administration/organizations/(?P<org>[\w -]+)/users/?$',
     org_views.OrganizationUserCollection(permitted_methods=('GET',
                                                             'POST'))),
 url(r'^api/offering/offerings/?$',
     offering_views.OfferingCollection(permitted_methods=('GET', 'POST'))),
 url(r'^api/offering/offerings/latest/?$',
     offering_views.NewestCollection(permitted_methods=('GET', ))),
 url(r'^api/offering/offerings/toprated/?$',
     offering_views.TopRatedCollection(permitted_methods=('GET', ))),
 url(
     r'^api/offering/offerings/(?P<organization>[\w -]+)/(?P<name>[\w -]+)/(?P<version>[\d.]+)/?$',
     offering_views.OfferingEntry(permitted_methods=('GET', 'PUT',
                                                     'DELETE'))),
 url(
     r'^api/offering/offerings/(?P<organization>[\w -]+)/(?P<name>[\w -]+)/(?P<version>[\d.]+)/publish/?$',
     offering_views.PublishEntry(permitted_methods=('POST', ))),
 url(
     r'^api/offering/offerings/(?P<organization>[\w -]+)/(?P<name>[\w -]+)/(?P<version>[\d.]+)/bind/?$',
     offering_views.BindEntry(permitted_methods=('POST', ))),
 url(
     r'^api/offering/offerings/(?P<organization>[\w -]+)/(?P<name>[\w -]+)/(?P<version>[\d.]+)/review/?$',
     offering_views.ReviewCollection(permitted_methods=('POST', 'GET'))),
 url(
     r'^api/offering/offerings/(?P<organization>[\w -]+)/(?P<name>[\w -]+)/(?P<version>[\d.]+)/review/(?P<review>\w+)/?$',
     offering_views.ReviewEntry(permitted_methods=('PUT', 'DELETE'))),
 url(
     r'^api/offering/offerings/(?P<organization>[\w -]+)/(?P<name>[\w -]+)/(?P<version>[\d.]+)/review/(?P<review>\w+)/reply/?$',
     offering_views.ResponseEntry(permitted_methods=('PUT', 'DELETE'))),