-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] Add choice_rule payload validation #187
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -75,6 +75,33 @@ | |
end | ||
end | ||
|
||
context "with a missing compare key" do | ||
let(:payload) { {"Variable" => "$.foo", "Next" => "FirstMatchState"} } | ||
let(:input) { {"foo" => "bar"} } | ||
|
||
it "raises an exception" do | ||
expect { subject }.to raise_exception(Floe::InvalidWorkflowError, "Data-test Expression Choice Rule must have a compare key") | ||
end | ||
end | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. context "with an invalid compare key" do
let(:payload) { {"Variable" => "$.foo", "InvalidCompare" => "$.bar", "Next" => "FirstMatchState"} }
let(:input) { {"foo" => 0, "bar" => 1} }
it "fails" do
expect { subject }.to raise_exception(Floe::InvalidWorkflowError)
end
end There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 👍 yeah I added two more tests one with a typo'd key which would have succeeded on the prior regex approach, and one testing if you have multiple compare keys |
||
|
||
context "with a typo'd compare key" do | ||
let(:payload) { {"Variable" => "$.foo", "StringMatchez" => "bar", "Next" => "FirstMatchState"} } | ||
let(:input) { {"foo" => "bar"} } | ||
|
||
it "raises an exception" do | ||
expect { subject }.to raise_exception(Floe::InvalidWorkflowError, "Data-test Expression Choice Rule must have a compare key") | ||
end | ||
end | ||
|
||
context "with two compare keys" do | ||
let(:payload) { {"Variable" => "$.foo", "StringMatches" => "bar", "NumericEquals" => 1, "Next" => "FirstMatchState"} } | ||
let(:input) { {"foo" => "bar"} } | ||
|
||
it "raises an exception" do | ||
expect { subject }.to raise_exception(Floe::InvalidWorkflowError, "Data-test Expression Choice Rule must have only one compare key") | ||
end | ||
end | ||
|
||
context "with IsNull" do | ||
let(:payload) { {"Variable" => "$.foo", "IsNull" => true} } | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
would have preferred using a hash mapping the string to the operation.
Then we could drop the switch
But this is good for now
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a good idea let me give that a shot