Skip to content

Commit aa70104

Browse files
Added validation test expecting a parse error
1 parent ffdc4c7 commit aa70104

File tree

1 file changed

+56
-29
lines changed

1 file changed

+56
-29
lines changed

validation_test.go

Lines changed: 56 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ import (
2020
"testing"
2121
"time"
2222

23-
"github.com/stretchr/testify/assert"
24-
2523
"github.com/quickfixgo/quickfix/datadictionary"
2624
)
2725

@@ -87,42 +85,60 @@ func TestValidate(t *testing.T) {
8785
tcCheckUserDefinedFieldsDisabled(),
8886
tcCheckUserDefinedFieldsDisabledFixT(),
8987
tcMultipleRepeatingGroupFields(),
88+
tcCheckSumValidation(),
9089
}
9190

9291
msg := NewMessage()
9392
for _, test := range tests {
94-
assert.Nil(t, ParseMessage(msg, bytes.NewBuffer(test.MessageBytes)))
95-
reject := test.Validator.Validate(msg)
93+
t.Run(test.TestName, func(t *testing.T) {
94+
// Check for Parse Error explicitly
95+
err := ParseMessage(msg, bytes.NewBuffer(test.MessageBytes))
96+
97+
// --- NEW LOGIC START ---
98+
if test.ExpectParseError {
99+
if err == nil {
100+
t.Errorf("%v: Expected ParseMessage to fail, but it succeeded", test.TestName)
101+
}
102+
return
103+
}
104+
// --- NEW LOGIC END ---
96105

97-
switch {
98-
case reject == nil && test.DoNotExpectReject:
99-
continue
106+
if err != nil {
107+
t.Fatalf("ParseMessage failed: %v", err)
108+
}
109+
//assert.Nil(t, ParseMessage(msg, bytes.NewBuffer(test.MessageBytes)))
110+
reject := test.Validator.Validate(msg)
100111

101-
case reject != nil && test.DoNotExpectReject:
102-
t.Errorf("%v: Unexpected reject: %v", test.TestName, reject)
103-
continue
112+
switch {
113+
case reject == nil && test.DoNotExpectReject:
114+
return
104115

105-
case reject == nil:
106-
t.Errorf("%v: Expected reject", test.TestName)
107-
continue
108-
}
116+
case reject != nil && test.DoNotExpectReject:
117+
t.Errorf("%v: Unexpected reject: %v", test.TestName, reject)
118+
return
109119

110-
if reject.RejectReason() != test.ExpectedRejectReason {
111-
t.Errorf("%v: Expected reason %v got %v", test.TestName, test.ExpectedRejectReason, reject.RejectReason())
112-
}
120+
case reject == nil:
121+
t.Errorf("%v: Expected reject", test.TestName)
122+
return
123+
}
113124

114-
switch {
115-
case reject.RefTagID() == nil && test.ExpectedRefTagID == nil:
116-
// OK, expected and actual ref tag not set.
117-
case reject.RefTagID() != nil && test.ExpectedRefTagID == nil:
118-
t.Errorf("%v: Unexpected RefTag '%v'", test.TestName, *reject.RefTagID())
119-
case reject.RefTagID() == nil && test.ExpectedRefTagID != nil:
120-
t.Errorf("%v: Expected RefTag '%v'", test.TestName, *test.ExpectedRefTagID)
121-
case *reject.RefTagID() == *test.ExpectedRefTagID:
122-
// OK, tags equal.
123-
default:
124-
t.Errorf("%v: Expected RefTag '%v' got '%v'", test.TestName, *test.ExpectedRefTagID, *reject.RefTagID())
125-
}
125+
if reject.RejectReason() != test.ExpectedRejectReason {
126+
t.Errorf("%v: Expected reason %v got %v", test.TestName, test.ExpectedRejectReason, reject.RejectReason())
127+
}
128+
129+
switch {
130+
case reject.RefTagID() == nil && test.ExpectedRefTagID == nil:
131+
// OK, expected and actual ref tag not set.
132+
case reject.RefTagID() != nil && test.ExpectedRefTagID == nil:
133+
t.Errorf("%v: Unexpected RefTag '%v'", test.TestName, *reject.RefTagID())
134+
case reject.RefTagID() == nil && test.ExpectedRefTagID != nil:
135+
t.Errorf("%v: Expected RefTag '%v'", test.TestName, *test.ExpectedRefTagID)
136+
case *reject.RefTagID() == *test.ExpectedRefTagID:
137+
// OK, tags equal.
138+
default:
139+
t.Errorf("%v: Expected RefTag '%v' got '%v'", test.TestName, *test.ExpectedRefTagID, *reject.RefTagID())
140+
}
141+
})
126142
}
127143
}
128144

@@ -1170,6 +1186,17 @@ func tcMultipleRepeatingGroupFields() validateTest {
11701186
}
11711187
}
11721188

1189+
func tcCheckSumValidation() validateTest {
1190+
dict, _ := datadictionary.Parse("spec/FIX43.xml")
1191+
validator := NewValidator(defaultValidatorSettings, dict, nil)
1192+
return validateTest{
1193+
TestName: "Checksum is incorrect",
1194+
Validator: validator,
1195+
MessageBytes: []byte("8=FIX.4.39=17635=D34=249=TW52=20140329-22:38:4556=ISLD11=ID453=2448=PARTYID452=3523=SUBID448=PARTYID2452=378=179=ACCOUNT80=121=140=154=138=20055=INTC60=20140329-22:38:4510=006"),
1196+
ExpectParseError: true,
1197+
}
1198+
}
1199+
11731200
func TestValidateVisitField(t *testing.T) {
11741201
fieldType0 := datadictionary.NewFieldType("myfield", 11, "STRING")
11751202
fieldDef0 := &datadictionary.FieldDef{FieldType: fieldType0}

0 commit comments

Comments
 (0)