################################################################################
#  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 Operator Role

templates:
- rbac/role.yaml

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

tests:
- it: Should not create any role if `rbac.create` is `false`
  set:
    rbac:
      create: false
  asserts:
  - hasDocuments:
      count: 0

- it: Should create operator role in each of the namespaces which should be watched
  set:
    rbac:
      create: true
    operatorRole:
      create: true
    watchNamespaces:
    - ns1
    - ns2
  documentIndex: 0
  asserts:
  - containsDocument:
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      name: flink-operator
      namespace: ns1

- it: Should create operator role in each of the namespaces which should be watched
  set:
    rbac:
      create: true
      operatorRole:
        create: true
    watchNamespaces:
    - ns1
    - ns2
  documentIndex: 1
  asserts:
  - containsDocument:
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      name: flink-operator
      namespace: ns2

- it: Should create operator role in the release namespace if not watched
  set:
    rbac:
      create: true
      operatorRole:
        create: true
      jobRole:
        create: true
    watchNamespaces:
    - ns1
    - ns2
  documentIndex: 2
  asserts:
  - containsDocument:
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      name: flink-operator
      namespace: flink-operator
