Exemplo n.º 1
0
 def test_disabled_component_comma_cleaning(self):
     package_repository = factory.make_PackageRepository(
         default=True, components=[]
     )
     form = PackageRepositoryForm(
         instance=package_repository,
         data={"disabled_components": ["universe,multiverse"]},
     )
     request = HttpRequest()
     request.user = factory.make_User()
     endpoint = factory.pick_choice(ENDPOINT_CHOICES)
     repo = form.save(endpoint, request)
     self.assertItemsEqual(
         ["universe", "multiverse"], repo.disabled_components
     )
     form = PackageRepositoryForm(
         instance=package_repository,
         data={"disabled_components": ["universe, multiverse"]},
     )
     repo = form.save(endpoint, request)
     self.assertItemsEqual(
         ["universe", "multiverse"], repo.disabled_components
     )
     form = PackageRepositoryForm(
         instance=package_repository,
         data={"disabled_components": ["universe"]},
     )
     repo = form.save(endpoint, request)
     self.assertItemsEqual(["universe"], repo.disabled_components)
Exemplo n.º 2
0
 def test__arches_comma_cleaning(self):
     package_repository = factory.make_PackageRepository()
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'arches': ['i386,armhf']})
     repo = form.save()
     self.assertItemsEqual(['i386', 'armhf'], repo.arches)
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'arches': ['i386, armhf']})
     repo = form.save()
     self.assertItemsEqual(['i386', 'armhf'], repo.arches)
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'arches': ['i386']})
     repo = form.save()
     self.assertItemsEqual(['i386'], repo.arches)
Exemplo n.º 3
0
 def test__component_comma_cleaning(self):
     package_repository = factory.make_PackageRepository()
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'components': ['val1,val2']})
     repo = form.save()
     self.assertItemsEqual(['val1', 'val2'], repo.components)
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'components': ['val1, val2']})
     repo = form.save()
     self.assertItemsEqual(['val1', 'val2'], repo.components)
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'components': ['val1']})
     repo = form.save()
     self.assertItemsEqual(['val1'], repo.components)
Exemplo n.º 4
0
    def create(Self, request):
        """Create a Package Repository.

        :param name: The name of the Package Repository.
        :type name: unicode

        :param url: The url of the Package Repository.
        :type url: unicode

        :param distributions: Which package distributions to include.
        :type distributions: unicode

        :param disabled_pockets: The list of pockets to disable.

        :param disabled_components: The list of components to disable. Only
            applicable to the default Ubuntu repositories.

        :param components: The list of components to enable. Only applicable
            to custom repositories.

        :param arches: The list of supported architectures.

        :param key: The authentication key to use with the repository.
        :type key: unicode

        :param enabled: Whether or not the repository is enabled.
        :type enabled: boolean
        """
        form = PackageRepositoryForm(data=request.data)
        if form.is_valid():
            return form.save(ENDPOINT.API, request)
        else:
            raise MAASAPIValidationError(form.errors)
Exemplo n.º 5
0
 def test__creates_package_repository(self):
     repo = factory.make_PackageRepository()
     params = self.make_valid_repo_params(repo)
     form = PackageRepositoryForm(data=params)
     self.assertTrue(form.is_valid(), form.errors)
     package_repository = form.save()
     self.assertAttributes(package_repository, params)
Exemplo n.º 6
0
    def update(self, params):
        """Update the object from params iff admin."""
        if not reload_object(self.user).is_superuser:
            raise HandlerPermissionError()

        obj = self.get_object(params)
        request = HttpRequest()
        request.user = self.user
        # Update by using form.
        form = PackageRepositoryForm(instance=obj,
                                     request=request,
                                     data=params)
        if form.is_valid():
            try:
                obj = form.save(ENDPOINT.UI, request)
            except ValidationError as e:
                raise HandlerValidationError(e.error_dict)
            return self.full_dehydrate(obj)
        else:
            raise HandlerValidationError(form.errors)

        # Update by updating the fields on the object.
        obj = self.full_hydrate(obj, params)
        obj.save()
        return self.full_dehydrate(obj)
Exemplo n.º 7
0
 def test__disabled_pocket_comma_cleaning(self):
     package_repository = factory.make_PackageRepository()
     form = PackageRepositoryForm(
         instance=package_repository,
         data={'disabled_pockets': ['updates,backports']})
     repo = form.save()
     self.assertItemsEqual(['updates', 'backports'], repo.disabled_pockets)
     form = PackageRepositoryForm(
         instance=package_repository,
         data={'disabled_pockets': ['updates, backports']})
     repo = form.save()
     self.assertItemsEqual(['updates', 'backports'], repo.disabled_pockets)
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'disabled_pockets': ['updates']})
     repo = form.save()
     self.assertItemsEqual(['updates'], repo.disabled_pockets)
Exemplo n.º 8
0
    def create(self, params):
        """Create the object from params iff admin."""
        if not reload_object(self.user).is_superuser:
            raise HandlerPermissionError()

        request = HttpRequest()
        request.user = self.user
        # Create by using form.
        form = PackageRepositoryForm(request=request, data=params)
        if form.is_valid():
            try:
                obj = form.save(ENDPOINT.UI, request)
            except ValidationError as e:
                try:
                    raise HandlerValidationError(e.message_dict)
                except AttributeError:
                    raise HandlerValidationError({"__all__": e.message})
            return self.full_dehydrate(obj)
        else:
            raise HandlerValidationError(form.errors)

        # Create by updating the fields on the object.
        obj = self._meta.object_class()
        obj = self.full_hydrate(obj, params)
        obj.save()
        return self.full_dehydrate(obj)
Exemplo n.º 9
0
 def test__updates_url(self):
     package_repository = factory.make_PackageRepository()
     url = factory.make_url(scheme='http')
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'url': url})
     self.assertTrue(form.is_valid(), form.errors)
     package_repository = form.save()
     self.assertEqual(url, package_repository.url)
Exemplo n.º 10
0
 def test__component_comma_cleaning(self):
     package_repository = factory.make_PackageRepository()
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'components': ['val1,val2']})
     request = HttpRequest()
     request.user = factory.make_User()
     endpoint = factory.pick_choice(ENDPOINT_CHOICES)
     repo = form.save(endpoint, request)
     self.assertItemsEqual(['val1', 'val2'], repo.components)
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'components': ['val1, val2']})
     repo = form.save(endpoint, request)
     self.assertItemsEqual(['val1', 'val2'], repo.components)
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'components': ['val1']})
     repo = form.save(endpoint, request)
     self.assertItemsEqual(['val1'], repo.components)
Exemplo n.º 11
0
 def test__arches_comma_cleaning(self):
     package_repository = factory.make_PackageRepository()
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'arches': ['i386,armhf']})
     request = HttpRequest()
     request.user = factory.make_User()
     endpoint = factory.pick_choice(ENDPOINT_CHOICES)
     repo = form.save(endpoint, request)
     self.assertItemsEqual(['i386', 'armhf'], repo.arches)
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'arches': ['i386, armhf']})
     repo = form.save(endpoint, request)
     self.assertItemsEqual(['i386', 'armhf'], repo.arches)
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'arches': ['i386']})
     repo = form.save(endpoint, request)
     self.assertItemsEqual(['i386'], repo.arches)
Exemplo n.º 12
0
 def test__updates_enabled(self):
     package_repository = factory.make_PackageRepository()
     enabled = not package_repository.enabled
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'enabled': enabled})
     self.assertTrue(form.is_valid(), form.errors)
     package_repository = form.save()
     self.assertEqual(enabled, package_repository.enabled)
Exemplo n.º 13
0
 def test_distribution_comma_cleaning(self):
     package_repository = factory.make_PackageRepository()
     form = PackageRepositoryForm(instance=package_repository,
                                  data={"distributions": ["val1,val2"]})
     request = HttpRequest()
     request.user = factory.make_User()
     endpoint = factory.pick_choice(ENDPOINT_CHOICES)
     repo = form.save(endpoint, request)
     self.assertItemsEqual(["val1", "val2"], repo.distributions)
     form = PackageRepositoryForm(instance=package_repository,
                                  data={"distributions": ["val1, val2"]})
     repo = form.save(endpoint, request)
     self.assertItemsEqual(["val1", "val2"], repo.distributions)
     form = PackageRepositoryForm(instance=package_repository,
                                  data={"distributions": ["val1"]})
     repo = form.save(endpoint, request)
     self.assertItemsEqual(["val1"], repo.distributions)
Exemplo n.º 14
0
 def test__updates_name(self):
     package_repository = factory.make_PackageRepository()
     name = factory.make_name('name')
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'name': name})
     self.assertTrue(form.is_valid(), form.errors)
     package_repository = form.save()
     self.assertEqual(name, package_repository.name)
Exemplo n.º 15
0
 def test__create_package_repository_defaults_to_enabled(self):
     repo = factory.make_PackageRepository()
     params = self.make_valid_repo_params(repo)
     del params['enabled']
     form = PackageRepositoryForm(data=params)
     self.assertTrue(form.is_valid(), form.errors)
     package_repository = form.save()
     self.assertAttributes(package_repository, params)
     self.assertTrue(package_repository.enabled)
Exemplo n.º 16
0
    def update(self, request, id):
        """@description-title Update a package repository
        @description Update the package repository with the given id.

        @param (int) "{id}" [required=true] A package repository id.

        @param (string) "name" [required=false] The name of the package
        repository.

        @param (string) "url" [required=false] The url of the package
        repository.

        @param (string) "distributions" [required=false] Which package
        distributions to include.

        @param (string) "disabled_pockets" [required=false] The list of pockets
        to disable.

        @param (string) "disabled_components" [required=false] The list of
        components to disable. Only applicable to the default Ubuntu
        repositories.

        @param (string) "disable_sources" [required=false] Disable deb-src
        lines.

        @param (string) "components" [required=false] The list of components to
        enable. Only applicable to custom repositories.

        @param (string) "arches" [required=false] The list of supported
        architectures.

        @param (string) "key" [required=false] The authentication key to use
        with the repository.

        @param (boolean) "enabled" [required=false] Whether or not the
        repository is enabled.

        @success (http-status-code) "server-success" 200
        @success (json) "success-json" A JSON object containing information
        about the updated package repository.
        @success-example "success-json" [exkey=pkg-repos-update] placeholder
        text

        @error (http-status-code) "404" 404
        @error (content) "not-found" The requested package repository is not
        found.
        @error-example "not-found"
            Not Found
        """
        package_repository = PackageRepository.objects.get_object_or_404(id)
        form = PackageRepositoryForm(instance=package_repository,
                                     data=request.data)
        if form.is_valid():
            return form.save(ENDPOINT.API, request)
        else:
            raise MAASAPIValidationError(form.errors)
Exemplo n.º 17
0
 def test__disabled_pocket_comma_cleaning(self):
     package_repository = factory.make_PackageRepository()
     form = PackageRepositoryForm(
         instance=package_repository,
         data={'disabled_pockets': ['updates,backports']})
     request = HttpRequest()
     request.user = factory.make_User()
     endpoint = factory.pick_choice(ENDPOINT_CHOICES)
     repo = form.save(endpoint, request)
     self.assertItemsEqual(['updates', 'backports'], repo.disabled_pockets)
     form = PackageRepositoryForm(
         instance=package_repository,
         data={'disabled_pockets': ['updates, backports']})
     repo = form.save(endpoint, request)
     self.assertItemsEqual(['updates', 'backports'], repo.disabled_pockets)
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'disabled_pockets': ['updates']})
     repo = form.save(endpoint, request)
     self.assertItemsEqual(['updates'], repo.disabled_pockets)
Exemplo n.º 18
0
 def test__updates_arches(self):
     package_repository = factory.make_PackageRepository()
     arch1 = random.choice(PackageRepository.KNOWN_ARCHES)
     arch2 = random.choice(PackageRepository.KNOWN_ARCHES)
     arch3 = random.choice(PackageRepository.KNOWN_ARCHES)
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'arches': [arch1, arch2, arch3]})
     self.assertTrue(form.is_valid(), form.errors)
     package_repository = form.save()
     self.assertEqual([arch1, arch2, arch3], package_repository.arches)
Exemplo n.º 19
0
 def test__creates_package_repository_defaults_main_arches(self):
     repo = factory.make_PackageRepository(arches=[])
     params = self.make_valid_repo_params(repo)
     del params['arches']
     form = PackageRepositoryForm(data=params)
     self.assertTrue(form.is_valid(), form.errors)
     package_repository = form.save()
     self.assertAttributes(package_repository, params)
     self.assertItemsEqual(package_repository.arches,
                           PackageRepository.MAIN_ARCHES)
Exemplo n.º 20
0
 def test__disabled_component_comma_cleaning(self):
     package_repository = factory.make_PackageRepository(default=True,
                                                         components=[])
     form = PackageRepositoryForm(
         instance=package_repository,
         data={'disabled_components': ['universe,multiverse']})
     repo = form.save()
     self.assertItemsEqual(['universe', 'multiverse'],
                           repo.disabled_components)
     form = PackageRepositoryForm(
         instance=package_repository,
         data={'disabled_components': ['universe, multiverse']})
     repo = form.save()
     self.assertItemsEqual(['universe', 'multiverse'],
                           repo.disabled_components)
     form = PackageRepositoryForm(
         instance=package_repository,
         data={'disabled_components': ['universe']})
     repo = form.save()
     self.assertItemsEqual(['universe'], repo.disabled_components)
Exemplo n.º 21
0
 def test__updates_enabled(self):
     package_repository = factory.make_PackageRepository()
     enabled = not package_repository.enabled
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'enabled': enabled})
     self.assertTrue(form.is_valid(), form.errors)
     request = HttpRequest()
     request.user = factory.make_User()
     endpoint = factory.pick_choice(ENDPOINT_CHOICES)
     package_repository = form.save(endpoint, request)
     self.assertEqual(enabled, package_repository.enabled)
Exemplo n.º 22
0
 def test__updates_url(self):
     package_repository = factory.make_PackageRepository()
     url = factory.make_url(scheme='http')
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'url': url})
     self.assertTrue(form.is_valid(), form.errors)
     request = HttpRequest()
     request.user = factory.make_User()
     endpoint = factory.pick_choice(ENDPOINT_CHOICES)
     package_repository = form.save(endpoint, request)
     self.assertEqual(url, package_repository.url)
Exemplo n.º 23
0
 def test_default_ports_package_repository_arches(self):
     package_repository = PackageRepository.objects.get(
         name="ports_archive")
     form = PackageRepositoryForm(instance=package_repository,
                                  data={"arches": []})
     self.assertTrue(form.is_valid(), form.errors)
     request = HttpRequest()
     request.user = factory.make_User()
     endpoint = factory.pick_choice(ENDPOINT_CHOICES)
     package_repository = form.save(endpoint, request)
     self.assertItemsEqual(package_repository.arches,
                           PackageRepository.PORTS_ARCHES)
Exemplo n.º 24
0
 def test__create_package_repository_defaults_to_enabled(self):
     repo = factory.make_PackageRepository()
     params = self.make_valid_repo_params(repo)
     del params['enabled']
     form = PackageRepositoryForm(data=params)
     self.assertTrue(form.is_valid(), form.errors)
     request = HttpRequest()
     request.user = factory.make_User()
     endpoint = factory.pick_choice(ENDPOINT_CHOICES)
     package_repository = form.save(endpoint, request)
     self.assertAttributes(package_repository, params)
     self.assertTrue(package_repository.enabled)
Exemplo n.º 25
0
 def test__updates_arches(self):
     package_repository = factory.make_PackageRepository()
     arch1 = random.choice(PackageRepository.KNOWN_ARCHES)
     arch2 = random.choice(PackageRepository.KNOWN_ARCHES)
     arch3 = random.choice(PackageRepository.KNOWN_ARCHES)
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'arches': [arch1, arch2, arch3]})
     self.assertTrue(form.is_valid(), form.errors)
     request = HttpRequest()
     request.user = factory.make_User()
     endpoint = factory.pick_choice(ENDPOINT_CHOICES)
     package_repository = form.save(endpoint, request)
     self.assertEqual([arch1, arch2, arch3], package_repository.arches)
Exemplo n.º 26
0
 def test__creates_package_repository_defaults_main_arches(self):
     repo = factory.make_PackageRepository(arches=[])
     params = self.make_valid_repo_params(repo)
     del params['arches']
     form = PackageRepositoryForm(data=params)
     self.assertTrue(form.is_valid(), form.errors)
     request = HttpRequest()
     request.user = factory.make_User()
     endpoint = factory.pick_choice(ENDPOINT_CHOICES)
     package_repository = form.save(endpoint, request)
     self.assertAttributes(package_repository, params)
     self.assertItemsEqual(package_repository.arches,
                           PackageRepository.MAIN_ARCHES)
Exemplo n.º 27
0
 def test__creates_package_repository(self):
     repo = factory.make_PackageRepository()
     params = self.make_valid_repo_params(repo)
     form = PackageRepositoryForm(data=params)
     self.assertTrue(form.is_valid(), form.errors)
     request = HttpRequest()
     request.user = factory.make_User()
     endpoint = factory.pick_choice(ENDPOINT_CHOICES)
     package_repository = form.save(endpoint, request)
     self.assertAttributes(package_repository, params)
     event = Event.objects.get(type__level=AUDIT)
     self.assertIsNotNone(event)
     self.assertEqual(
         event.description,
         "Created package repository '%s'." % package_repository.name)
Exemplo n.º 28
0
 def test__updates_disable_sources(self):
     package_repository = factory.make_PackageRepository()
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'disable_sources': True})
     self.assertTrue(form.is_valid(), form.errors)
     request = HttpRequest()
     request.user = factory.make_User()
     endpoint = factory.pick_choice(ENDPOINT_CHOICES)
     package_repository = form.save(endpoint, request)
     self.assertTrue(package_repository.disable_sources)
     event = Event.objects.get(type__level=AUDIT)
     self.assertIsNotNone(event)
     self.assertEqual(
         event.description,
         "Updated package repository '%s'." % (package_repository.name))
Exemplo n.º 29
0
 def test__updates_name(self):
     package_repository = factory.make_PackageRepository()
     name = factory.make_name('name')
     form = PackageRepositoryForm(instance=package_repository,
                                  data={'name': name})
     self.assertTrue(form.is_valid(), form.errors)
     request = HttpRequest()
     request.user = factory.make_User()
     endpoint = factory.pick_choice(ENDPOINT_CHOICES)
     package_repository = form.save(endpoint, request)
     self.assertEqual(name, package_repository.name)
     event = Event.objects.get(type__level=AUDIT)
     self.assertIsNotNone(event)
     self.assertEqual(
         event.description,
         "Package repository '%s'" % package_repository.name +
         " updated by '%(username)s'.")
Exemplo n.º 30
0
    def create(Self, request):
        """@description-title Create a package repository
        @description Create a new package repository.

        @param (string) "name" [required=true] The name of the package
        repository.

        @param (string) "url" [required=true] The url of the package
        repository.

        @param (string) "distributions" [required=false] Which package
        distributions to include.

        @param (string) "disabled_pockets" [required=false] The list of pockets
        to disable.

        @param (string) "disabled_components" [required=false] The list of
        components to disable. Only applicable to the default Ubuntu
        repositories.

        @param (string) "components" [required=false] The list of components to
        enable. Only applicable to custom repositories.

        @param (string) "arches" [required=false] The list of supported
        architectures.

        @param (string) "key" [required=false] The authentication key to use
        with the repository.

        @param (boolean) "enabled" [required=false] Whether or not the
        repository is enabled.

        @success (http-status-code) "server-success" 200
        @success (json) "success-json" A JSON object containing information
        about the new package repository.
        @success-example "success-json" [exkey=pkg-repos-update] placeholder
        text
        """
        form = PackageRepositoryForm(data=request.data)
        if form.is_valid():
            return form.save(ENDPOINT.API, request)
        else:
            raise MAASAPIValidationError(form.errors)