Esempio n. 1
0
    def test_basic_publication(self):
        data = {
            'marketplaces': []
        }
        offering = Offering.objects.get(name='test_offering1')
        offerings_management.publish_offering(offering, data)

        offering = Offering.objects.get(name='test_offering1')
        self.assertEqual(offering.state, 'published')
Esempio n. 2
0
    def test_publication_invalid_JSON(self):
        data = {
            'marketpla': ['test_market']
        }
        offering = Offering.objects.get(name='test_offering1')
        error = False
        try:
            offerings_management.publish_offering(offering, data)
        except:
            error = True

        self.assertTrue(error)
Esempio n. 3
0
    def test_publication_not_existing_marketplace(self):
        data = {
            'marketplaces': ['test_marketplace']
        }
        offering = Offering.objects.get(name='test_offering1')
        error = False
        try:
            offerings_management.publish_offering(offering, data)
        except:
            error = True

        self.assertTrue(error)
Esempio n. 4
0
    def test_publication_marketplace(self):
        data = {
            'marketplaces': ['test_market']
        }
        offering = Offering.objects.get(name='test_offering1')
        offerings_management.publish_offering(offering, data)

        offering = Offering.objects.get(name='test_offering1')
        self.assertEqual(offering.state, 'published')
        self.assertEqual(len(offering.marketplaces), 1)
        market = Marketplace.objects.get(pk=offering.marketplaces[0])
        self.assertEqual(market.name, 'test_market')
Esempio n. 5
0
    def test_offering_publication(self, name, data, side_effect=None, err_type=None, err_msg=None):
        offering = Offering.objects.get(name="test_offering1")

        if side_effect:
            side_effect(self, offering)

        error_found = None
        try:
            offerings_management.publish_offering(self._user, offering, data)
        except Exception as e:
            error_found = e

        if not err_type:
            self.assertEquals(error_found, None)

            offering = Offering.objects.get(name="test_offering1")
            self.assertEqual(offering.state, "published")

            self.assertEquals(len(offering.marketplaces), len(data["marketplaces"]))

            for m in offering.marketplaces:
                market = m.marketplace
                self.assertTrue(market.name in data["marketplaces"])
                self.assertEquals(m.offering_name, "published_offering")

            self.se_object.update_index.assert_called_with(offering)

            # Check marketplace calls
            if len(data["marketplaces"]):
                for m in data["marketplaces"]:
                    market = Marketplace.objects.get(name=m)
                    offerings_management.marketadaptor_factory.assert_any_call(market, self._user)
                    self._market_obj.add_service.assert_any_call(offering)

                self.assertEquals(offerings_management.marketadaptor_factory.call_count, len(data["marketplaces"]))
                self.assertEquals(self._market_obj.add_service.call_count, len(data["marketplaces"]))

            if isinstance(self._adaptor_obj, MagicMock):
                # Check reopsitory calls
                offerings_management.USDLGenerator.assert_called_once_with()
                self._generator_obj.generate_offering_usdl.assert_called_once_with(offering)

                offerings_management.repository_adaptor_factory.assert_called_once_with(self._mock_repo)
                offering_id = offering.owner_organization.name + "__" + offering.name + "__" + offering.version

                self._adaptor_obj.set_credentials.assert_called_once_with(self._user.userprofile.access_token)
                self._adaptor_obj.upload.assert_called_once_with(
                    "application/rdf+xml", "usdl document", name=offering_id
                )

        else:
            self.assertTrue(isinstance(error_found, err_type))
            self.assertEquals(unicode(error_found), err_msg)
Esempio n. 6
0
    def test_offering_publication(self, name, data, side_effect=None, err_type=None, err_msg=None):
        offering = Offering.objects.get(name='test_offering1')

        if side_effect:
            side_effect(self, offering)

        error_found = None
        try:
            offerings_management.publish_offering(self._user, offering, data)
        except Exception as e:
            error_found = e

        if not err_type:
            self.assertEquals(error_found, None)

            offering = Offering.objects.get(name='test_offering1')
            self.assertEqual(offering.state, 'published')

            self.assertEquals(len(offering.marketplaces), len(data['marketplaces']))

            for m in offering.marketplaces:
                market = m.marketplace
                self.assertTrue(market.name in data['marketplaces'])
                self.assertEquals(m.offering_name, "published_offering")

            self.se_object.update_index.assert_called_with(offering)

            # Check marketplace calls
            if len(data['marketplaces']):
                for m in data['marketplaces']:
                    market = Marketplace.objects.get(name=m)
                    offerings_management.marketadaptor_factory.assert_any_call(market, self._user)
                    self._market_obj.add_service.assert_any_call(offering)

                self.assertEquals(offerings_management.marketadaptor_factory.call_count, len(data['marketplaces']))
                self.assertEquals(self._market_obj.add_service.call_count, len(data['marketplaces']))

            if isinstance(self._adaptor_obj, MagicMock):
                # Check reopsitory calls
                offerings_management.USDLGenerator.assert_called_once_with()
                self._generator_obj.generate_offering_usdl.assert_called_once_with(offering)

                offerings_management.repository_adaptor_factory.assert_called_once_with(self._mock_repo)
                offering_id = offering.owner_organization.name + '__' + offering.name + '__' + offering.version

                self._adaptor_obj.set_credentials.assert_called_once_with(self._user.userprofile.access_token)
                self._adaptor_obj.upload.assert_called_once_with('application/rdf+xml', 'usdl document', name=offering_id)

        else:
            self.assertTrue(isinstance(error_found, err_type))
            self.assertEquals(unicode(error_found), err_msg)
Esempio n. 7
0
    def create(self, request, organization, name, version):
        # Obtains the offering
        offering = None
        content_type = get_content_type(request)[0]
        try:
            org = Organization.objects.get(name=organization)
            offering = Offering.objects.get(name=name, owner_organization=org, version=version)
        except:
            return build_response(request, 404, 'Not found')

        # Check that the user can publish the offering
        if not offering.is_owner(request.user) and request.user.pk not in org.managers:
            return build_response(request, 403, 'Forbidden')

        if content_type == 'application/json':
            try:
                data = json.loads(request.raw_post_data)
                publish_offering(offering, data)
            except HTTPError:
                return build_response(request, 502, 'Bad gateway')
            except Exception, e:
                return build_response(request, 400, e.message)
Esempio n. 8
0
    def create(self, request, organization, name, version):
        # Obtains the offering
        offering = None
        content_type = get_content_type(request)[0]
        try:
            offering, org = _get_offering(organization, name, version)
        except ObjectDoesNotExist as e:
            return build_response(request, 404, unicode(e))
        except Exception as e:
            return build_response(request, 400, unicode(e))

        # Check that the user can publish the offering
        if request.user.userprofile.current_organization != org\
        or (not offering.is_owner(request.user) and not request.user.pk in org.managers):
            return build_response(request, 403, 'Forbidden')

        if content_type == 'application/json':
            try:
                data = json.loads(request.raw_post_data)
                publish_offering(offering, data)
            except HTTPError:
                return build_response(request, 502, 'Bad gateway')
            except Exception, e:
                return build_response(request, 400, unicode(e))
Esempio n. 9
0
    def create(self, request, organization, name, version):
        # Obtains the offering
        offering = None
        content_type = get_content_type(request)[0]
        try:
            offering, org = _get_offering(organization, name, version)
        except ObjectDoesNotExist as e:
            return build_response(request, 404, unicode(e))
        except Exception as e:
            return build_response(request, 400, unicode(e))

        # Check that the user can publish the offering
        if request.user.userprofile.current_organization != org\
        or (not offering.is_owner(request.user) and not request.user.pk in org.managers):
            return build_response(request, 403, 'Forbidden')

        if content_type == 'application/json':
            try:
                data = json.loads(request.raw_post_data)
                publish_offering(request.user, offering, data)
            except HTTPError:
                return build_response(request, 502, 'The Marketplace has failed publishing the offering')
            except Exception, e:
                return build_response(request, 400, unicode(e))