diff --git a/model/manifest.go b/model/manifest.go index 7c09830a61..e82b3b5ae5 100644 --- a/model/manifest.go +++ b/model/manifest.go @@ -147,7 +147,7 @@ type Manifest struct { Id string `json:"id" yaml:"id"` // The name to be displayed for the plugin. - Name string `json:"name,omitempty" yaml:"name,omitempty"` + Name string `json:"name" yaml:"name"` // A description of what your plugin is and does. Description string `json:"description,omitempty" yaml:"description,omitempty"` @@ -329,6 +329,10 @@ func (m *Manifest) IsValid() error { return errors.New("invalid plugin ID") } + if strings.TrimSpace(m.Name) == "" { + return errors.New("a plugin name is needed") + } + if m.HomepageURL != "" && !IsValidHttpUrl(m.HomepageURL) { return errors.New("invalid HomepageURL") } diff --git a/model/manifest_test.go b/model/manifest_test.go index c4137ac5ee..fb07d51a62 100644 --- a/model/manifest_test.go +++ b/model/manifest_test.go @@ -23,16 +23,17 @@ func TestIsValid(t *testing.T) { manifest *Manifest ExpectError bool }{ - {"Invalid Id", &Manifest{Id: "some id"}, true}, - {"Invalid homePageURL", &Manifest{Id: "com.company.test", HomepageURL: "some url"}, true}, - {"Invalid supportURL", &Manifest{Id: "com.company.test", SupportURL: "some url"}, true}, - {"Invalid ReleaseNotesURL", &Manifest{Id: "com.company.test", ReleaseNotesURL: "some url"}, true}, - {"Invalid version", &Manifest{Id: "com.company.test", HomepageURL: "http://someurl.com", SupportURL: "http://someotherurl.com", Version: "version"}, true}, - {"Invalid min version", &Manifest{Id: "com.company.test", HomepageURL: "http://someurl.com", SupportURL: "http://someotherurl.com", Version: "5.10.0", MinServerVersion: "version"}, true}, - {"SettingSchema error", &Manifest{Id: "com.company.test", HomepageURL: "http://someurl.com", SupportURL: "http://someotherurl.com", Version: "5.10.0", MinServerVersion: "5.10.8", SettingsSchema: &PluginSettingsSchema{ + {"Invalid Id", &Manifest{Id: "some id", Name: "some name"}, true}, + {"Invalid Name", &Manifest{Id: "com.company.test", Name: " "}, true}, + {"Invalid homePageURL", &Manifest{Id: "com.company.test", Name: "some name", HomepageURL: "some url"}, true}, + {"Invalid supportURL", &Manifest{Id: "com.company.test", Name: "some name", SupportURL: "some url"}, true}, + {"Invalid ReleaseNotesURL", &Manifest{Id: "com.company.test", Name: "some name", ReleaseNotesURL: "some url"}, true}, + {"Invalid version", &Manifest{Id: "com.company.test", Name: "some name", HomepageURL: "http://someurl.com", SupportURL: "http://someotherurl.com", Version: "version"}, true}, + {"Invalid min version", &Manifest{Id: "com.company.test", Name: "some name", HomepageURL: "http://someurl.com", SupportURL: "http://someotherurl.com", Version: "5.10.0", MinServerVersion: "version"}, true}, + {"SettingSchema error", &Manifest{Id: "com.company.test", Name: "some name", HomepageURL: "http://someurl.com", SupportURL: "http://someotherurl.com", Version: "5.10.0", MinServerVersion: "5.10.8", SettingsSchema: &PluginSettingsSchema{ Settings: []*PluginSetting{{Type: "Invalid"}}, }}, true}, - {"Minimal valid manifest", &Manifest{Id: "com.company.test"}, false}, + {"Minimal valid manifest", &Manifest{Id: "com.company.test", Name: "some name"}, false}, {"Happy case", &Manifest{ Id: "com.company.test", Name: "thename",