From 656a363b6b3114cbc7f85a088e6c8cffda79b0c3 Mon Sep 17 00:00:00 2001 From: Danilo Pantani Date: Thu, 23 Jan 2025 17:21:30 -0300 Subject: [PATCH 1/6] add field max lenght --- ignite/services/scaffolder/component.go | 2 +- ignite/services/scaffolder/type.go | 10 ++++++++ ignite/services/scaffolder/type_test.go | 34 ++++++++++++++++++++++++- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/ignite/services/scaffolder/component.go b/ignite/services/scaffolder/component.go index e7c22232ad..cb985be446 100644 --- a/ignite/services/scaffolder/component.go +++ b/ignite/services/scaffolder/component.go @@ -193,7 +193,7 @@ func checkGoReservedWord(name string) error { "uintptr": return errors.Errorf("%s is a Go built-in identifier", name) } - return nil + return checkMaxLength(name) } // containsCustomTypes returns true if the list of fields contains at least one custom type. diff --git a/ignite/services/scaffolder/type.go b/ignite/services/scaffolder/type.go index e10d34611a..519f403c19 100644 --- a/ignite/services/scaffolder/type.go +++ b/ignite/services/scaffolder/type.go @@ -19,6 +19,8 @@ import ( "github.com/ignite/cli/v29/ignite/templates/typed/singleton" ) +const maxLength = 256 + // AddTypeOption configures options for AddType. type AddTypeOption func(*addTypeOptions) @@ -214,6 +216,14 @@ func (s Scaffolder) AddType( return s.Run(append(gens, g)...) } +// checkMaxLength checks if the index length exceeds the maximum allowed length +func checkMaxLength(name string) error { + if len(name) > maxLength { + return errors.Errorf("index exceeds maximum allowed length of %d characters", maxLength) + } + return nil +} + // checkForbiddenTypeIndex returns true if the name is forbidden as a index name. func checkForbiddenTypeIndex(index string) error { indexSplit := strings.Split(index, datatype.Separator) diff --git a/ignite/services/scaffolder/type_test.go b/ignite/services/scaffolder/type_test.go index 6c15220f29..68ecacd9de 100644 --- a/ignite/services/scaffolder/type_test.go +++ b/ignite/services/scaffolder/type_test.go @@ -6,6 +6,7 @@ import ( "github.com/stretchr/testify/require" "github.com/ignite/cli/v29/ignite/pkg/multiformatname" + "github.com/ignite/cli/v29/ignite/pkg/randstr" "github.com/ignite/cli/v29/ignite/templates/field" "github.com/ignite/cli/v29/ignite/templates/field/datatype" ) @@ -216,5 +217,36 @@ func TestCheckForbiddenTypeIndexField(t *testing.T) { } } -func TestAddType(_ *testing.T) { +func Test_checkMaxLength(t *testing.T) { + tests := []struct { + desc string + name string + shouldError bool + }{ + { + desc: "should pass with valid name", + name: "validName", + shouldError: false, + }, + { + desc: "should fail with name exceeding max length", + name: randstr.Runes(257), + shouldError: true, + }, + { + desc: "should pass with name at max length", + name: randstr.Runes(256), + shouldError: false, + }, + } + for _, tc := range tests { + t.Run(tc.desc, func(t *testing.T) { + err := checkMaxLength(tc.name) + if tc.shouldError { + require.Error(t, err) + return + } + require.NoError(t, err) + }) + } } From a215864b640d5f215069b167a1f51de4c46b20b7 Mon Sep 17 00:00:00 2001 From: Danilo Pantani Date: Thu, 23 Jan 2025 17:24:31 -0300 Subject: [PATCH 2/6] add changelog --- changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.md b/changelog.md index e51c988a7e..38e50af71d 100644 --- a/changelog.md +++ b/changelog.md @@ -22,6 +22,7 @@ - [#4436](https://github.com/ignite/cli/pull/4436) Return tx hash to the faucet API - [#4437](https://github.com/ignite/cli/pull/4437) Remove module placeholders - [#4289](https://github.com/ignite/cli/pull/4289), [#4423](https://github.com/ignite/cli/pull/4423), [#4432](https://github.com/ignite/cli/pull/4432) Cosmos SDK v0.52 support +- [#4480](https://github.com/ignite/cli/pull/4480) Add field max length ### Changes From 031880f8d58d3354492efd621941a20ef9490361 Mon Sep 17 00:00:00 2001 From: Danilo Pantani Date: Thu, 23 Jan 2025 23:00:00 -0300 Subject: [PATCH 3/6] Update ignite/services/scaffolder/type.go --- ignite/services/scaffolder/type.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ignite/services/scaffolder/type.go b/ignite/services/scaffolder/type.go index 519f403c19..90c45739ee 100644 --- a/ignite/services/scaffolder/type.go +++ b/ignite/services/scaffolder/type.go @@ -19,7 +19,7 @@ import ( "github.com/ignite/cli/v29/ignite/templates/typed/singleton" ) -const maxLength = 256 +const maxLength = 126 // AddTypeOption configures options for AddType. type AddTypeOption func(*addTypeOptions) From 6f3096d058fea6c1e8f19922242c9c1c4583bb27 Mon Sep 17 00:00:00 2001 From: Danilo Pantani Date: Thu, 23 Jan 2025 23:00:34 -0300 Subject: [PATCH 4/6] Update ignite/services/scaffolder/type.go --- ignite/services/scaffolder/type.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ignite/services/scaffolder/type.go b/ignite/services/scaffolder/type.go index 90c45739ee..892bf695f9 100644 --- a/ignite/services/scaffolder/type.go +++ b/ignite/services/scaffolder/type.go @@ -19,7 +19,7 @@ import ( "github.com/ignite/cli/v29/ignite/templates/typed/singleton" ) -const maxLength = 126 +const maxLength = 64 // AddTypeOption configures options for AddType. type AddTypeOption func(*addTypeOptions) From eb7901e08a450c4fb5660b752e957701af7ebc76 Mon Sep 17 00:00:00 2001 From: Danilo Pantani Date: Thu, 30 Jan 2025 08:08:15 -0300 Subject: [PATCH 5/6] fix unit tests --- ignite/services/scaffolder/type_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ignite/services/scaffolder/type_test.go b/ignite/services/scaffolder/type_test.go index 68ecacd9de..e083ed8df5 100644 --- a/ignite/services/scaffolder/type_test.go +++ b/ignite/services/scaffolder/type_test.go @@ -230,12 +230,12 @@ func Test_checkMaxLength(t *testing.T) { }, { desc: "should fail with name exceeding max length", - name: randstr.Runes(257), + name: randstr.Runes(maxLength + 1), shouldError: true, }, { desc: "should pass with name at max length", - name: randstr.Runes(256), + name: randstr.Runes(maxLength), shouldError: false, }, } From bc6b053f5b2efc5bc5549a0297286c0a1311bae0 Mon Sep 17 00:00:00 2001 From: Danilo Pantani Date: Thu, 30 Jan 2025 16:09:40 -0300 Subject: [PATCH 6/6] fix comments --- ignite/services/scaffolder/type.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ignite/services/scaffolder/type.go b/ignite/services/scaffolder/type.go index 892bf695f9..ef140400e5 100644 --- a/ignite/services/scaffolder/type.go +++ b/ignite/services/scaffolder/type.go @@ -216,7 +216,7 @@ func (s Scaffolder) AddType( return s.Run(append(gens, g)...) } -// checkMaxLength checks if the index length exceeds the maximum allowed length +// checkMaxLength checks if the index length exceeds the maximum allowed length. func checkMaxLength(name string) error { if len(name) > maxLength { return errors.Errorf("index exceeds maximum allowed length of %d characters", maxLength) @@ -224,7 +224,7 @@ func checkMaxLength(name string) error { return nil } -// checkForbiddenTypeIndex returns true if the name is forbidden as a index name. +// checkForbiddenTypeIndex returns true if the name is forbidden as an index name. func checkForbiddenTypeIndex(index string) error { indexSplit := strings.Split(index, datatype.Separator) if len(indexSplit) > 1 {