示例#1
0
 def test_if_related_object_does_not_exist_validation_error_is_raised(self):
     from waldur_core.structure.tests.factories import CustomerFactory
     customer = CustomerFactory()
     valid_url = CustomerFactory.get_url(customer)
     customer.delete()
     self.assertRaises(serializers.ValidationError,
                       self.field.to_internal_value, valid_url)
示例#2
0
    def setUp(self):
        from waldur_core.structure.tests.factories import CustomerFactory

        self.customer = CustomerFactory()
        self.url = CustomerFactory.get_url(self.customer)

        self.customer_filter = core_filters.URLFilter(
            view_name='customer-detail', field_name='customer__uuid')
示例#3
0
 def setUp(self):
     self.staff = UserFactory(is_staff=True)
     self.owner = UserFactory()
     self.user = UserFactory()
     self.customer = CustomerFactory()
     self.customer.add_user(self.owner, CustomerRole.OWNER)
     self.url = reverse('customer_image',
                        kwargs={'uuid': self.customer.uuid.hex})
示例#4
0
 def test_if_user_does_not_have_permissions_for_related_object_validation_error_is_raised(
         self):
     from waldur_core.structure.tests.factories import CustomerFactory
     customer = CustomerFactory()
     valid_url = CustomerFactory.get_url(customer)
     self.user.is_staff = False
     self.user.save()
     self.assertRaises(serializers.ValidationError,
                       self.field.to_internal_value, valid_url)
示例#5
0
    def test_user_can_not_create_submission_for_unrelated_customer(self):
        self.client.force_authenticate(self.user)

        del self.payload['customer_create_request']
        self.payload['customer'] = CustomerFactory.get_url(
            self.fixture.customer)

        response = self.client.post(self.list_url, self.payload)
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
示例#6
0
 def get_valid_payload(self):
     return {
         'name': 'Azure service',
         'customer': CustomerFactory.get_url(self.fixture.customer),
         'tenant_id': uuid.uuid4(),
         'client_id': uuid.uuid4(),
         'client_secret': uuid.uuid4(),
         'subscription_id': uuid.uuid4(),
     }
示例#7
0
 def get_valid_payload(self):
     return {
         'type': 'SLURM',
         'name': 'SLURM service',
         'customer': CustomerFactory.get_url(self.fixture.customer),
         'options': {
             'username': '******',
             'hostname': 'slurm.waldur.com',
             'default_account': 'waldur_user',
             'port': 22,
             'use_sudo': True,
             'gateway': '8.8.8.8',
         },
     }
示例#8
0
 def setUp(self):
     self.fixture = ProjectFixture()
     self.url = ServiceSettingsFactory.get_list_url()
     self.valid_payload = {
         'type': 'Azure',
         'name': 'Azure service',
         'customer': CustomerFactory.get_url(self.fixture.customer),
         'options': {
             'tenant_id': uuid.uuid4().hex,
             'client_id': uuid.uuid4().hex,
             'client_secret': uuid.uuid4().hex,
             'subscription_id': uuid.uuid4().hex,
         },
     }
示例#9
0
    def test_user_can_create_submission_for_existing_customer(self):
        self.client.force_authenticate(self.user)

        del self.payload['customer_create_request']
        self.payload['customer'] = CustomerFactory.get_url(
            self.fixture.customer)
        self.fixture.project.add_user(self.user, ProjectRole.MEMBER)

        response = self.client.post(self.list_url, self.payload)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        flow = FlowTracker.objects.get(uuid=response.data['uuid'])
        self.assertEqual(flow.customer_create_request, None)
        self.assertEqual(flow.customer, self.fixture.customer)
示例#10
0
 def setUp(self):
     self.user = UserFactory()
     self.customer = CustomerFactory()
示例#11
0
 def test_native_name_is_rendered_in_customer_admin_if_feature_is_enabled(
         self):
     customer = CustomerFactory()
     ma = CustomerAdmin(Customer, AdminSite())
     self.assertTrue('native_name' in ma.get_fields(request, customer))
示例#12
0
 def test_native_name_is_omitted_in_customer_admin_if_feature_is_disabled(
         self):
     customer = CustomerFactory()
     ma = CustomerAdmin(Customer, AdminSite())
     self.assertFalse('native_name' in ma.get_fields(request, customer))
示例#13
0
 def test_if_related_object_exists_it_is_deserialized(self):
     from waldur_core.structure.tests.factories import CustomerFactory
     customer = CustomerFactory()
     valid_url = CustomerFactory.get_url(customer)
     self.assertEqual(self.field.to_internal_value(valid_url), customer)
示例#14
0
class ImageUploadTest(test.APITransactionTestCase):
    def setUp(self):
        self.staff = UserFactory(is_staff=True)
        self.owner = UserFactory()
        self.user = UserFactory()
        self.customer = CustomerFactory()
        self.customer.add_user(self.owner, CustomerRole.OWNER)
        self.url = reverse('customer_image',
                           kwargs={'uuid': self.customer.uuid.hex})

    def test_default_customer_logo(self):
        self.client.force_authenticate(user=self.staff)
        self.assert_default_logo()

        with dummy_image() as image:
            self.assert_can_upload_image(image)
            self.assert_can_delete_image()

        self.assert_default_logo()

    # Positive
    def test_staff_can_upload_and_delete_customer_logo(self):
        self.client.force_authenticate(user=self.staff)

        with dummy_image() as image:
            self.assert_can_upload_image(image)
            self.assert_can_delete_image()

    def test_customer_owner_can_upload_and_delete_customer_logo(self):
        self.client.force_authenticate(user=self.owner)

        with dummy_image() as image:
            self.assert_can_upload_image(image)
            self.assert_can_delete_image()

    # Negative
    def test_user_cannot_upload_logo_for_customer_he_is_not_owner_of(self):
        self.client.force_authenticate(user=self.user)

        with dummy_image() as image:
            response = self.upload_image(self.url, image)
            self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code)

    # Helpers
    def assert_can_upload_image(self, image):
        response = self.upload_image(self.url, image)
        self.assertEqual(status.HTTP_200_OK, response.status_code,
                         response.data)
        self.assertIn('image', response.data)
        self.assertIsNotNone(response.data['image'])

    def assert_can_delete_image(self):
        response = self.client.delete(self.url)
        self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code,
                         response.data)

    @override_waldur_core_settings(DEFAULT_CUSTOMER_LOGO='default_logo.jpg')
    def assert_default_logo(self):
        url = reverse('customer-detail',
                      kwargs={'uuid': self.customer.uuid.hex})
        response = self.client.get(url)

        self.assertEqual(status.HTTP_200_OK, response.status_code)
        self.assertEqual('default_logo.jpg', response.data['image'])

    def upload_image(self, url, image):
        return self.client.put(self.url, {'image': image}, format='multipart')