From ec0e225b7ddb1c2db50b743aabbdd5f591d0ff6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com> Date: Mon, 6 Feb 2012 14:04:37 +0100 Subject: [PATCH] Proof that user with bad balance cannot request. --- .../testVifibSlapComputerPartitionLock.py | 47 +++++++++++++++++-- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/master/product/Vifib/tests/testVifibSlapComputerPartitionLock.py b/master/product/Vifib/tests/testVifibSlapComputerPartitionLock.py index c27b82ab7..03842d0eb 100644 --- a/master/product/Vifib/tests/testVifibSlapComputerPartitionLock.py +++ b/master/product/Vifib/tests/testVifibSlapComputerPartitionLock.py @@ -4,7 +4,7 @@ from testVifibSlapWebService import TestVifibSlapWebServiceMixin from Products.DCWorkflow.DCWorkflow import ValidationFailed from random import random from slapos import slap -from AccessControl import Unauthorized +from zExceptions import Unauthorized from DateTime import DateTime from Products.ERP5Type.tests.backportUnittest import skip @@ -128,17 +128,56 @@ class TestVifibSlapComputerPartitionLock(TestVifibSlapWebServiceMixin): sla_xml=sequence.get('sla_xml'), **kw) + def stepSoftwareInstanceSaleOrderConfirmRaisesUnauthorized(self, sequence, + **kw): + """Checks that current software instance is realted only with sale order + + and that this sale order cannot be confirmed because of Unauthorized + + It means that user has bad balance.""" + software_instance = self.portal.portal_catalog.getResultValue( + uid=sequence['software_instance_uid']) + + aggregate_value_list = software_instance.getAggregateRelatedValueList( + portal_type=[self.sale_packing_list_line_portal_type, + self.sale_order_line_portal_type]) + + self.assertEqual(1, len(aggregate_value_list)) + self.assertTrue(self.sale_order_line_portal_type in [q.getPortalType() for\ + q in aggregate_value_list]) + sale_order_line = aggregate_value_list[0] + sale_order = sale_order_line.getParentValue() + + self.assertRaises(Unauthorized, sale_order.confirm) + + def stepAssertNoComputerPartition(self, sequence, **kw): + """Sets in sequence computer partition parameters related to current + software instance""" + software_instance = self.portal.portal_catalog.getResultValue( + uid=sequence['software_instance_uid']) + delivery_line_list = [q for q in software_instance + .getAggregateRelatedValueList( + portal_type=self.sale_packing_list_line_portal_type)] + self.assertEqual(0, len(delivery_line_list)) + def test_negative_person_balance_request(self): """Locked person can not request """ sequence_list = SequenceList() sequence_string = \ self.prepare_installed_software_release_sequence_string + \ - self.register_new_user_sequence_string + '\ + self.register_new_user_sequence_string \ + + self.lock_user_string() + '\ LoginWebUser \ - CheckPersonLockedState \ - PersonRequestIsForbidden \ + PersonRequestSoftwareInstance \ + Tic \ + Logout \ + \ + LoginDefaultUser \ + SoftwareInstanceSaleOrderConfirmRaisesUnauthorized \ + ConfirmOrderedSaleOrderActiveSense \ Tic \ + AssertNoComputerPartition \ Logout \ \ LoginERP5TypeTestCase \ -- 2.30.9