################################################################################
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
# limitations under the License.
################################################################################

suite: Test ValidatingWebhookConfiguration

templates:
- webhook/validating_webhook_configuration.yaml

release:
  name: flink-operator
  namespace: flink-operator

tests:
- it: Should not create validating webhook configuration if `webhook.validator.create` is `false`
  set:
    webhook:
      create: true
      validator:
        create: false
  asserts:
  - hasDocuments:
      count: 0

- it: Should create validating webhook configuration if both `webhook.create` and `webhook.validator.create` are `true`
  set:
    webhook:
      create: true
      validator:
        create: true
  asserts:
  - containsDocument:
      apiVersion: admissionregistration.k8s.io/v1
      kind: ValidatingWebhookConfiguration
      name: flink-operator-flink-operator-webhook-configuration

- it: Should add namespace selector if `watchNamespaces` is set
  set:
    watchNamespaces:
    - ns1
    - ns2
    webhook:
      create: true
      validator:
        create: true
  asserts:
  - contains:
      path: webhooks[?(@.name=="validationwebhook.flink.apache.org")].namespaceSelector.matchExpressions
      content:
        key: kubernetes.io/metadata.name
        operator: In
        values:
        - ns1
        - ns2
