def METHOD_NAME(self):
    """Test permissions for signing authority confirmations """
    initiator = \
        self.users[self.user_map[TestSigningAuthorityConfirmations.UserRelationship.INITIATOR]]
    respondent = \
        self.users[self.user_map[TestSigningAuthorityConfirmations.UserRelationship.RESPONDENT]]
    trades = DataCreationUtilities.create_possible_credit_trades(
        initiator.organization,
        respondent.organization
    )
    expected_results = defaultdict(lambda: False)
    # key (relationship, status, rescinded?)
    expected_results[(
        TestSigningAuthorityConfirmations.UserRelationship.INITIATOR,
        self.statuses['draft'].status,
        False
    )] = True
    expected_results[(
        TestSigningAuthorityConfirmations.UserRelationship.INITIATOR,
        self.statuses['submitted'].status,
        False
    )] = True
    expected_results[(
        TestSigningAuthorityConfirmations.UserRelationship.RESPONDENT,
        self.statuses['accepted'].status,
        False
    )] = True
    expected_results[(
        TestSigningAuthorityConfirmations.UserRelationship.RESPONDENT,
        self.statuses['submitted'].status,
        False
    )] = True
    for (trade, relationship) in \
            product(trades, TestSigningAuthorityConfirmations.UserRelationship):
        # Sign an array of assertions, like the frontend does
        with self.subTest(
            "Testing signing confirmation permissions as array",
            relationship=relationship,
            status=trade['status'],
            rescinded=trade['rescinded']
        ):
            payload = list(map(lambda assertion, trade_id=trade['id']: {
                'hasAccepted': True,
                'signingAuthorityAssertion': assertion.id,
                'creditTrade': trade_id
            }, SigningAuthorityAssertion.objects.all()))
            response = self.clients[self.user_map[relationship]].post(
                '/api/signing_authority_confirmations',
                content_type='application/json',
                data=json.dumps(payload)
            )
            valid = status.is_success(response.status_code)
            self.assertEqual(
                valid,
                expected_results[(relationship, trade['status'], trade['rescinded'])]
            )
        # also try one at a time (not a JSON array)
        with self.subTest(
            "Testing signing confirmation permissions one at a time",
            relationship=relationship,
            status=trade['status'],
            rescinded=trade['rescinded']
        ):
            assertion_id = SigningAuthorityAssertion.objects.first().id
            payload = {
                'hasAccepted': True,
                'signingAuthorityAssertion': assertion_id,
                'creditTrade': trade['id']
            }
            response = self.clients[self.user_map[relationship]].post(
                '/api/signing_authority_confirmations',
                content_type='application/json',
                data=json.dumps(payload)
            )
            valid = status.is_success(response.status_code)
            self.assertEqual(
                valid,
                expected_results[(relationship, trade['status'], trade['rescinded'])]
            )