suite: actions template | statefulset
release:
  name: gitea-unittests
  namespace: testing
templates:
  - templates/gitea/act_runner/statefulset.yaml
  - templates/gitea/act_runner/config-act-runner.yaml
tests:
  - it: doesn't renders a StatefulSet by default
    template: templates/gitea/act_runner/statefulset.yaml
    asserts:
      - hasDocuments:
          count: 0
  - it: renders a StatefulSet (with given existingSecret/existingSecretKey)
    template: templates/gitea/act_runner/statefulset.yaml
    set:
      actions:
        enabled: true
        existingSecret: "my-secret"
        existingSecretKey: "my-secret-key"
    asserts:
      - hasDocuments:
          count: 1
      - containsDocument:
          kind: StatefulSet
          apiVersion: apps/v1
          name: gitea-unittests-act-runner
      - equal:
          path: spec.template.spec.containers[0].env[3]
          value:
            name: GITEA_RUNNER_REGISTRATION_TOKEN
            valueFrom:
              secretKeyRef:
                name: "my-secret"
                key: "my-secret-key"
  - it: renders a StatefulSet (with secret reference defaults for enabled provisioning)
    template: templates/gitea/act_runner/statefulset.yaml
    set:
      actions:
        enabled: true
        provisioning:
          enabled: true
    asserts:
      - hasDocuments:
          count: 1
      - containsDocument:
          kind: StatefulSet
          apiVersion: apps/v1
          name: gitea-unittests-act-runner
      - equal:
          path: spec.template.spec.containers[0].env[3]
          value:
            name: GITEA_RUNNER_REGISTRATION_TOKEN
            valueFrom:
              secretKeyRef:
                name: "gitea-unittests-actions-token"
                key: "token"
  - it: renders a StatefulSet (that tracks changes of the runner configuration as annotation)
    template: templates/gitea/act_runner/statefulset.yaml
    set:
      image.tag: "1.22.3" # lock image tag to prevent test failures on future Gitea upgrades
      actions:
        enabled: true
        existingSecret: "my-secret"
        existingSecretKey: "my-secret-key"
    asserts:
      - hasDocuments:
          count: 1
      - containsDocument:
          kind: StatefulSet
          apiVersion: apps/v1
          name: gitea-unittests-act-runner
      - equal:
          path: spec.template.metadata.annotations["checksum/config"]
          value: "2a2200e80fc29111d18b675789c265cd3d5f917754850f946f1ce3c55dcd65f8"
  - it: renders a StatefulSet (with correct GITEA_INSTANCE_URL env with default act-runner specific LOCAL_ROOT_URL)
    template: templates/gitea/act_runner/statefulset.yaml
    set:
      actions:
        enabled: true
        existingSecret: "my-secret"
        existingSecretKey: "my-secret-key"
    asserts:
      - hasDocuments:
          count: 1
      - containsDocument:
          kind: StatefulSet
          apiVersion: apps/v1
          name: gitea-unittests-act-runner
      - equal:
          path: spec.template.spec.containers[0].env[4]
          value:
            name: GITEA_INSTANCE_URL
            value: "http://gitea-unittests-http:3000"
  - it: renders a StatefulSet (with correct GITEA_INSTANCE_URL env from customized LOCAL_ROOT_URL)
    template: templates/gitea/act_runner/statefulset.yaml
    set:
      gitea.config.server.LOCAL_ROOT_URL: "http://git.example.com"
      actions:
        enabled: true
        existingSecret: "my-secret"
        existingSecretKey: "my-secret-key"
    asserts:
      - hasDocuments:
          count: 1
      - containsDocument:
          kind: StatefulSet
          apiVersion: apps/v1
          name: gitea-unittests-act-runner
      - equal:
          path: spec.template.spec.containers[0].env[4]
          value:
            name: GITEA_INSTANCE_URL
            value: "http://git.example.com"
  - it: allows adding custom environment variables to the docker-in-docker container
    template: templates/gitea/act_runner/statefulset.yaml
    set:
      actions:
        enabled: true
        statefulset:
          dind:
            extraEnvs:
              - name: "CUSTOM_ENV_NAME"
                value: "custom env value"
    asserts:
      - equal:
          path: spec.template.spec.containers[1].env[3]
          value:
            name: "CUSTOM_ENV_NAME"
            value: "custom env value"
  - it: should mount an extra volume in the act runner container
    template: templates/gitea/act_runner/statefulset.yaml
    set:
      actions:
        enabled: true
        statefulset:
          extraVolumes:
            - name: my-act-runner-volume
              emptyDir: {}
          actRunner:
            extraVolumeMounts:
              - mountPath: /mnt
                name: my-act-runner-volume
    asserts:
      - hasDocuments:
          count: 1
      - containsDocument:
          kind: StatefulSet
          apiVersion: apps/v1
          name: gitea-unittests-act-runner
      - contains:
          any: true
          path: spec.template.spec.containers[0].volumeMounts
          content:
            mountPath: /mnt
            name: my-act-runner-volume
  - it: should mount an extra volume in the docker-in-docker container
    template: templates/gitea/act_runner/statefulset.yaml
    set:
      actions:
        enabled: true
        statefulset:
          extraVolumes:
            - name: my-dind-volume
              emptyDir: {}
          dind:
            extraVolumeMounts:
              - mountPath: /mnt
                name: my-dind-volume
    asserts:
      - hasDocuments:
          count: 1
      - containsDocument:
          kind: StatefulSet
          apiVersion: apps/v1
          name: gitea-unittests-act-runner
      - contains:
          any: true
          path: spec.template.spec.containers[1].volumeMounts
          content:
            mountPath: /mnt
            name: my-dind-volume