Skip to content

Commit 3bca3df

Browse files
byteddaveshanley
authored andcommitted
Add tests for opt-in readOnly/writeOnly rejection in strict mode
Tests for #90 - 10 strict-level tests: rejection on/off, direction-specific, nested, allOf, combined flags - 2 error constructor tests for ReadOnlyPropertyError/WriteOnlyPropertyError - 2 integration tests for request/response dispatch
1 parent d6a52f6 commit 3bca3df

3 files changed

Lines changed: 646 additions & 0 deletions

File tree

errors/strict_errors_test.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,58 @@ func TestUndeclaredCookieError(t *testing.T) {
167167
assert.Equal(t, "tracking", err.ParameterName)
168168
}
169169

170+
func TestReadOnlyPropertyError(t *testing.T) {
171+
err := ReadOnlyPropertyError(
172+
"$.body.id",
173+
"id",
174+
"user-123",
175+
"/users",
176+
"POST",
177+
10,
178+
5,
179+
)
180+
181+
assert.NotNil(t, err)
182+
assert.Equal(t, StrictValidationType, err.ValidationType)
183+
assert.Equal(t, StrictSubTypeReadOnlyProperty, err.ValidationSubType)
184+
assert.Contains(t, err.Message, "readOnly")
185+
assert.Contains(t, err.Message, "'id'")
186+
assert.Contains(t, err.Message, "'$.body.id'")
187+
assert.Contains(t, err.Reason, "readOnly")
188+
assert.Contains(t, err.HowToFix, "id")
189+
assert.Equal(t, "/users", err.RequestPath)
190+
assert.Equal(t, "POST", err.RequestMethod)
191+
assert.Equal(t, "id", err.ParameterName)
192+
assert.Equal(t, 10, err.SpecLine)
193+
assert.Equal(t, 5, err.SpecCol)
194+
}
195+
196+
func TestWriteOnlyPropertyError(t *testing.T) {
197+
err := WriteOnlyPropertyError(
198+
"$.body.password",
199+
"password",
200+
"secret",
201+
"/users/123",
202+
"GET",
203+
20,
204+
3,
205+
)
206+
207+
assert.NotNil(t, err)
208+
assert.Equal(t, StrictValidationType, err.ValidationType)
209+
assert.Equal(t, StrictSubTypeWriteOnlyProperty, err.ValidationSubType)
210+
assert.Contains(t, err.Message, "writeOnly")
211+
assert.Contains(t, err.Message, "'password'")
212+
assert.Contains(t, err.Message, "'$.body.password'")
213+
assert.Contains(t, err.Reason, "writeOnly")
214+
assert.Contains(t, err.HowToFix, "password")
215+
assert.Equal(t, "/users/123", err.RequestPath)
216+
assert.Equal(t, "GET", err.RequestMethod)
217+
assert.Equal(t, "password", err.ParameterName)
218+
assert.Equal(t, 20, err.SpecLine)
219+
assert.Equal(t, 3, err.SpecCol)
220+
}
221+
170222
func TestTruncateForContext_String(t *testing.T) {
171223
// Short string should not be truncated
172224
short := truncateForContext("short")

0 commit comments

Comments
 (0)