From a9605fad6f38565245a827c90c12ba1f68ab6e18 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone <exarkun@twistedmatrix.com> Date: Fri, 8 May 2020 21:47:16 -0400 Subject: [PATCH] test redeem rejection of non-redeemable vouchers --- src/_zkapauthorizer/tests/test_controller.py | 35 ++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/_zkapauthorizer/tests/test_controller.py b/src/_zkapauthorizer/tests/test_controller.py index 963f84e..77d7e90 100644 --- a/src/_zkapauthorizer/tests/test_controller.py +++ b/src/_zkapauthorizer/tests/test_controller.py @@ -215,6 +215,41 @@ class PaymentControllerTests(TestCase): """ Tests for ``PaymentController``. """ + @given(tahoe_configs(), datetimes(), vouchers()) + def test_should_not_redeem(self, get_config, now, voucher): + """ + ``PaymentController.redeem`` raises ``ValueError`` if passed a voucher in + a state when redemption should not be started. + """ + store = self.useFixture(TemporaryVoucherStore(get_config, lambda: now)).store + controller = PaymentController( + store, + DummyRedeemer(), + default_token_count=100, + ) + + self.assertThat( + controller.redeem(voucher), + succeeded(Always()), + ) + + # Sanity check. It should be redeemed now. + voucher_obj = controller.get_voucher(voucher) + self.assertThat( + voucher_obj.state.should_start_redemption(), + Equals(False), + ) + + self.assertThat( + controller.redeem(voucher), + failed( + AfterPreprocessing( + lambda f: f.type, + Equals(ValueError), + ), + ), + ) + @given(tahoe_configs(), datetimes(), vouchers()) def test_not_redeemed_while_redeeming(self, get_config, now, voucher): """ -- GitLab