From a516802508c2239b7782b8c3fd26b6d582357e21 Mon Sep 17 00:00:00 2001 From: Joel Hendrix Date: Fri, 29 Apr 2022 10:41:00 -0700 Subject: [PATCH] Use case-insensitive comparison for success case (#17773) * Use case-insensitive comparison for success case * update test --- sdk/azcore/internal/pollers/armloc/loc.go | 2 +- sdk/azcore/internal/pollers/async/async.go | 2 +- sdk/azcore/internal/pollers/body/body.go | 2 +- sdk/azcore/internal/pollers/op/op.go | 2 +- sdk/azcore/internal/pollers/op/op_test.go | 4 ++-- sdk/azcore/internal/pollers/util.go | 5 +++++ 6 files changed, 11 insertions(+), 6 deletions(-) diff --git a/sdk/azcore/internal/pollers/armloc/loc.go b/sdk/azcore/internal/pollers/armloc/loc.go index 4a6cea0d663e..9e2bc07d76d9 100644 --- a/sdk/azcore/internal/pollers/armloc/loc.go +++ b/sdk/azcore/internal/pollers/armloc/loc.go @@ -62,7 +62,7 @@ func (p *Poller) URL() string { // State returns the current state of the LRO. func (p *Poller) State() pollers.OperationState { - if p.CurState == pollers.StatusSucceeded { + if pollers.Succeeded(p.CurState) { return pollers.OperationStateSucceeded } else if pollers.IsTerminalState(p.CurState) { return pollers.OperationStateFailed diff --git a/sdk/azcore/internal/pollers/async/async.go b/sdk/azcore/internal/pollers/async/async.go index 72fc389cdf6c..214b41d8258d 100644 --- a/sdk/azcore/internal/pollers/async/async.go +++ b/sdk/azcore/internal/pollers/async/async.go @@ -87,7 +87,7 @@ func New(resp *http.Response, finalState pollers.FinalStateVia, pollerID string) // State returns the current state of the LRO. func (p *Poller) State() pollers.OperationState { - if p.CurState == pollers.StatusSucceeded { + if pollers.Succeeded(p.CurState) { return pollers.OperationStateSucceeded } else if pollers.IsTerminalState(p.CurState) { return pollers.OperationStateFailed diff --git a/sdk/azcore/internal/pollers/body/body.go b/sdk/azcore/internal/pollers/body/body.go index 21c6fb5b6e09..4b76ea6af664 100644 --- a/sdk/azcore/internal/pollers/body/body.go +++ b/sdk/azcore/internal/pollers/body/body.go @@ -75,7 +75,7 @@ func (p *Poller) URL() string { // State returns the current state of the LRO. func (p *Poller) State() pollers.OperationState { - if p.CurState == pollers.StatusSucceeded { + if pollers.Succeeded(p.CurState) { return pollers.OperationStateSucceeded } else if pollers.IsTerminalState(p.CurState) { return pollers.OperationStateFailed diff --git a/sdk/azcore/internal/pollers/op/op.go b/sdk/azcore/internal/pollers/op/op.go index 04b581cdb892..3020f6597d2d 100644 --- a/sdk/azcore/internal/pollers/op/op.go +++ b/sdk/azcore/internal/pollers/op/op.go @@ -83,7 +83,7 @@ func (p *Poller) URL() string { // State returns the current state of the LRO. func (p *Poller) State() pollers.OperationState { - if p.CurState == pollers.StatusSucceeded { + if pollers.Succeeded(p.CurState) { return pollers.OperationStateSucceeded } else if pollers.IsTerminalState(p.CurState) { return pollers.OperationStateFailed diff --git a/sdk/azcore/internal/pollers/op/op_test.go b/sdk/azcore/internal/pollers/op/op_test.go index 77b0ff4ea585..692603124186 100644 --- a/sdk/azcore/internal/pollers/op/op_test.go +++ b/sdk/azcore/internal/pollers/op/op_test.go @@ -167,7 +167,7 @@ func TestUpdateSucceeded(t *testing.T) { if u := poller.URL(); u != fakePollingURL2 { t.Fatalf("unexpected URL %s", u) } - resp = createResponse(strings.NewReader(`{ "status": "Succeeded" }`)) + resp = createResponse(strings.NewReader(`{ "status": "succeeded" }`)) if err := poller.Update(resp); err != nil { t.Fatal(err) } @@ -184,7 +184,7 @@ func TestUpdateResourceLocation(t *testing.T) { if err != nil { t.Fatal(err) } - resp = createResponse(strings.NewReader(`{ "status": "Succeeded", "resourceLocation": "https://foo.bar.baz/resource2" }`)) + resp = createResponse(strings.NewReader(`{ "status": "succeeded", "resourceLocation": "https://foo.bar.baz/resource2" }`)) if err := poller.Update(resp); err != nil { t.Fatal(err) } diff --git a/sdk/azcore/internal/pollers/util.go b/sdk/azcore/internal/pollers/util.go index b22d8504b73c..4aea87930a37 100644 --- a/sdk/azcore/internal/pollers/util.go +++ b/sdk/azcore/internal/pollers/util.go @@ -78,6 +78,11 @@ func Failed(s string) bool { return strings.EqualFold(s, StatusFailed) || strings.EqualFold(s, StatusCanceled) } +// Succeeded returns true if the LRO's state is terminal success. +func Succeeded(s string) bool { + return strings.EqualFold(s, StatusSucceeded) +} + // returns true if the LRO response contains a valid HTTP status code func StatusCodeValid(resp *http.Response) bool { return exported.HasStatusCode(resp, http.StatusOK, http.StatusAccepted, http.StatusCreated, http.StatusNoContent)