def METHOD_NAME(session, test_name, legal_type, correction_type, err_msg):
    """Test parties for SPECIAL_RESOLUTION correction."""
    # setup
    identifier = 'BC1234567'
    business = factory_business(identifier)
    corrected_filing = factory_completed_filing(business, CP_SPECIAL_RESOLUTION_APPLICATION)
    correction_data = copy.deepcopy(FILING_HEADER)
    correction_data['filing']['correction'] = copy.deepcopy(CORRECTION_CP_SPECIAL_RESOLUTION)
    correction_data['filing']['header']['name'] = 'correction'
    f = copy.deepcopy(correction_data)
    f['filing']['header']['identifier'] = identifier
    f['filing']['correction']['correctedFilingId'] = corrected_filing.id
    f['filing']['correction']['type'] = correction_type
    if test_name == 'no_roles':
        f['filing']['correction']['parties'][0]['roles'] = []
        f['filing']['correction']['parties'][1]['roles'] = []
        f['filing']['correction']['parties'][2]['roles'] = []
    elif test_name == "no_parties":
        del f['filing']['correction']['parties']
    elif test_name == "empty_parties":
        f['filing']['correction']['parties'] = []
    elif test_name == "only_completing":
        del f['filing']['correction']['parties'][2]
        del f['filing']['correction']['parties'][1]
        del f['filing']['correction']['parties'][0]['roles'][1]
    elif test_name == 'valid_parties':
        if correction_type == 'STAFF':
            del f['filing']['correction']['parties'][0]['roles'][0]  # completing party
    err = validate(business, f)
    if err:
      print(err.msg)
    if err_msg:
        assert err
        assert HTTPStatus.BAD_REQUEST == err.code
        assert lists_are_equal(err.msg, err_msg)
    else:
        assert None is err