suite: pod imagePullSecret test
templates:
  - common.yaml
tests:
  - it: should assign multiple imagePullSecret to primary pod
    set:
      workload:
        workload-name1:
          enabled: true
          primary: true
          type: CronJob
          schedule: "* * * * *"
          podSpec:
            restartPolicy: Never
        workload-name2:
          enabled: true
          primary: false
          type: Deployment
          podSpec: {}
      imagePullSecret:
        pull-secret1:
          enabled: true
          data:
            registry: reg
            username: user
            password: pass
            email: mail
        pull-secret2:
          enabled: true
          data:
            registry: reg
            username: user
            password: pass
            email: mail
    asserts:
      - documentIndex: &cronJobDoc 2
        isKind:
          of: CronJob
      - documentIndex: *cronJobDoc
        equal:
          path: metadata.name
          value: release-name-common-test
      - documentIndex: *cronJobDoc
        equal:
          path: spec.jobTemplate.spec.template.spec.imagePullSecrets
          value:
            - name: release-name-common-test-pull-secret1
            - name: release-name-common-test-pull-secret2
      - documentIndex: &otherDeploymentDoc 3
        isKind:
          of: Deployment
      - documentIndex: *otherDeploymentDoc
        isNull:
          path: spec.template.spec.imagePullSecrets

  - it: should assign multiple imagePullSecret to all pods
    set:
      workload:
        workload-name1:
          enabled: true
          primary: true
          type: Deployment
          podSpec: {}
        workload-name2:
          enabled: true
          primary: false
          type: Deployment
          podSpec: {}
      imagePullSecret:
        pull-secret1:
          enabled: true
          data:
            registry: reg
            username: user
            password: pass
            email: mail
          targetSelectAll: true
        pull-secret2:
          enabled: true
          data:
            registry: reg
            username: user
            password: pass
            email: mail
          targetSelectAll: true
    asserts:
      - documentIndex: &deploymentDoc 2
        isKind:
          of: Deployment
      - documentIndex: *deploymentDoc
        equal:
          path: spec.template.spec.imagePullSecrets
          value:
            - name: release-name-common-test-pull-secret1
            - name: release-name-common-test-pull-secret2
      - documentIndex: &otherDeploymentDoc 3
        isKind:
          of: Deployment
      - documentIndex: *otherDeploymentDoc
        equal:
          path: spec.template.spec.imagePullSecrets
          value:
            - name: release-name-common-test-pull-secret1
            - name: release-name-common-test-pull-secret2

  - it: should assign imagePullSecret to selected pods
    set:
      workload:
        workload-name1:
          enabled: true
          primary: true
          type: Deployment
          podSpec: {}
        workload-name2:
          enabled: true
          primary: false
          type: Deployment
          podSpec: {}
      imagePullSecret:
        pull-secret1:
          enabled: true
          data:
            registry: reg
            username: user
            password: pass
            email: mail
          targetSelector:
            - workload-name1
            - workload-name2
        pull-secret2:
          enabled: true
          data:
            registry: reg
            username: user
            password: pass
            email: mail
          targetSelector:
            - workload-name1
    asserts:
      - documentIndex: *deploymentDoc
        isKind:
          of: Deployment
      - documentIndex: *deploymentDoc
        equal:
          path: spec.template.spec.imagePullSecrets
          value:
            - name: release-name-common-test-pull-secret1
            - name: release-name-common-test-pull-secret2
      - documentIndex: &otherDeploymentDoc 3
        isKind:
          of: Deployment
      - documentIndex: *otherDeploymentDoc
        equal:
          path: spec.template.spec.imagePullSecrets
          value:
            - name: release-name-common-test-pull-secret1
