예제 #1
0
    def test_create_offering_validation(self, name, offering, checker, side_effect, msg=None):

        self._mock_validator_imports(offering_validator)
        offering_validator.Resource.objects.filter.return_value = [self._asset_instance]

        self._mock_product_request()
        self._mock_offering_bundle(offering)

        # Add the extra call for open search
        offering_responses = [bund for bund in self._bundles]
        offering_responses.append([])
        offering_validator.Offering.objects.filter.side_effect = offering_responses

        if side_effect is not None:
            side_effect(self)

        error = None
        try:
            validator = offering_validator.OfferingValidator()
            validator.validate('create', self._provider, offering)
        except Exception as e:
            error = e

        if msg is not None:
            self.assertTrue(isinstance(error, ValueError))
            self.assertEquals(msg, unicode(error))
        else:
            self.assertEquals(error, None)

            # Validate calls
            checker(self, offering)
예제 #2
0
    def test_update_open_offering(self):
        self._mock_offering_update()

        validator = offering_validator.OfferingValidator()
        validator.validate('update', self._provider, OPEN_OFFERING)

        # Validate calls
        offering_validator.Offering.objects.filter.assert_called_once_with(asset=self._asset_instance)
        self.assertTrue(self._asset_instance.is_public)
        self._asset_instance.save.assert_called_once_with()
예제 #3
0
    def test_update_offering_validator(self):
        self._mock_offering_update()

        validator = offering_validator.OfferingValidator()
        validator.validate('update', self._provider, BASIC_OFFERING)

        # Validate calls
        self.assertEquals(0, offering_validator.Offering.objects.filter.call_count)
        self.assertFalse(self._asset_instance.is_public)
        self._asset_instance.save.assert_called_once_with()
예제 #4
0
    def test_offering_attachment_missing(self):
        offering_validator.Offering = MagicMock()
        offering_validator.Offering.objects.filter.return_value = []

        error = None
        try:
            validator = offering_validator.OfferingValidator()
            validator.validate('attach', self._provider, BASIC_OFFERING)
        except ValueError as e:
            error = e

        self.assertEquals('The specified offering has not been registered', unicode(error))
예제 #5
0
    def test_offering_attachment(self):
        offering = MagicMock()
        offering_validator.Offering = MagicMock()
        offering_validator.Offering.objects.filter.return_value = [offering]

        validator = offering_validator.OfferingValidator()
        validator.validate('attach', self._provider, BASIC_OFFERING)

        self.assertEquals(BASIC_OFFERING['href'], offering.href)
        self.assertEquals(BASIC_OFFERING['id'], offering.off_id)

        offering.save.assert_called_once_with()
예제 #6
0
    def test_update_open_offering_multiple_error(self):
        self._mock_offering_update()

        offering_validator.Offering.objects.filter.return_value = [MagicMock(), MagicMock()]
        error = None
        try:
            validator = offering_validator.OfferingValidator()
            validator.validate('update', self._provider, OPEN_OFFERING)
        except Exception as e:
            error = e

        self.assertTrue(isinstance(error, ValueError))
        self.assertEqual(unicode(error), 'Assets of open offerings cannot be monetized in other offerings')