github.com/operator-framework/operator-lifecycle-manager@v0.30.0/test/e2e/util/gomega/subscription_matchers.go (about) 1 package gomega 2 3 import ( 4 "fmt" 5 6 "github.com/onsi/gomega/matchers" 7 "github.com/onsi/gomega/types" 8 "github.com/operator-framework/api/pkg/operators/v1alpha1" 9 "github.com/operator-framework/operator-lifecycle-manager/test/e2e/util" 10 ) 11 12 func HaveSubscriptionState(state v1alpha1.SubscriptionState) types.GomegaMatcher { 13 return &SubscriptionStateMatcher{ 14 EqualMatcher: &matchers.EqualMatcher{ 15 Expected: state, 16 }, 17 } 18 } 19 20 type SubscriptionStateMatcher struct { 21 *matchers.EqualMatcher 22 } 23 24 func (s *SubscriptionStateMatcher) FailureMessage(actual interface{}) (message string) { 25 return fmt.Sprintf("expected subscription status.subscriptionState to be '%s':\n%s\n", s.Expected, util.ObjectToJsonString(actual)) 26 } 27 28 func (s *SubscriptionStateMatcher) NegatedFailureMessage(actual interface{}) (message string) { 29 return fmt.Sprintf("expected subscription status.subscriptionState to NOT be '%s'\n%s\n", s.Expected, util.ObjectToJsonString(actual)) 30 } 31 32 func (s *SubscriptionStateMatcher) Match(actual interface{}) (bool, error) { 33 switch actual := actual.(type) { 34 case *v1alpha1.Subscription: 35 util.Logf("expecting subscription state '%s' to be '%s'", actual.Status.State, s.Expected) 36 return s.EqualMatcher.Match(actual.Status.State) 37 default: 38 return false, fmt.Errorf("actual %v is not a subscription", actual) 39 } 40 } 41 42 type ContainSubscriptionConditionOfTypeMatcher struct { 43 *matchers.ContainElementMatcher 44 } 45 46 func ContainSubscriptionConditionOfType(conditionType v1alpha1.SubscriptionConditionType) types.GomegaMatcher { 47 return &ContainSubscriptionConditionOfTypeMatcher{ 48 ContainElementMatcher: &matchers.ContainElementMatcher{ 49 Element: conditionType, 50 }, 51 } 52 } 53 54 func (s *ContainSubscriptionConditionOfTypeMatcher) Match(actual interface{}) (bool, error) { 55 switch actual := actual.(type) { 56 case *v1alpha1.Subscription: 57 var conditionTypes []v1alpha1.SubscriptionConditionType 58 for _, condition := range actual.Status.Conditions { 59 conditionTypes = append(conditionTypes, condition.Type) 60 } 61 util.Logf("expecting subscription condition type '%s' to be in %s", s.Element, conditionTypes) 62 return s.ContainElementMatcher.Match(conditionTypes) 63 default: 64 return false, fmt.Errorf("actual %v is not a subscription", actual) 65 } 66 }