}) }) Describe("Validate", func() { var assertDesiredLRPValidationFailsWithMessage = func(lrp models.DesiredLRP, substring string) { validationErr := lrp.Validate() Expect(validationErr).To(HaveOccurred()) Expect(validationErr.Error()).To(ContainSubstring(substring)) } Context("process_guid only contains `A-Z`, `a-z`, `0-9`, `-`, and `_`", func() { validGuids := []string{"a", "A", "0", "-", "_", "-aaaa", "_-aaa", "09a87aaa-_aASKDn"} for _, validGuid := range validGuids { func(validGuid string) { It(fmt.Sprintf("'%s' is a valid process_guid", validGuid), func() { desiredLRP.ProcessGuid = validGuid err := desiredLRP.Validate() Expect(err).NotTo(HaveOccurred()) }) }(validGuid) } invalidGuids := []string{"", "bang!", "!!!", "\\slash", "star*", "params()", "invalid/key", "with.dots"} for _, invalidGuid := range invalidGuids { func(invalidGuid string) { It(fmt.Sprintf("'%s' is an invalid process_guid", invalidGuid), func() { desiredLRP.ProcessGuid = invalidGuid assertDesiredLRPValidationFailsWithMessage(desiredLRP, "process_guid") }) }(invalidGuid) }