Skip to content

Commit

Permalink
fix(sql storage): Query() should return ErrReleaseNotFound immediatel…
Browse files Browse the repository at this point in the history
…y when no records are found

Signed-off-by: Mike Ng <ming@redhat.com>
  • Loading branch information
mikeshng committed Jul 16, 2020
1 parent ae8fcf4 commit b86105a
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 4 deletions.
8 changes: 4 additions & 4 deletions pkg/storage/driver/sql.go
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,10 @@ func (s *SQL) Query(labels map[string]string) ([]*rspb.Release, error) {
return nil, err
}

if len(records) == 0 {
return nil, ErrReleaseNotFound
}

var releases []*rspb.Release
for _, record := range records {
release, err := decodeRelease(record.Body)
Expand All @@ -320,10 +324,6 @@ func (s *SQL) Query(labels map[string]string) ([]*rspb.Release, error) {
releases = append(releases, release)
}

if len(releases) == 0 {
return nil, ErrReleaseNotFound
}

return releases, nil
}

Expand Down
21 changes: 21 additions & 0 deletions pkg/storage/driver/sql_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,11 @@ func TestSqlUpdate(t *testing.T) {

func TestSqlQuery(t *testing.T) {
// Reflect actual use cases in ../storage.go
labelSetUnknown := map[string]string{
"name": "smug-pigeon",
"owner": sqlReleaseDefaultOwner,
"status": "unknown",
}
labelSetDeployed := map[string]string{
"name": "smug-pigeon",
"owner": sqlReleaseDefaultOwner,
Expand Down Expand Up @@ -320,6 +325,15 @@ func TestSqlQuery(t *testing.T) {
sqlReleaseTableNamespaceColumn,
)

mock.
ExpectQuery(regexp.QuoteMeta(query)).
WithArgs("smug-pigeon", sqlReleaseDefaultOwner, "unknown", "default").
WillReturnRows(
mock.NewRows([]string{
sqlReleaseTableBodyColumn,
}),
).RowsWillBeClosed()

mock.
ExpectQuery(regexp.QuoteMeta(query)).
WithArgs("smug-pigeon", sqlReleaseDefaultOwner, "deployed", "default").
Expand Down Expand Up @@ -353,6 +367,13 @@ func TestSqlQuery(t *testing.T) {
),
).RowsWillBeClosed()

_, err := sqlDriver.Query(labelSetUnknown)
if err == nil {
t.Errorf("Expected error {%v}, got nil", ErrReleaseNotFound)
} else if err != ErrReleaseNotFound {
t.Fatalf("failed to query for unknown smug-pigeon release: %v", err)
}

results, err := sqlDriver.Query(labelSetDeployed)
if err != nil {
t.Fatalf("failed to query for deployed smug-pigeon release: %v", err)
Expand Down

0 comments on commit b86105a

Please sign in to comment.