suite: Test spark service account

templates:
  - spark-serviceaccount.yaml

release:
  name: spark-operator

tests:
  - it: Should not render service account if serviceAccounts.spark.create is false
    set:
      serviceAccounts:
        spark:
          create: false
    asserts:
      - hasDocuments:
          count: 0

  - it: Should render service account if serviceAccounts.spark.create is true
    set:
      serviceAccounts:
        spark:
          create: true
    asserts:
      - containsDocument:
          apiVersion: v1
          kind: ServiceAccount
          name: spark-operator-spark

  - it: Should use the specified service account name if serviceAccounts.spark.name is set
    set:
      serviceAccounts:
        spark:
          name: spark
    asserts:
      - containsDocument:
          apiVersion: v1
          kind: ServiceAccount
          name: spark

  - it: Should add extra annotations if serviceAccounts.spark.annotations is set
    set:
      serviceAccounts:
        spark:
          annotations:
            key1: value1
            key2: value2
    asserts:
      - equal:
          path: metadata.annotations.key1
          value: value1
      - equal:
          path: metadata.annotations.key2
          value: value2

  - it: Should create multiple service accounts if sparkJobNamespaces is set
    set:
      serviceAccounts:
        spark:
          name: spark
      sparkJobNamespaces:
        - ns1
        - ns2
        - ns3
    documentIndex: 0
    asserts:
      - hasDocuments:
          count: 3
      - containsDocument:
          apiVersion: v1
          kind: ServiceAccount
          name: spark
          namespace: ns1


  - it: Should create multiple service accounts if sparkJobNamespaces is set
    set:
      serviceAccounts:
        spark:
          name: spark
      sparkJobNamespaces:
        - ns1
        - ns2
        - ns3
    documentIndex: 1
    asserts:
      - hasDocuments:
          count: 3
      - containsDocument:
          apiVersion: v1
          kind: ServiceAccount
          name: spark
          namespace: ns2

  - it: Should create multiple service accounts if sparkJobNamespaces is set
    set:
      serviceAccounts:
        spark:
          name: spark
      sparkJobNamespaces:
        - ns1
        - ns2
        - ns3
    documentIndex: 2
    asserts:
      - hasDocuments:
          count: 3
      - containsDocument:
          apiVersion: v1
          kind: ServiceAccount
          name: spark
          namespace: ns3