diff --git a/.vib/suitecrm/cypress/cypress.json b/.vib/suitecrm/cypress/cypress.json index 529765e94..ed1364201 100644 --- a/.vib/suitecrm/cypress/cypress.json +++ b/.vib/suitecrm/cypress/cypress.json @@ -1,10 +1,7 @@ { "env": { - "username": "user", - "password": "ComplicatedPassword123!4", - "emailServer": "testhost", - "smtpPort": "9125", - "smtpUser": "testHostUser" + "username": "test_user", + "password": "ComplicatedPassword123!4" }, "hosts": { "vmware-suitecrm.my": "{{ TARGET_IP }}" diff --git a/.vib/suitecrm/cypress/cypress/fixtures/accounts.csv b/.vib/suitecrm/cypress/cypress/fixtures/accounts.csv index 7b4d95881..684d875e6 100644 --- a/.vib/suitecrm/cypress/cypress/fixtures/accounts.csv +++ b/.vib/suitecrm/cypress/cypress/fixtures/accounts.csv @@ -1,3 +1,3 @@ Name,ID,Website,Email Address,Non Primary E-mails,Office Phone,Alternate Phone,Fax,Billing Street,Billing City,Billing State,Billing Postal Code,Billing Country,Shipping Street,Shipping City,Shipping State,Shipping Postal Code,Shipping Country,Description,Type,Industry,Annual Revenue,Employees,SIC Code,Ticker Symbol,Parent Account ID,Ownership,Campaign ID,Rating,Assigned to,Assigned User,Date Created,Date Modified,Modified By,Created By,Deleted,Longitude,Geocode Status,Address,Latitude -Test Account,c76e2660-6542-8b05-ff4d-628deed4e5f7,http:/website.com,address@email.com,,123-245-2345,,,Central Street,Central City,,,Country,,,,,,,,,,,,,,,,,user,1,05/25/2022 8:52,05/25/2022 8:52,1,1,0,0,,,0 -Test Account 2,c76e2660-6542-8b05-ff4d-628deed4e5f9,http:/website-one.com,address@email.com,,123-245-2345,,,Central Street,Central City,,,Country,,,,,,,,,,,,,,,,,user,1,05/25/2022 8:52,05/25/2022 8:52,1,1,0,0,,,0 +First Test Account random_id,c76e2660-6542-8b05-ff4d-628deed4e5f7,http:/website.com,address@email.com,,123-245-2345,,,Central Street,Central City,,,Country,,,,,,,,,,,,,,,,,user,1,05/25/2022 8:52,05/25/2022 8:52,1,1,0,0,,,0 +Second Test Account random_id,c76e2660-6542-8b05-ff4d-628deed4e5f9,http:/website-one.com,address@email.com,,123-245-2345,,,Central Street,Central City,,,Country,,,,,,,,,,,,,,,,,user,1,05/25/2022 8:52,05/25/2022 8:52,1,1,0,0,,,0 diff --git a/.vib/suitecrm/cypress/cypress/fixtures/contacts.json b/.vib/suitecrm/cypress/cypress/fixtures/contacts.json index f3ead4539..d054c8ac3 100644 --- a/.vib/suitecrm/cypress/cypress/fixtures/contacts.json +++ b/.vib/suitecrm/cypress/cypress/fixtures/contacts.json @@ -1,7 +1,5 @@ { "newContact": { - "firstName": "Julius Francisco", - "lastName": "Doe", - "address": "Calle de Camino de Santiago" + "lastName": "Lastly" } } diff --git a/.vib/suitecrm/cypress/cypress/fixtures/users.json b/.vib/suitecrm/cypress/cypress/fixtures/users.json deleted file mode 100644 index 7e9aaa3fa..000000000 --- a/.vib/suitecrm/cypress/cypress/fixtures/users.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "newUser": { - "firstName": "Jane Jessica", - "lastName": "Doe", - "username": "janedoe", - "password": "someComplicatedPass12345!", - "email": "testemails@email.com" - } -} diff --git a/.vib/suitecrm/cypress/cypress/integration/suitecrm_spec.js b/.vib/suitecrm/cypress/cypress/integration/suitecrm_spec.js index da008eaa3..fb83bf276 100644 --- a/.vib/suitecrm/cypress/cypress/integration/suitecrm_spec.js +++ b/.vib/suitecrm/cypress/cypress/integration/suitecrm_spec.js @@ -1,48 +1,26 @@ /// import { random } from '../support/utils'; -it('allows to log in/log out', () => { - cy.login(); - cy.get('span[class="error"]').should('not.exist'); - cy.contains('SUITECRM DASHBOARD'); - cy.visit('/index.php?module=Users&action=Logout'); - cy.contains('Log In'); -}); - -it('allows to import accounts', () => { +it('allows to import accounts and list them', () => { cy.login(); cy.visit('/index.php?module=Accounts&action=index'); cy.contains('Import Accounts').click({ force: true }); - cy.get('input[type="file"]').selectFile('cypress/fixtures/accounts.csv'); - cy.get('input#import_update').click(); - cy.get('#gonext').click(); - cy.contains('Here is how the first several rows'); - cy.get('#gonext').click(); - cy.contains('Check the mappings to make sure that they are what you expect'); - cy.get('#gonext').click(); - cy.contains('perform a duplicate check'); - cy.get('#importnow').click(); - cy.contains('View Import Result'); - cy.contains('View Accounts').click({ force: true }); - cy.get('[title="Edit"]').its('length').should('gt', 1); -}); -it('allows adding a new user', () => { - cy.login(); - cy.visit('index.php?module=Users&action=index'); - cy.contains('Create New User').click({ force: true }); - cy.fixture('users').then((user) => { - cy.get('#user_name').type(`${user.newUser.username}.${random}`); - cy.get('#first_name').type(`${user.newUser.firstName}.${random}`); - cy.get('#last_name').type(`${user.newUser.lastName}.${random}`); - cy.get('#Users0emailAddress0').type(`${user.newUser.email}.${random}`); - cy.get('#SAVE_FOOTER').click(); - cy.get('#tab2').click(); - cy.get('#new_password').type(`${user.newUser.password}.${random}`); - cy.get('#confirm_pwd').type(`${user.newUser.password}.${random}`); - cy.get('#SAVE_FOOTER').click({ force: true }); - cy.contains('View Users').click({ force: true }); - cy.contains(`${user.newUser.username}.${random}`); + const accountsFile = 'cypress/fixtures/accounts.csv'; + cy.readFile(accountsFile).then((data) => { + const randomizedData = data.replace(/Test Account [a-z0-9_]+,/g, `Test Account ${random},`); + cy.writeFile(accountsFile, randomizedData); + }); + cy.get('[type="file"]').selectFile(accountsFile); + cy.get('#import_update').click(); + for (let i = 2; i < 5; i++) { + cy.get('#gonext').click(); + cy.contains(`Step ${i}`); + } + cy.get('#importnow').click(); + cy.contains('Exit').click({ force: true }); + cy.get('.list').within(() => { + cy.contains(`Test Account ${random}`); }); }); @@ -51,24 +29,8 @@ it('allows adding a new contact', () => { cy.visit('/index.php?module=Contacts&action=index'); cy.contains('Create Contact').click({ force: true }); cy.fixture('contacts').then((contact) => { - cy.get('#account_name').type(`${contact.newContact.firstName}.${random}`); cy.get('#last_name').type(`${contact.newContact.lastName}.${random}`); - cy.get('#primary_address_street').type( - `${contact.newContact.address}.${random}` - ); - cy.get('#SAVE').click(); - cy.contains( - '.module-title-text', - `${contact.newContact.lastName}.${random}` - ); + cy.contains('Save').click(); + cy.contains('h2', `${contact.newContact.lastName}.${random}`); }); }); - -it('verifies SMTP configuration', () => { - cy.login(); - cy.visit('index.php?module=Administration&action=index'); - cy.contains('Email Settings').click(); - cy.get('#mail_smtpserver').should('have.value', Cypress.env('emailServer')); - cy.get('#mail_smtpport').should('have.value', Cypress.env('smtpPort')); - cy.get('#mail_smtpuser').should('have.value', Cypress.env('smtpUser')); -}); diff --git a/.vib/suitecrm/goss/goss.yaml b/.vib/suitecrm/goss/goss.yaml index 9c2c37e13..1e9d8488e 100644 --- a/.vib/suitecrm/goss/goss.yaml +++ b/.vib/suitecrm/goss/goss.yaml @@ -1,26 +1,27 @@ +http: + https://suitecrm:{{ .Vars.service.ports.https }}: + status: 200 + allow-insecure: true command: - user-id-test: - exec: if [ "$(id -u)" -eq 0 ]; then exit 1; fi + check-user-info: + exec: id exit-status: 0 - stdout: [] - stderr: [] + stdout: + - uid={{ .Vars.containerSecurityContext.runAsUser }} + - /groups=.*{{ .Vars.podSecurityContext.fsGroup }}/ file: - /opt/bitnami/suitecrm/sugar_version.json: - mode: "0664" + /bitnami/suitecrm: + exists: true + filetype: directory + mode: '2775' + owner: root + /etc/hosts: + exists: true filetype: file contains: - - sugar_db_version - - sugar_version - exists: true - /opt/bitnami/suitecrm/config.php: - mode: "0755" - filetype: file - contains: - - vmware-suitecrm - - dbconfig - exists: true - /opt/bitnami/apache/conf/extra/httpd-manual.conf: - mode: "0664" - filetype: file - exists: true - group: root + {{ range .Vars.hostAliases }} + {{ $ip := .ip }} + {{ range $host := .hostnames }} + - /{{ $ip }}.*{{$host}}/ + {{ end }} + {{ end }} diff --git a/.vib/suitecrm/goss/vars.yaml b/.vib/suitecrm/goss/vars.yaml new file mode 100644 index 000000000..52b9d063b --- /dev/null +++ b/.vib/suitecrm/goss/vars.yaml @@ -0,0 +1,11 @@ +hostAliases: + - ip: "127.0.0.1" + hostnames: + - "status.localhost" +podSecurityContext: + fsGroup: 1002 +containerSecurityContext: + runAsUser: 1002 +service: + ports: + https: 444 diff --git a/.vib/suitecrm/vib-publish.json b/.vib/suitecrm/vib-publish.json index 7e801d449..51fda56cf 100644 --- a/.vib/suitecrm/vib-publish.json +++ b/.vib/suitecrm/vib-publish.json @@ -22,7 +22,7 @@ "url": "{SHA_ARCHIVE}", "path": "/bitnami/suitecrm" }, - "runtime_parameters": "c2VydmljZToKICB0eXBlOiBMb2FkQmFsYW5jZXIKICBwb3J0czoKICAgIGh0dHA6IDgwCnN1aXRlY3JtVXNlcm5hbWU6IHVzZXIKc3VpdGVjcm1QYXNzd29yZDogQ29tcGxpY2F0ZWRQYXNzd29yZDEyMyE0CnN1aXRlY3JtU210cEhvc3Q6IHRlc3Rob3N0CnN1aXRlY3JtU210cFBvcnQ6IDkxMjUKc3VpdGVjcm1TbXRwVXNlcjogdGVzdEhvc3RVc2VyCnN1aXRlY3JtSG9zdDogdm13YXJlLXN1aXRlY3JtLm15", + "runtime_parameters": "c3VpdGVjcm1Vc2VybmFtZTogdGVzdF91c2VyCnN1aXRlY3JtUGFzc3dvcmQ6IENvbXBsaWNhdGVkUGFzc3dvcmQxMjMhNApzdWl0ZWNybUhvc3Q6IHZtd2FyZS1zdWl0ZWNybS5teQpob3N0QWxpYXNlczoKICAtIGlwOiAiMTI3LjAuMC4xIgogICAgaG9zdG5hbWVzOgogICAgICAtICJzdGF0dXMubG9jYWxob3N0Igpjb250YWluZXJQb3J0czoKICBodHRwOiA4MDgxCiAgaHR0cHM6IDg0NDQKcG9kU2VjdXJpdHlDb250ZXh0OgogIGVuYWJsZWQ6IHRydWUKICBmc0dyb3VwOiAxMDAyCmNvbnRhaW5lclNlY3VyaXR5Q29udGV4dDoKICBlbmFibGVkOiB0cnVlCiAgcnVuQXNVc2VyOiAxMDAyCm1hcmlhZGI6CiAgYXV0aDoKICAgIGRhdGFiYXNlOiB0ZXN0X3N1aXRlY3JtX2RhdGFiYXNlCiAgICB1c2VybmFtZTogdGVzdF9zdWl0ZWNybV91c2VybmFtZQogICAgcGFzc3dvcmQ6IHRlc3Rfc3VpdGVjcm1fcGFzc3dvcmQKc2VydmljZToKICB0eXBlOiBMb2FkQmFsYW5jZXIKICBwb3J0czoKICAgIGh0dHA6IDgwCiAgICBodHRwczogNDQ0", "target_platform": { "target_platform_id": "{VIB_ENV_TARGET_PLATFORM}", "size": { @@ -46,7 +46,8 @@ }, "remote": { "workload": "deploy-suitecrm" - } + }, + "vars_file": "vars.yaml" } }, { @@ -58,7 +59,7 @@ "endpoint": "lb-suitecrm-http", "app_protocol": "HTTP", "env": { - "username": "user", + "username": "test_user", "password": "ComplicatedPassword123!4" } } diff --git a/.vib/suitecrm/vib-verify.json b/.vib/suitecrm/vib-verify.json index 28cd71abc..879204a22 100644 --- a/.vib/suitecrm/vib-verify.json +++ b/.vib/suitecrm/vib-verify.json @@ -22,7 +22,7 @@ "url": "{SHA_ARCHIVE}", "path": "/bitnami/suitecrm" }, - "runtime_parameters": "c2VydmljZToKICB0eXBlOiBMb2FkQmFsYW5jZXIKICBwb3J0czoKICAgIGh0dHA6IDgwCnN1aXRlY3JtVXNlcm5hbWU6IHVzZXIKc3VpdGVjcm1QYXNzd29yZDogQ29tcGxpY2F0ZWRQYXNzd29yZDEyMyE0CnN1aXRlY3JtU210cEhvc3Q6IHRlc3Rob3N0CnN1aXRlY3JtU210cFBvcnQ6IDkxMjUKc3VpdGVjcm1TbXRwVXNlcjogdGVzdEhvc3RVc2VyCnN1aXRlY3JtSG9zdDogdm13YXJlLXN1aXRlY3JtLm15", + "runtime_parameters": "c3VpdGVjcm1Vc2VybmFtZTogdGVzdF91c2VyCnN1aXRlY3JtUGFzc3dvcmQ6IENvbXBsaWNhdGVkUGFzc3dvcmQxMjMhNApzdWl0ZWNybUhvc3Q6IHZtd2FyZS1zdWl0ZWNybS5teQpob3N0QWxpYXNlczoKICAtIGlwOiAiMTI3LjAuMC4xIgogICAgaG9zdG5hbWVzOgogICAgICAtICJzdGF0dXMubG9jYWxob3N0Igpjb250YWluZXJQb3J0czoKICBodHRwOiA4MDgxCiAgaHR0cHM6IDg0NDQKcG9kU2VjdXJpdHlDb250ZXh0OgogIGVuYWJsZWQ6IHRydWUKICBmc0dyb3VwOiAxMDAyCmNvbnRhaW5lclNlY3VyaXR5Q29udGV4dDoKICBlbmFibGVkOiB0cnVlCiAgcnVuQXNVc2VyOiAxMDAyCm1hcmlhZGI6CiAgYXV0aDoKICAgIGRhdGFiYXNlOiB0ZXN0X3N1aXRlY3JtX2RhdGFiYXNlCiAgICB1c2VybmFtZTogdGVzdF9zdWl0ZWNybV91c2VybmFtZQogICAgcGFzc3dvcmQ6IHRlc3Rfc3VpdGVjcm1fcGFzc3dvcmQKc2VydmljZToKICB0eXBlOiBMb2FkQmFsYW5jZXIKICBwb3J0czoKICAgIGh0dHA6IDgwCiAgICBodHRwczogNDQ0", "target_platform": { "target_platform_id": "{VIB_ENV_TARGET_PLATFORM}", "size": { @@ -46,7 +46,8 @@ }, "remote": { "workload": "deploy-suitecrm" - } + }, + "vars_file": "vars.yaml" } }, { @@ -58,7 +59,7 @@ "endpoint": "lb-suitecrm-http", "app_protocol": "HTTP", "env": { - "username": "user", + "username": "test_user", "password": "ComplicatedPassword123!4" } }