Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

  • cde5674
  • /
  • services
  • /
  • ticketing
  • /
  • test_bundle_revocation.py
Raw File Download

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
content badge
swh:1:cnt:4100f3d49e24a1cf9bda28456125e37336c335e6
directory badge
swh:1:dir:6c9f2cae3f10bb49db604cd8bd39cbd73b671d2d

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • content
  • directory
(requires biblatex-software package)
Generating citation ...
(requires biblatex-software package)
Generating citation ...
test_bundle_revocation.py
"""
:Copyright: 2014-2025 Jochen Kupperschmidt
:License: Revised BSD (see `LICENSE` file for details)
"""

import pytest

from byceps.services.ticketing import ticket_bundle_service as bundle_service
from byceps.services.ticketing.log import ticket_log_service
from byceps.util.result import Ok


def test_revoke_bundle(admin_app, bundle, ticketing_admin):
    expected_quantity = 4

    bundle_before = bundle
    assert not bundle_before.revoked

    tickets_before = bundle_service.get_tickets_for_bundle(bundle.id)
    assert len(tickets_before) == expected_quantity

    for ticket_before in tickets_before:
        assert not ticket_before.revoked

        log_entries_before = ticket_log_service.get_entries_for_ticket(
            ticket_before.id
        )
        assert len(log_entries_before) == 0

    # -------------------------------- #

    assert bundle_service.revoke_bundle(bundle.id, ticketing_admin) == Ok(None)

    # -------------------------------- #

    bundle_after = bundle_service.get_bundle(bundle.id)
    assert bundle_after.revoked

    tickets_after = bundle_service.get_tickets_for_bundle(bundle.id)
    assert len(tickets_after) == expected_quantity

    for ticket_after in tickets_after:
        assert ticket_after.revoked

        log_entries_after = ticket_log_service.get_entries_for_ticket(
            ticket_after.id
        )
        assert len(log_entries_after) == 1

        ticket_revoked_log_entry = log_entries_after[0]
        assert ticket_revoked_log_entry.event_type == 'ticket-revoked'
        assert ticket_revoked_log_entry.data == {
            'initiator_id': str(ticketing_admin.id),
        }


# helpers


@pytest.fixture()
def bundle(category, ticket_owner, *, quantity=4):
    return bundle_service.create_bundle(category, quantity, ticket_owner)

back to top

Software Heritage — Copyright (C) 2015–2026, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Content policy— Contact— JavaScript license information— Web API