[bitnami/jasperreports] Add tests and publishing using VIB (#13305)

* [bitnami/jasperreports] Add tests

Signed-off-by: Jose Antonio Carmona <jcarmona@vmware.com>

* Publish using VIB

Signed-off-by: Jose Antonio Carmona <jcarmona@vmware.com>

* Properly randomize

Signed-off-by: Jose Antonio Carmona <jcarmona@vmware.com>

* Remove unnecessary https insecure

Signed-off-by: Jose Antonio Carmona <jcarmona@vmware.com>

* Remove containerPort entry in runtime_params

Signed-off-by: Jose Antonio Carmona <jcarmona@vmware.com>

Signed-off-by: Jose Antonio Carmona <jcarmona@vmware.com>
This commit is contained in:
Jose Antonio Carmona
2022-11-15 16:34:37 +01:00
committed by GitHub
parent 21f4d51b26
commit 2b274c2f94
12 changed files with 208 additions and 2 deletions

View File

@@ -0,0 +1,8 @@
{
"baseUrl": "http://localhost/",
"env": {
"username": "jaspervibadmin",
"password": "ComplicatedPassword123!4"
},
"defaultCommandTimeout": 30000
}

View File

@@ -0,0 +1,17 @@
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="report" topMargin="20" bottomMargin="20" whenNoDataType="NoDataSection">
<noData>
<band height="15">
<staticText>
<reportElement x="0" y="0" width="200" height="15"/>
<box>
<bottomPen lineWidth="1.0" lineColor="#CCCCCC"/>
</box>
<textElement />
<text><![CDATA[Cherries From Barn with ID]]></text>
</staticText>
</band>
</noData>
</jasperReport>

View File

@@ -0,0 +1,7 @@
{
"newReport": {
"name": "ShoppingList",
"file": "WorkingReport.jrxml",
"textToRandomize": "Cherries From Barn with ID"
}
}

View File

@@ -0,0 +1,32 @@
/// <reference types="cypress" />
import { random } from '../support/utils';
it('allows to upload and view a new Report', () => {
cy.login();
cy.visit('/jasperserver/flow.html?_flowId=reportUnitFlow&ParentFolderUri=/');
cy.fixture('reports').then((reports) => {
const reportFile = `cypress/fixtures/${reports.newReport.file}`;
cy.readFile(reportFile).then((data) => {
const regex = new RegExp(
`${reports.newReport.textToRandomize}[a-z0-9_]*`
);
const randomizedData = data.replace(
regex,
`${reports.newReport.textToRandomize}${random}`
);
cy.writeFile(reportFile, randomizedData);
});
cy.get('[name="reportUnit.label"]')
.click()
.type(`${reports.newReport.name}_${random}`);
cy.get('#fromLocal').click();
cy.get('[type="file"]').selectFile(reportFile, { force: true });
cy.contains('Submit').click();
cy.get('#resultsContainer').within(() => {
cy.contains(`${reports.newReport.name}_${random}`).click();
});
cy.contains(`${reports.newReport.textToRandomize}${random}`);
});
});

View File

@@ -0,0 +1,36 @@
const COMMAND_DELAY = 2000;
for (const command of ['click']) {
Cypress.Commands.overwrite(command, (originalFn, ...args) => {
const origVal = originalFn(...args);
return new Promise((resolve) => {
setTimeout(() => {
resolve(origVal);
}, COMMAND_DELAY);
});
});
}
Cypress.Commands.add(
'login',
(username = Cypress.env('username'), password = Cypress.env('password')) => {
cy.visit('/jasperserver/login.html');
cy.get('#j_username').click().type(username);
cy.get('#j_password_pseudo').click().type(password);
cy.get('#submitButton').click();
// The login process completes when the directory tree is fully loaded
cy.get('#folders').within(() => {
cy.contains('root');
});
cy.get('body').then(($body) => {
// Close the pop-up if appears
if ($body.find('#heartbeatOptin').is(':visible')) {
cy.get('#heartbeatOptin').within(() => {
cy.contains('button', 'OK').click();
});
}
});
}
);

View File

@@ -0,0 +1,20 @@
// ***********************************************************
// This example support/index.js is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************
// Import commands.js using ES2015 syntax:
import './commands';
// Alternatively you can use CommonJS syntax:
// require('./commands')

View File

@@ -0,0 +1,3 @@
/// <reference types="cypress" />
export let random = (Math.random() + 1).toString(36).substring(7);

View File

@@ -0,0 +1,21 @@
command:
check-user-info:
exec: id
exit-status: 0
stdout:
- uid={{ .Vars.containerSecurityContext.runAsUser }}
- /groups=.*{{ .Vars.podSecurityContext.fsGroup }}/
file:
/opt/bitnami/jasperreports/META-INF/context.xml:
exists: true
filetype: file
mode: '0644'
contains:
- /mysql.*{{ .Vars.mariadb.auth.database }}/
- /username.*{{ .Vars.mariadb.auth.username }}/
- /password.*{{ .Vars.mariadb.auth.password }}/
/bitnami/jasperreports:
exists: true
filetype: directory
mode: '2775'
owner: root

View File

@@ -0,0 +1,9 @@
podSecurityContext:
fsGroup: 1002
containerSecurityContext:
runAsUser: 1002
mariadb:
auth:
database: bitnami_test_jasperreports
username: bn_test_jasperreports
password: bitnami_test_password

View File

@@ -22,7 +22,7 @@
"url": "{SHA_ARCHIVE}",
"path": "/bitnami/jasperreports"
},
"runtime_parameters": "Imphc3BlcnJlcG9ydHNQYXNzd29yZCI6ICJTMzlCS1dqU2toIg==",
"runtime_parameters": "amFzcGVycmVwb3J0c1VzZXJuYW1lOiBqYXNwZXJ2aWJhZG1pbgpqYXNwZXJyZXBvcnRzUGFzc3dvcmQ6ICJDb21wbGljYXRlZFBhc3N3b3JkMTIzITQiCnBvZFNlY3VyaXR5Q29udGV4dDoKICBlbmFibGVkOiB0cnVlCiAgZnNHcm91cDogMTAwMgpjb250YWluZXJTZWN1cml0eUNvbnRleHQ6CiAgZW5hYmxlZDogdHJ1ZQogIHJ1bkFzVXNlcjogMTAwMgpwZXJzaXN0ZW5jZToKICBlbmFibGVkOiB0cnVlCnNlcnZpY2U6CiAgdHlwZTogTG9hZEJhbGFuY2VyCiAgcG9ydHM6CiAgICBodHRwOiA4MAptYXJpYWRiOgogIGVuYWJsZWQ6IHRydWUKICBhdXRoOgogICAgZGF0YWJhc2U6IGJpdG5hbWlfdGVzdF9qYXNwZXJyZXBvcnRzCiAgICB1c2VybmFtZTogYm5fdGVzdF9qYXNwZXJyZXBvcnRzCiAgICBwYXNzd29yZDogYml0bmFtaV90ZXN0X3Bhc3N3b3Jk",
"target_platform": {
"target_platform_id": "{VIB_ENV_TARGET_PLATFORM}",
"size": {
@@ -37,6 +37,32 @@
"endpoint": "lb-jasperreports-http",
"app_protocol": "HTTP"
}
},
{
"action_id": "goss",
"params": {
"resources": {
"path": "/.vib/jasperreports/goss"
},
"remote": {
"workload": "deploy-jasperreports"
},
"vars_file": "vars.yaml"
}
},
{
"action_id": "cypress",
"params": {
"resources": {
"path": "/.vib/jasperreports/cypress"
},
"endpoint": "lb-jasperreports-http",
"app_protocol": "HTTP",
"env": {
"username": "jaspervibadmin",
"password": "ComplicatedPassword123!4"
}
}
}
]
},

View File

@@ -22,7 +22,7 @@
"url": "{SHA_ARCHIVE}",
"path": "/bitnami/jasperreports"
},
"runtime_parameters": "Imphc3BlcnJlcG9ydHNQYXNzd29yZCI6ICJTMzlCS1dqU2toIg==",
"runtime_parameters": "amFzcGVycmVwb3J0c1VzZXJuYW1lOiBqYXNwZXJ2aWJhZG1pbgpqYXNwZXJyZXBvcnRzUGFzc3dvcmQ6ICJDb21wbGljYXRlZFBhc3N3b3JkMTIzITQiCnBvZFNlY3VyaXR5Q29udGV4dDoKICBlbmFibGVkOiB0cnVlCiAgZnNHcm91cDogMTAwMgpjb250YWluZXJTZWN1cml0eUNvbnRleHQ6CiAgZW5hYmxlZDogdHJ1ZQogIHJ1bkFzVXNlcjogMTAwMgpwZXJzaXN0ZW5jZToKICBlbmFibGVkOiB0cnVlCnNlcnZpY2U6CiAgdHlwZTogTG9hZEJhbGFuY2VyCiAgcG9ydHM6CiAgICBodHRwOiA4MAptYXJpYWRiOgogIGVuYWJsZWQ6IHRydWUKICBhdXRoOgogICAgZGF0YWJhc2U6IGJpdG5hbWlfdGVzdF9qYXNwZXJyZXBvcnRzCiAgICB1c2VybmFtZTogYm5fdGVzdF9qYXNwZXJyZXBvcnRzCiAgICBwYXNzd29yZDogYml0bmFtaV90ZXN0X3Bhc3N3b3Jk",
"target_platform": {
"target_platform_id": "{VIB_ENV_TARGET_PLATFORM}",
"size": {
@@ -37,6 +37,32 @@
"endpoint": "lb-jasperreports-http",
"app_protocol": "HTTP"
}
},
{
"action_id": "goss",
"params": {
"resources": {
"path": "/.vib/jasperreports/goss"
},
"remote": {
"workload": "deploy-jasperreports"
},
"vars_file": "vars.yaml"
}
},
{
"action_id": "cypress",
"params": {
"resources": {
"path": "/.vib/jasperreports/cypress"
},
"endpoint": "lb-jasperreports-http",
"app_protocol": "HTTP",
"env": {
"username": "jaspervibadmin",
"password": "ComplicatedPassword123!4"
}
}
}
]
}