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')
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)
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)
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')
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)
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)
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)
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))
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))