def test_service_not_found_in_audit_events_not_suspended(
         self, record, logger, data_api_client):
     data_api_client.find_services.return_value = {
         'meta': {
             'total': 2
         },
         'services': [{
             'id': '1'
         }, {
             'id': '2'
         }]
     }
     data_api_client.find_audit_events_iter.return_value = list([{
         'data': {
             'serviceId': '1'
         }
     }])
     unsuspend_suspended_supplier_services(record,
                                           "suspending user",
                                           data_api_client,
                                           logger,
                                           dry_run=False)
     assert data_api_client.update_service_status.call_count == 1
     data_api_client.update_service_status.assert_called_with(
         '1', 'published', 'Unsuspend services helper')
    def test_unsuspends_supplier_services(self, record, logger,
                                          data_api_client):
        data_api_client.find_services.return_value = {
            'meta': {
                'total': 2
            },
            'services': [{
                'id': '1'
            }, {
                'id': '2'
            }]
        }
        data_api_client.find_audit_events_iter.return_value = list([
            {
                'data': {
                    'serviceId': '1',
                }
            },
            {
                'data': {
                    'serviceId': '2',
                }
            },
        ])
        unsuspend_suspended_supplier_services(record, "suspending user",
                                              data_api_client, logger, False)

        calls = [
            call.update_service_status('2', 'published',
                                       'Unsuspend services helper'),
            call.update_service_status('1', 'published',
                                       'Unsuspend services helper')
        ]
        data_api_client.assert_has_calls(calls, any_order=True)
 def test_dry_run_does_not_update_supplier_services(self, record, logger,
                                                    data_api_client):
     data_api_client.find_services.return_value = {
         'meta': {
             'total': 2
         },
         'services': [{
             'id': '1'
         }, {
             'id': '2'
         }]
     }
     data_api_client.find_audit_events_iter.return_value = list([
         {
             'data': {
                 'serviceId': '1',
             }
         },
         {
             'data': {
                 'serviceId': '2',
             }
         },
     ])
     unsuspend_suspended_supplier_services(record,
                                           "suspending user",
                                           data_api_client,
                                           logger,
                                           dry_run=False)
     data_api_client.update_service_status.assert_not_called
        def approve_supplier_framework_agreement(record):
            if not record["countersignedAt"]:
                agreement_id = record["agreementId"]
                supplier_id = record["supplier_id"]
                dry_run = args["--dry-run"]

                if dry_run:
                    logger.info(f"DRY-RUN would countersign agreement {agreement_id} for supplier {supplier_id}")
                    record["countersignedAt"] = datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%fZ")
                    unsuspend_suspended_supplier_services(record,
                                                          AUTOMATED_SUSPENDING_USER,
                                                          client,
                                                          logger,
                                                          dry_run)
                else:
                    logger.info(f"countersigning agreement {agreement_id} for supplier {supplier_id}")
                    try:
                        countersigned_agreement = client.approve_agreement_for_countersignature(
                            agreement_id,
                            "automated countersignature script",
                            AUTOMATED_COUNTERSIGNING_USER_ID
                        )["agreement"]
                        record["countersignedAt"] = countersigned_agreement["countersignedAgreementReturnedAt"]
                        unsuspend_suspended_supplier_services(record,
                                                              AUTOMATED_SUSPENDING_USER,
                                                              client,
                                                              logger,
                                                              dry_run)
                    except dmapiclient.errors.HTTPError as e:
                        logger.warn(f"failed to countersign agreement {agreement_id} for supplier {supplier_id}: {e}")
            return record