@@ -74,6 +74,14 @@ func TestValidate(t *testing.T) {
7474 tcInvalidTagCheckDisabledFixT (),
7575 tcInvalidTagCheckEnabled (),
7676 tcInvalidTagCheckEnabledFixT (),
77+ tcAllowUnknownMessageFieldsEnabled (),
78+ tcAllowUnknownMessageFieldsEnabledFixT (),
79+ tcAllowUnknownMessageFieldsDisabled (),
80+ tcAllowUnknownMessageFieldsDisabledFixT (),
81+ tcCheckUserDefinedFieldsEnabled (),
82+ tcCheckUserDefinedFieldsEnabledFixT (),
83+ tcCheckUserDefinedFieldsDisabled (),
84+ tcCheckUserDefinedFieldsDisabledFixT (),
7785 tcMultipleRepeatingGroupFields (),
7886 }
7987
@@ -786,6 +794,168 @@ func tcInvalidTagCheckEnabledFixT() validateTest {
786794 }
787795}
788796
797+ func tcAllowUnknownMessageFieldsEnabled () validateTest {
798+ dict , _ := datadictionary .Parse ("spec/FIX40.xml" )
799+ customValidatorSettings := defaultValidatorSettings
800+ customValidatorSettings .AllowUnknownMessageFields = true
801+ validator := NewValidator (customValidatorSettings , dict , nil )
802+
803+ builder := createFIX40NewOrderSingle ()
804+ tag := Tag (41 )
805+ builder .Body .SetField (tag , FIXString ("hello" ))
806+ msgBytes := builder .build ()
807+
808+ return validateTest {
809+ TestName : "Allow Unknown Message Fields - Enabled" ,
810+ Validator : validator ,
811+ MessageBytes : msgBytes ,
812+ DoNotExpectReject : true ,
813+ }
814+ }
815+
816+ func tcAllowUnknownMessageFieldsEnabledFixT () validateTest {
817+ tDict , _ := datadictionary .Parse ("spec/FIXT11.xml" )
818+ appDict , _ := datadictionary .Parse ("spec/FIX50SP2.xml" )
819+ customValidatorSettings := defaultValidatorSettings
820+ customValidatorSettings .AllowUnknownMessageFields = true
821+ validator := NewValidator (customValidatorSettings , appDict , tDict )
822+
823+ builder := createFIX50SP2NewOrderSingle ()
824+ tag := Tag (41 )
825+ builder .Body .SetField (tag , FIXString ("hello" ))
826+ msgBytes := builder .build ()
827+
828+ return validateTest {
829+ TestName : "Allow Unknown Message Fields - Enabled FIXT" ,
830+ Validator : validator ,
831+ MessageBytes : msgBytes ,
832+ DoNotExpectReject : true ,
833+ }
834+ }
835+
836+ func tcAllowUnknownMessageFieldsDisabled () validateTest {
837+ dict , _ := datadictionary .Parse ("spec/FIX40.xml" )
838+ customValidatorSettings := defaultValidatorSettings
839+ customValidatorSettings .AllowUnknownMessageFields = false
840+ validator := NewValidator (customValidatorSettings , dict , nil )
841+
842+ builder := createFIX40NewOrderSingle ()
843+ tag := Tag (41 )
844+ builder .Body .SetField (tag , FIXString ("hello" ))
845+ msgBytes := builder .build ()
846+
847+ return validateTest {
848+ TestName : "Allow Unknown Message Fields - Disabled" ,
849+ Validator : validator ,
850+ MessageBytes : msgBytes ,
851+ DoNotExpectReject : false ,
852+ ExpectedRejectReason : rejectReasonTagNotDefinedForThisMessageType ,
853+ ExpectedRefTagID : & tag ,
854+ }
855+ }
856+
857+ func tcAllowUnknownMessageFieldsDisabledFixT () validateTest {
858+ tDict , _ := datadictionary .Parse ("spec/FIXT11.xml" )
859+ appDict , _ := datadictionary .Parse ("spec/FIX50SP2.xml" )
860+ customValidatorSettings := defaultValidatorSettings
861+ customValidatorSettings .RejectInvalidMessage = true
862+ validator := NewValidator (customValidatorSettings , appDict , tDict )
863+
864+ builder := createFIX50SP2NewOrderSingle ()
865+ tag := Tag (41 )
866+ builder .Body .SetField (tag , FIXString ("hello" ))
867+ msgBytes := builder .build ()
868+
869+ return validateTest {
870+ TestName : "Allow Unknown Message Fields - Disabled FIXT" ,
871+ Validator : validator ,
872+ MessageBytes : msgBytes ,
873+ DoNotExpectReject : false ,
874+ ExpectedRejectReason : rejectReasonTagNotDefinedForThisMessageType ,
875+ ExpectedRefTagID : & tag ,
876+ }
877+ }
878+
879+ func tcCheckUserDefinedFieldsEnabled () validateTest {
880+ dict , _ := datadictionary .Parse ("spec/FIX40.xml" )
881+ customValidatorSettings := defaultValidatorSettings
882+ customValidatorSettings .CheckUserDefinedFields = true
883+ validator := NewValidator (customValidatorSettings , dict , nil )
884+
885+ builder := createFIX40NewOrderSingle ()
886+ tag := Tag (9999 )
887+ builder .Body .SetField (tag , FIXString ("hello" ))
888+ msgBytes := builder .build ()
889+
890+ return validateTest {
891+ TestName : "Check User Defined Fields - Enabled" ,
892+ Validator : validator ,
893+ MessageBytes : msgBytes ,
894+ DoNotExpectReject : false ,
895+ ExpectedRefTagID : & tag ,
896+ }
897+ }
898+
899+ func tcCheckUserDefinedFieldsEnabledFixT () validateTest {
900+ tDict , _ := datadictionary .Parse ("spec/FIXT11.xml" )
901+ appDict , _ := datadictionary .Parse ("spec/FIX50SP2.xml" )
902+ customValidatorSettings := defaultValidatorSettings
903+ customValidatorSettings .RejectInvalidMessage = true
904+ validator := NewValidator (customValidatorSettings , appDict , tDict )
905+
906+ builder := createFIX50SP2NewOrderSingle ()
907+ tag := Tag (9999 )
908+ builder .Body .SetField (tag , FIXString ("hello" ))
909+ msgBytes := builder .build ()
910+
911+ return validateTest {
912+ TestName : "Check User Defined Fields - Enabled FIXT" ,
913+ Validator : validator ,
914+ MessageBytes : msgBytes ,
915+ DoNotExpectReject : false ,
916+ ExpectedRefTagID : & tag ,
917+ }
918+ }
919+
920+ func tcCheckUserDefinedFieldsDisabled () validateTest {
921+ dict , _ := datadictionary .Parse ("spec/FIX40.xml" )
922+ customValidatorSettings := defaultValidatorSettings
923+ customValidatorSettings .CheckUserDefinedFields = false
924+ validator := NewValidator (customValidatorSettings , dict , nil )
925+
926+ builder := createFIX40NewOrderSingle ()
927+ tag := Tag (9999 )
928+ builder .Body .SetField (tag , FIXString ("hello" ))
929+ msgBytes := builder .build ()
930+
931+ return validateTest {
932+ TestName : "Check User Defined Fields - Disabled" ,
933+ Validator : validator ,
934+ MessageBytes : msgBytes ,
935+ DoNotExpectReject : true ,
936+ }
937+ }
938+
939+ func tcCheckUserDefinedFieldsDisabledFixT () validateTest {
940+ tDict , _ := datadictionary .Parse ("spec/FIXT11.xml" )
941+ appDict , _ := datadictionary .Parse ("spec/FIX50SP2.xml" )
942+ customValidatorSettings := defaultValidatorSettings
943+ customValidatorSettings .CheckUserDefinedFields = false
944+ validator := NewValidator (customValidatorSettings , appDict , tDict )
945+
946+ builder := createFIX50SP2NewOrderSingle ()
947+ tag := Tag (9999 )
948+ builder .Body .SetField (tag , FIXString ("hello" ))
949+ msgBytes := builder .build ()
950+
951+ return validateTest {
952+ TestName : "Check User Defined Fields - Disabled FIXT" ,
953+ Validator : validator ,
954+ MessageBytes : msgBytes ,
955+ DoNotExpectReject : true ,
956+ }
957+ }
958+
789959func tcTagSpecifiedOutOfRequiredOrderDisabledHeader () validateTest {
790960 dict , _ := datadictionary .Parse ("spec/FIX40.xml" )
791961 customValidatorSettings := defaultValidatorSettings
0 commit comments