Skip to content

Commit

Permalink
cli: port metadataobject/apilimits to use internal/errors
Browse files Browse the repository at this point in the history
PR-URL: hasura/graphql-engine-mono#6397
Co-authored-by: Mohd Bilal <24944223+m-Bilal@users.noreply.github.com>
GitOrigin-RevId: ff266638f767da75da584f366d1a464ba6b70f0c
  • Loading branch information
2 people authored and hasura-bot committed Oct 27, 2022
1 parent a19a0c4 commit ca6605a
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 16 deletions.
24 changes: 17 additions & 7 deletions cli/internal/metadataobject/api_limits/api_limits.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"io/ioutil"
"path/filepath"

"github.com/hasura/graphql-engine/cli/v2/internal/errors"
"github.com/hasura/graphql-engine/cli/v2/internal/metadataobject"

"github.com/sirupsen/logrus"
Expand All @@ -30,14 +31,15 @@ func (o *MetadataObject) Validate() error {
}

func (o *MetadataObject) CreateFiles() error {
var op errors.Op = "apilimits.MetadataObject.CreateFiles"
var v interface{}
data, err := yaml.Marshal(v)
if err != nil {
return err
return errors.E(op, err)
}
err = ioutil.WriteFile(filepath.Join(o.MetadataDir, o.Filename()), data, 0644)
if err != nil {
return err
return errors.E(op, err)
}
return nil
}
Expand All @@ -51,9 +53,10 @@ type apiLimitsObject struct {
}

func (o *MetadataObject) Build() (map[string]interface{}, error) {
var op errors.Op = "apilimits.MetadataObject.Build"
data, err := metadataobject.ReadMetadataFile(filepath.Join(o.MetadataDir, o.Filename()))
if err != nil {
return nil, o.error(err)
return nil, errors.E(op, o.error(err))
}
// The reason for loosely typing this variable to a struct rather than using a catch-all yaml.Node
// is because, if we were to do something like
Expand All @@ -70,13 +73,18 @@ func (o *MetadataObject) Build() (map[string]interface{}, error) {
var obj apiLimitsObject
err = yaml.Unmarshal(data, &obj)
if err != nil {
return nil, o.error(err)
return nil, errors.E(op, errors.KindBadInput, o.error(err))
}
return map[string]interface{}{o.Key(): obj}, nil
}

func (o *MetadataObject) Export(metadata map[string]yaml.Node) (map[string][]byte, error) {
return metadataobject.DefaultExport(o, metadata, o.error, metadataobject.DefaultObjectTypeMapping)
var op errors.Op = "apilimits.MetadataObject.Export"
b, err := metadataobject.DefaultExport(o, metadata, o.error, metadataobject.DefaultObjectTypeMapping)
if err != nil {
return nil, errors.E(op, err)
}
return b, nil
}

func (o *MetadataObject) Key() string {
Expand All @@ -88,18 +96,20 @@ func (o *MetadataObject) Filename() string {
}

func (o *MetadataObject) GetFiles() ([]string, error) {
var op errors.Op = "apilimits.MetadataObject.GetFiles"
rootFile := filepath.Join(o.BaseDirectory(), o.Filename())
files, err := metadataobject.DefaultGetFiles(rootFile)
if err != nil {
return nil, o.error(err)
return nil, errors.E(op, o.error(err))
}
return files, nil
}

func (o *MetadataObject) WriteDiff(opts metadataobject.WriteDiffOpts) error {
var op errors.Op = "apilimits.MetadataObject.WriteDiff"
err := metadataobject.DefaultWriteDiff(metadataobject.DefaultWriteDiffOpts{From: o, WriteDiffOpts: opts})
if err != nil {
return o.error(err)
return errors.E(op, o.error(err))
}
return nil
}
Expand Down
22 changes: 13 additions & 9 deletions cli/internal/metadataobject/api_limits/api_limits_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (

"github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestMetadataObject_Build(t *testing.T) {
Expand All @@ -23,6 +24,7 @@ func TestMetadataObject_Build(t *testing.T) {
fields fields
wantGolden string
wantErr bool
assertErr require.ErrorAssertionFunc
}{
{
"t1",
Expand All @@ -33,6 +35,7 @@ func TestMetadataObject_Build(t *testing.T) {
},
"testdata/build_test/t1/want.golden.json",
false,
require.NoError,
},
}
for _, tt := range tests {
Expand All @@ -42,9 +45,8 @@ func TestMetadataObject_Build(t *testing.T) {
logger: tt.fields.logger,
}
got, err := o.Build()
if tt.wantErr {
assert.Error(t, err)
} else {
tt.assertErr(t, err)
if !tt.wantErr {
assert.NoError(t, err)
gotbs, err := yaml.Marshal(got)
assert.NoError(t, err)
Expand All @@ -70,12 +72,13 @@ func TestMetadataObject_Export(t *testing.T) {
metadata map[string]yaml.Node
}
tests := []struct {
id string
name string
fields fields
args args
want map[string][]byte
wantErr bool
id string
name string
fields fields
args args
want map[string][]byte
wantErr bool
assertErr require.ErrorAssertionFunc
}{
{
"t1",
Expand Down Expand Up @@ -104,6 +107,7 @@ rate_limit:
max_reqs_per_min: 1
`)},
false,
require.NoError,
},
}
for _, tt := range tests {
Expand Down

0 comments on commit ca6605a

Please sign in to comment.