diff --git a/chart/.DS_Store b/chart/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..bbda36e075f5f8e69e9d47208ff5a842264897ed Binary files /dev/null and b/chart/.DS_Store differ diff --git a/chart/Chart.lock b/chart/Chart.lock index 9c022842efbabf1342d164fac34b759b43bd2cd8..f518f41ddf1f6ee952dc11888bde6d1000c2e1a8 100644 --- a/chart/Chart.lock +++ b/chart/Chart.lock @@ -5,5 +5,8 @@ dependencies: - name: minio-instance repository: file://./deps/minio version: 2.0.9-bb.9 -digest: sha256:655a9483cf53a24afb867a32f3bcdaedced200bb5cdefb93b5889f79486e8b55 -generated: "2021-04-19T09:54:43.894362-06:00" +- name: bb-test-lib + repository: oci://registry.dso.mil/platform-one/big-bang/pipeline-templates/pipeline-templates + version: 0.4.0 +digest: sha256:3c01068d81922648379abf856ed3213219210ee54a905d1613a0075511f100f9 +generated: "2021-05-10T13:48:44.220947-06:00" diff --git a/chart/Chart.yaml b/chart/Chart.yaml index f3a7748902ca1668ca24b3465cfd75651028a411..6ba673b596bbc81aa823c208d28b7657d3414520 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -21,3 +21,6 @@ dependencies: alias: minio condition: minio.install repository: file://./deps/minio + - name: bb-test-lib + version: "0.4.0" + repository: "oci://registry.dso.mil/platform-one/big-bang/pipeline-templates/pipeline-templates" diff --git a/chart/charts/bb-test-lib-0.4.0.tgz b/chart/charts/bb-test-lib-0.4.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..47269ecab02fec984f282a766ce13a2f7df2b98e Binary files /dev/null and b/chart/charts/bb-test-lib-0.4.0.tgz differ diff --git a/chart/charts/minio-instance-2.0.9-bb.9.tgz b/chart/charts/minio-instance-2.0.9-bb.9.tgz index c3f8d1aa9a9210e25ff9b58c9ea4778a74b0a975..2f6edd651d15e6500c9b9f34672cd97f2867ea6b 100644 Binary files a/chart/charts/minio-instance-2.0.9-bb.9.tgz and b/chart/charts/minio-instance-2.0.9-bb.9.tgz differ diff --git a/chart/charts/postgresql-10.3.5.tgz b/chart/charts/postgresql-10.3.5.tgz index e5e8457b930a4ca53624745d752d18708bc059b6..dda73a9aa29740cda7c4daf11f7892c36a0bf05a 100644 Binary files a/chart/charts/postgresql-10.3.5.tgz and b/chart/charts/postgresql-10.3.5.tgz differ diff --git a/chart/deps/minio/cypress/minio-health.spec.js b/chart/deps/minio/cypress/minio-health.spec.js deleted file mode 100644 index 6778cf9b1975182d923a0a73b0296935cabc272a..0000000000000000000000000000000000000000 --- a/chart/deps/minio/cypress/minio-health.spec.js +++ /dev/null @@ -1,5 +0,0 @@ -describe('Basic Minio', function() { - it('Check Minio UI is accessible', function() { - cy.visit(Cypress.env('url')) - }) -}) diff --git a/chart/deps/minio/cypress/minio-login.js b/chart/deps/minio/cypress/minio-login.js deleted file mode 100644 index d64096b0dea0bbfb50203442aa179433cad51eb7..0000000000000000000000000000000000000000 --- a/chart/deps/minio/cypress/minio-login.js +++ /dev/null @@ -1,24 +0,0 @@ -describe('Minio Login', function() { - it('Check Minio Login', function() { - cy.visit(Cypress.env('url')+"/minio/login") - // Fill the username - cy.get('[name="username"]') - .type(Cypress.env('accesskey')) - .should('have.value', Cypress.env('accesskey')); - - // Fill the password - cy.get('[name="password"]') - .type(Cypress.env('secretkey')) - .should('have.value', Cypress.env('secretkey')); - - // Locate and submit the form - cy.get('form').submit(); - - // Verify the app redirected you to the homepage - cy.location('pathname', { timeout: 10000 }).should('eq', '/minio/'); - - // Verify the page title is "Home" - cy.title().should('eq', 'MinIO Browser'); - - }) -}) diff --git a/chart/deps/minio/templates/tests/test-ui-configmap.yaml b/chart/deps/minio/templates/tests/test-ui-configmap.yaml deleted file mode 100644 index d3b0c95717b623009a2f87dac2a4e748ff2ac26c..0000000000000000000000000000000000000000 --- a/chart/deps/minio/templates/tests/test-ui-configmap.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: "{{ .Release.Name }}-cypress-test-configmap" - annotations: - "helm.sh/hook": test-success - "helm.sh/hook-weight": "5" - sidecar.istio.io/inject: "false" - labels: - helm-test: enabled - {{- include "minio.labels" . | nindent 4 }} - namespace: {{ .Release.Namespace }} -data: -{{ (.Files.Glob "cypress/*").AsConfig | indent 2 }} - diff --git a/chart/deps/minio/templates/tests/test-ui.yaml b/chart/deps/minio/templates/tests/test-ui.yaml deleted file mode 100644 index 86dc8e6feb1f782d3987152687d5ef2a19dbba76..0000000000000000000000000000000000000000 --- a/chart/deps/minio/templates/tests/test-ui.yaml +++ /dev/null @@ -1,69 +0,0 @@ -kind: Pod -apiVersion: v1 -metadata: - name: "{{ .Release.Name }}-ui-test" - namespace: {{ .Release.Namespace }} - annotations: - "helm.sh/hook": test-success - "helm.sh/hook-weight": "20" - sidecar.istio.io/inject: "false" - labels: - helm-test: enabled - {{- include "minio.labels" . | nindent 4 }} -spec: - initContainers: - - name: copier - image: registry.dso.mil/platform-one/big-bang/pipeline-templates/pipeline-templates/cypress/included:5.0.0 - command: - - "/bin/bash" - - "-c" - - | - - ls -la /src/ - cp /src/cypress.json /dest/ - mkdir -p /dest/cypress/integration/ - cp /src/*.js /dest/cypress/integration/ - ls -la /dest/ - ls -la /dest/cypress/integration/ - volumeMounts: - - name: cypress-tests - mountPath: /src - - name: workdir - mountPath: /dest - containers: - - name: {{ .Release.Name }}-ui-test - image: registry.dso.mil/platform-one/big-bang/pipeline-templates/pipeline-templates/cypress/included:5.0.0 - imagePullPolicy: {{ .Values.image.imagePullPolicy | quote }} - workingDir: /e2e - env: - - name: HOST - value: {{ .Values.service.port | quote }} - - name: MINIO_HOST - value: {{ include "minio.serviceName" . }} - - name: cypress_secretkey - valueFrom: - secretKeyRef: - name: {{ .Values.minioRootCreds }} - key: secretkey - - name: cypress_accesskey - valueFrom: - secretKeyRef: - name: {{ .Values.minioRootCreds }} - key: accesskey - - name: cypress_url - value: "http://{{ include "minio.serviceName" . }}:{{ .Values.service.port }}" - args: - - "--" - - "--reporter-options=list" - - "--reporter=spec" - volumeMounts: - - name: workdir - mountPath: /e2e/ - restartPolicy: Never - volumes: - - name: cypress-tests - configMap: - name: "{{ .Release.Name }}-cypress-test-configmap" - - name: workdir - emptyDir: {} - diff --git a/chart/deps/minio/templates/tests/test-write.yaml b/chart/deps/minio/templates/tests/test-write.yaml deleted file mode 100644 index e352bc62023921bafa8fbb6989b8192edb7afd2e..0000000000000000000000000000000000000000 --- a/chart/deps/minio/templates/tests/test-write.yaml +++ /dev/null @@ -1,54 +0,0 @@ -kind: Pod -apiVersion: v1 -metadata: - name: "{{ .Release.Name }}-access-test" - namespace: {{ .Release.Namespace }} - annotations: - "helm.sh/hook": test-success - "helm.sh/hook-weight": "10" - sidecar.istio.io/inject: "false" - labels: - helm-test: enabled - {{- include "minio.labels" . | nindent 4 }} -spec: - containers: - - name: {{ .Release.Name }}-credentials-test - image: {{.Values.mcImage }} - imagePullPolicy: {{ .Values.image.imagePullPolicy | quote }} - env: - - name: MINIO_PORT - value: {{ .Values.service.port | quote }} - - name: MINIO_HOST - value: {{ include "minio.serviceName" . }} - - name: SECRET_KEY - valueFrom: - secretKeyRef: - name: {{ .Values.minioRootCreds }} - key: secretkey - - name: ACCESS_KEY - valueFrom: - secretKeyRef: - name: {{ .Values.minioRootCreds }} - key: accesskey - command: - - /bin/bash - - -ec - - |- - set -x - mc config host add bigbang http://${MINIO_HOST}:${MINIO_PORT} ${ACCESS_KEY} ${SECRET_KEY} - # cleanup from pervious runs - mc rb bigbang/foobar --force || true - mc mb bigbang/foobar - mc ls bigbang/foobar - base64 /dev/urandom | head -c 10000000 > /tmp/file.txt - md5sum /tmp/file.txt > /tmp/filesig - mc cp /tmp/file.txt bigbang/foobar/file.txt - mc ls bigbang/foobar/file.txt - mc cp bigbang/foobar/file.txt /tmp/file.txt - mc rb bigbang/foobar --force - md5sum -c /tmp/filesig - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 4}} - {{- end }} - restartPolicy: Never \ No newline at end of file diff --git a/chart/templates/tests/test-ui.yaml b/chart/templates/tests/test-ui.yaml new file mode 100644 index 0000000000000000000000000000000000000000..57f97717fa3416c85c53db25f8f04b7837fa6134 --- /dev/null +++ b/chart/templates/tests/test-ui.yaml @@ -0,0 +1,13 @@ +{{- include "bb-test-lib.cypress-configmap.overrides" (list . "mattermost-test.cypress-configmap") }} +{{- define "mattermost-test.cypress-configmap" }} +metadata: + labels: + {{ include "mattermost.labels" . | nindent 4 }} +{{- end }} +--- +{{- include "bb-test-lib.cypress-runner.overrides" (list . "mattermost-test.cypress-runner") -}} +{{- define "mattermost-test.cypress-runner" -}} +metadata: + labels: + {{ include "mattermost.labels" . | nindent 4 }} +{{- end }} diff --git a/chart/deps/minio/cypress/cypress.json b/chart/tests/cypress/cypress.json similarity index 100% rename from chart/deps/minio/cypress/cypress.json rename to chart/tests/cypress/cypress.json diff --git a/chart/tests/cypress/mattermost-health.spec.js b/chart/tests/cypress/mattermost-health.spec.js new file mode 100644 index 0000000000000000000000000000000000000000..ffb3a95ff05b0b0664c19cb282ba92b893330f2f --- /dev/null +++ b/chart/tests/cypress/mattermost-health.spec.js @@ -0,0 +1,77 @@ +describe('Mattermost Healthcheck', function() { + // This provides us with a login account on fresh installs + before(() => { + cy.visit(Cypress.env('url')) + cy.get('div[id="root"]').should('be.visible') + + cy.url().then(($url) => { + if ($url.includes('signup')) { + cy.get('input[id="email"]').type(Cypress.env('mm_email')) + cy.get('input[id="name"]').type(Cypress.env('mm_user')) + cy.get('input[id="password"]').type(Cypress.env('mm_password')) + cy.get('button[id="createAccountButton"]').click() + } + }) + }) + + beforeEach(() => { + cy.visit(Cypress.env('url')) + cy.get('div[id="root"]').should('be.visible') + + // Check if login is needed + cy.url().then(($url) => { + if ($url.includes('login')) { + cy.get('input[id="loginId"]').type(Cypress.env('mm_user')) + cy.get('input[id="loginPassword"]').type(Cypress.env('mm_password')) + cy.get('button[id="loginButton"]').click() + } + }) + cy.wait(500) + }) + + it('should create / persist teams', function() { + cy.get("body").then($body => { + if ($body.find('a[id="createNewTeamLink"]').length > 0) { + cy.get('a[id="createNewTeamLink"]').click() + cy.get('input[id="teamNameInput"]').type("Big Bang") + cy.get('button[id="teamNameNextButton"]').click() + cy.get('button[id="teamURLFinishButton"]').click() + cy.title().should('include', 'Town Square - Big Bang') + } else { + cy.title().should('include', 'Town Square - Big Bang') + } + }) + cy.get("body").then($body => { + if ($body.find('a[id="tutorialSkipLink"]').length > 0) { + cy.get('a[id="tutorialSkipLink"]').click() + } + }) + }) + + it('should allow chatting', function() { + let randomChat = "Hello " + Math.random().toString(36).substring(8); + cy.get('textarea[id="post_textbox"]').type(randomChat).type('{enter}') + cy.get('p').contains(randomChat).should('be.visible') + }) + + it('should have file storage connection', function() { + cy.get('button[aria-label="main menu"]').click() + cy.get('a[href="/admin_console"]').click() + + cy.get('a[id="environment/file_storage"]').click() + cy.get('span').contains("Test Connection").click() + cy.get('div[class="alert alert-success"]').should('be.visible') + }) + + it('should save settings changes', function() { + cy.get('button[aria-label="main menu"]').click() + cy.get('a[href="/admin_console"]').click() + + cy.get('a[id="site_config/customization"]').click() + let randomName = Math.random().toString(36).substring(8); + cy.get('input[id="TeamSettings.SiteName"]').clear().type(randomName) + cy.get('button[id="saveSetting"]').click() + cy.reload() + cy.title().should('include', randomName) + }) +}) diff --git a/tests/cy-run.sh b/tests/cy-run.sh deleted file mode 100755 index 2df7a77796b123ada7ac4d0d357ac452e4fedebc..0000000000000000000000000000000000000000 --- a/tests/cy-run.sh +++ /dev/null @@ -1,16 +0,0 @@ - -#!/usr/bin/env bash -echo "Running Cypress e2e tests headlessly without copying files" - -# explanation of the "docker run" command line arguments -# -# -it = interactive terminal -# -v $PWD:/e2e = map current folder to /e2e inside the container -# -w /e2e = set working directy to /e2e -# $@ = pass any arguments to this script to the Cypress command -# like "./cy-run.sh --record" -# -# Docker image "cypress/included:3.2.0" has its entrypoint -# set to "cypress run" by default - -docker run -it -v $PWD:/e2e -w /e2e cypress/included:5.0.0 $@ diff --git a/tests/cypress.json b/tests/cypress.json deleted file mode 100644 index a12fbe832c0e030653d4b22464d82afd4bea356f..0000000000000000000000000000000000000000 --- a/tests/cypress.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "pluginsFile": false, - "supportFile": false, - "fixturesFolder": false, - "env": { - "mm_url": "chat.bigbang.dev", - "mm_email": "test@bigbang.dev", - "mm_user": "bigbang", - "mm_password": "Bigbang#123" - } -} diff --git a/tests/cypress/integration/mattermost-health.spec.js b/tests/cypress/integration/mattermost-health.spec.js deleted file mode 100644 index e19742ccb16290985fe83c72b649a388fbb20fed..0000000000000000000000000000000000000000 --- a/tests/cypress/integration/mattermost-health.spec.js +++ /dev/null @@ -1,44 +0,0 @@ -describe('Basic Mattermost', function() { - it('Check Mattermost is accessible', function() { - cy.visit(Cypress.env('mm_url')) - // Wait for redirects to happen - cy.get('div[id="root"]').should('be.visible') - - // Check if this is a fresh install or upgrade - cy.url().then(($url) => { - if ($url.includes('signup')) { - cy.get('input[id="email"]').type(Cypress.env('mm_email')) - cy.get('input[id="name"]').type(Cypress.env('mm_user')) - cy.get('input[id="password"]').type(Cypress.env('mm_password')) - cy.get('button[id="createAccountButton"]').click() - - cy.get('a[id="createNewTeamLink"]').click() - cy.get('input[id="teamNameInput"]').type(Cypress.env('mm_user')) - cy.get('button[id="teamNameNextButton"]').click() - cy.get('button[id="teamURLFinishButton"]').click() - - cy.title().should('include', 'Town Square - ') - - cy.get('a[id="tutorialSkipLink"]').click() - cy.get('textarea[id="post_textbox"]').type("Hello Big Bang").type('{enter}') - cy.get('p').contains("Hello Big Bang").should('be.visible') - } else { - cy.get('input[id="loginId"]').type(Cypress.env('mm_user')) - cy.get('input[id="loginPassword"]').type(Cypress.env('mm_password')) - cy.get('button[id="loginButton"]').click() - - cy.title().should('include', 'Town Square - ') - - // Safeguard in case tutorial link is still there - cy.get("body").then($body => { - if ($body.find('a[id="tutorialSkipLink"]').length > 0) { - cy.get('a[id="tutorialSkipLink"]').click() - } - }) - - cy.get('textarea[id="post_textbox"]').type("Hello upgraded Big Bang").type('{enter}') - cy.get('p').contains("Hello upgraded Big Bang").should('be.visible') - } - }) - }) -}) diff --git a/tests/test-values.yml b/tests/test-values.yml index cf64ee1bae88b1b8a438e25b4863c9fcfbf5b41c..0c29a42bef0836f69b3c0d7a90d00fbc41dde984 100644 --- a/tests/test-values.yml +++ b/tests/test-values.yml @@ -6,3 +6,12 @@ minio: postgresql: install: true + +bbtests: + cypress: + artifacts: true + envs: + cypress_url: http://mattermost.mattermost.svc.cluster.local:8065 + cypress_mm_email: "test@bigbang.dev" + cypress_mm_user: "bigbang" + cypress_mm_password: "Bigbang#123"