diff --git a/model/manifest.go b/model/manifest.go index b1b3a9237c..e693c19996 100644 --- a/model/manifest.go +++ b/model/manifest.go @@ -325,39 +325,43 @@ func (m *Manifest) IsValid() error { return errors.New("invalid plugin ID") } - if m.HomepageURL == "" || !IsValidHttpUrl(m.HomepageURL) { + if m.HomepageURL != "" && !IsValidHttpUrl(m.HomepageURL) { return errors.New("invalid HomepageURL") } - if m.SupportURL == "" || !IsValidHttpUrl(m.SupportURL) { + if m.SupportURL != "" && !IsValidHttpUrl(m.SupportURL) { return errors.New("invalid SupportURL") } if m.ReleaseNotesURL != "" && !IsValidHttpUrl(m.ReleaseNotesURL) { - return errors.New("invalid SupportURL") + return errors.New("invalid ReleaseNotesURL") } - _, err := semver.Parse(m.Version) - if err != nil { - return errors.Wrap(err, "failed to parse Version") + if m.Version != "" { + _, err := semver.Parse(m.Version) + if err != nil { + return errors.Wrap(err, "failed to parse Version") + } } - _, err2 := semver.Parse(m.MinServerVersion) - if err2 != nil { - return errors.Wrap(err2, "failed to parse MinServerVersion") + if m.MinServerVersion != "" { + _, err := semver.Parse(m.MinServerVersion) + if err != nil { + return errors.Wrap(err, "failed to parse MinServerVersion") + } } if m.SettingsSchema != nil { - err3 := m.SettingsSchema.isValidSchema() - if err3 != nil { - return errors.Wrap(err3, "invalid settings schema") + err := m.SettingsSchema.isValid() + if err != nil { + return errors.Wrap(err, "invalid settings schema") } } return nil } -func (s *PluginSettingsSchema) isValidSchema() error { +func (s *PluginSettingsSchema) isValid() error { for _, setting := range s.Settings { err := setting.isValid() if err != nil { diff --git a/model/manifest_test.go b/model/manifest_test.go index cf4b2061d6..adb51bd9ec 100644 --- a/model/manifest_test.go +++ b/model/manifest_test.go @@ -32,6 +32,7 @@ func TestIsValid(t *testing.T) { {"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{ Settings: []*PluginSetting{{Type: "Invalid"}}, }}, true}, + {"Minimal valid manifest", &Manifest{Id: "com.company.test"}, false}, {"Happy case", &Manifest{ Id: "com.company.test", Name: "thename", @@ -46,7 +47,6 @@ func TestIsValid(t *testing.T) { }, Webapp: &ManifestWebapp{ BundlePath: "thebundlepath", - BundleHash: []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, }, SettingsSchema: &PluginSettingsSchema{ Header: "theheadertext", @@ -94,7 +94,7 @@ func TestIsValidSettingsSchema(t *testing.T) { for _, tc := range testCases { t.Run(tc.Title, func(t *testing.T) { - err := tc.settingsSchema.isValidSchema() + err := tc.settingsSchema.isValid() if tc.ExpectError { assert.Error(t, err) } else {