diff --git a/packages/entities/entities-certificates/sandbox/pages/CertificateFormPage.vue b/packages/entities/entities-certificates/sandbox/pages/CertificateFormPage.vue
index a126501c36..ca845e2a20 100644
--- a/packages/entities/entities-certificates/sandbox/pages/CertificateFormPage.vue
+++ b/packages/entities/entities-certificates/sandbox/pages/CertificateFormPage.vue
@@ -11,6 +11,7 @@
@@ -48,6 +49,7 @@ const kongManagerConfig = ref({
workspace: 'default',
apiBaseUrl: '/kong-manager', // For local dev server proxy
cancelRoute: { name: 'certificate-list' },
+ sniListRoute: { name: 'sni-list' },
})
const onError = (error: AxiosError) => {
diff --git a/packages/entities/entities-certificates/src/components/CertificateForm.cy.ts b/packages/entities/entities-certificates/src/components/CertificateForm.cy.ts
index 0f14b3c66f..86841f2aea 100644
--- a/packages/entities/entities-certificates/src/components/CertificateForm.cy.ts
+++ b/packages/entities/entities-certificates/src/components/CertificateForm.cy.ts
@@ -6,19 +6,22 @@ import type { KongManagerCertificateFormConfig, KonnectCertificateFormConfig } f
import CertificateForm from './CertificateForm.vue'
const cancelRoute = { name: 'certificates-list' }
+const sniListRoute = { name: 'snis-list' }
-const baseConfigKonnect:KonnectCertificateFormConfig = {
+const baseConfigKonnect: KonnectCertificateFormConfig = {
app: 'konnect',
controlPlaneId: '1234-abcd-ilove-cats',
apiBaseUrl: '/us/kong-api',
cancelRoute,
+ sniListRoute,
}
-const baseConfigKM:KongManagerCertificateFormConfig = {
+const baseConfigKM: KongManagerCertificateFormConfig = {
app: 'kongManager',
workspace: 'default',
apiBaseUrl: '/kong-manager',
cancelRoute,
+ sniListRoute,
}
/**
@@ -120,6 +123,7 @@ describe('', () => {
cy.mount(CertificateForm, {
props: {
config: baseConfigKM,
+ showSnisField: true,
},
})
cy.get('.kong-ui-entities-certificates-form').should('be.visible')
@@ -134,6 +138,7 @@ describe('', () => {
cy.getTestId('certificate-form-key').should('be.visible')
cy.getTestId('certificate-form-cert-alt').should('be.visible')
cy.getTestId('certificate-form-key-alt').should('be.visible')
+ cy.getTestId('sni-field-input-1').should('be.visible')
cy.getTestId('certificate-form-tags').should('be.visible')
})
@@ -151,8 +156,8 @@ describe('', () => {
cy.getTestId('form-cancel').should('be.enabled')
cy.getTestId('form-submit').should('be.disabled')
// enables save when required fields have values
- cy.getTestId('certificate-form-cert').type(certificate1.cert)
- cy.getTestId('certificate-form-key').type(certificate1.key)
+ cy.getTestId('certificate-form-cert').type(certificate1.cert, { delay: 0 })
+ cy.getTestId('certificate-form-key').type(certificate1.key, { delay: 0 })
cy.getTestId('form-submit').should('be.enabled')
// disables save when required field is cleared
cy.getTestId('certificate-form-cert').clear()
@@ -279,12 +284,12 @@ describe('', () => {
cy.getTestId('form-cancel').should('be.enabled')
cy.getTestId('form-submit').should('be.disabled')
// enables save when required fields have values
- cy.getTestId('certificate-form-cert').type(certificate1.cert)
- cy.getTestId('certificate-form-key').type(certificate1.key)
+ cy.getTestId('certificate-form-cert').type(certificate1.cert, { delay: 0 })
+ cy.getTestId('certificate-form-key').type(certificate1.key, { delay: 0 })
// replaces all the newlines with spaces; this should fail the validation
- cy.getTestId('certificate-form-cert-alt').type(secp384r1CertKeyPair.cert.replaceAll('\n', ' '))
- cy.getTestId('certificate-form-key-alt').type(secp384r1CertKeyPair.key.replaceAll('\n', ' '))
+ cy.getTestId('certificate-form-cert-alt').type(secp384r1CertKeyPair.cert.replaceAll('\n', ' '), { delay: 0 })
+ cy.getTestId('certificate-form-key-alt').type(secp384r1CertKeyPair.key.replaceAll('\n', ' '), { delay: 0 })
cy.getTestId('form-submit').should('be.enabled')
@@ -312,12 +317,43 @@ describe('', () => {
cy.getTestId('form-cancel').should('be.enabled')
cy.getTestId('form-submit').should('be.disabled')
// enables save when required fields have values
- cy.getTestId('certificate-form-cert').type(certificate1.cert)
- cy.getTestId('certificate-form-key').type(certificate1.key)
+ cy.getTestId('certificate-form-cert').type(certificate1.cert, { delay: 0 })
+ cy.getTestId('certificate-form-key').type(certificate1.key, { delay: 0 })
// replaces all the newlines with spaces; this should fail the validation
- cy.getTestId('certificate-form-cert-alt').type(secp384r1CertKeyPair.cert)
- cy.getTestId('certificate-form-key-alt').type(secp384r1CertKeyPair.key)
+ cy.getTestId('certificate-form-cert-alt').type(secp384r1CertKeyPair.cert, { delay: 0 })
+ cy.getTestId('certificate-form-key-alt').type(secp384r1CertKeyPair.key, { delay: 0 })
+
+ cy.getTestId('form-submit').should('be.enabled')
+
+ cy.get('@vueWrapper').then((wrapper: any) => wrapper.findComponent(EntityBaseForm)
+ .vm.$emit('submit'))
+
+ cy.wait('@validateCertificate').its('response.statusCode').should('eq', 200)
+ cy.wait('@createCertificate').its('response.statusCode').should('eq', 200)
+ })
+
+ it('should not fail when SNI is provided', () => {
+ interceptKM()
+ interceptUpdate()
+
+ cy.mount(CertificateForm, {
+ props: {
+ config: baseConfigKM,
+ showSnisField: true,
+ },
+ }).then(({ wrapper }) => wrapper)
+ .as('vueWrapper')
+
+ cy.get('.kong-ui-entities-certificates-form').should('be.visible')
+ // default button state
+ cy.getTestId('form-cancel').should('be.visible')
+ cy.getTestId('form-submit').should('be.visible')
+ cy.getTestId('form-cancel').should('be.enabled')
+ cy.getTestId('form-submit').should('be.disabled')
+ cy.getTestId('certificate-form-cert').type(certificate1.cert, { delay: 0 })
+ cy.getTestId('certificate-form-key').type(certificate1.key, { delay: 0 })
+ cy.getTestId('sni-field-input-1').type('foo')
cy.getTestId('form-submit').should('be.enabled')
@@ -391,6 +427,7 @@ describe('', () => {
cy.mount(CertificateForm, {
props: {
config: baseConfigKonnect,
+ showSnisField: true,
},
})
@@ -406,6 +443,7 @@ describe('', () => {
cy.getTestId('certificate-form-key').should('be.visible')
cy.getTestId('certificate-form-cert-alt').should('be.visible')
cy.getTestId('certificate-form-key-alt').should('be.visible')
+ cy.getTestId('sni-field-input-1').should('be.visible')
cy.getTestId('certificate-form-tags').should('be.visible')
})
@@ -422,8 +460,8 @@ describe('', () => {
cy.getTestId('form-cancel').should('be.enabled')
cy.getTestId('form-submit').should('be.disabled')
// enables save when required fields have values
- cy.getTestId('certificate-form-cert').type(certificate1.cert)
- cy.getTestId('certificate-form-key').type(certificate1.key)
+ cy.getTestId('certificate-form-cert').type(certificate1.cert, { delay: 0 })
+ cy.getTestId('certificate-form-key').type(certificate1.key, { delay: 0 })
cy.getTestId('form-submit').should('be.enabled')
// disables save when required field is cleared
cy.getTestId('certificate-form-cert').clear()
@@ -550,12 +588,12 @@ describe('', () => {
cy.getTestId('form-cancel').should('be.enabled')
cy.getTestId('form-submit').should('be.disabled')
// enables save when required fields have values
- cy.getTestId('certificate-form-cert').type(certificate1.cert)
- cy.getTestId('certificate-form-key').type(certificate1.key)
+ cy.getTestId('certificate-form-cert').type(certificate1.cert, { delay: 0 })
+ cy.getTestId('certificate-form-key').type(certificate1.key, { delay: 0 })
// replaces all the newlines with spaces; this should fail the validation
- cy.getTestId('certificate-form-cert-alt').type(secp384r1CertKeyPair.cert.replaceAll('\n', ' '))
- cy.getTestId('certificate-form-key-alt').type(secp384r1CertKeyPair.key.replaceAll('\n', ' '))
+ cy.getTestId('certificate-form-cert-alt').type(secp384r1CertKeyPair.cert.replaceAll('\n', ' '), { delay: 0 })
+ cy.getTestId('certificate-form-key-alt').type(secp384r1CertKeyPair.key.replaceAll('\n', ' '), { delay: 0 })
cy.getTestId('form-submit').should('be.enabled')
@@ -583,12 +621,43 @@ describe('', () => {
cy.getTestId('form-cancel').should('be.enabled')
cy.getTestId('form-submit').should('be.disabled')
// enables save when required fields have values
- cy.getTestId('certificate-form-cert').type(certificate1.cert)
- cy.getTestId('certificate-form-key').type(certificate1.key)
+ cy.getTestId('certificate-form-cert').type(certificate1.cert, { delay: 0 })
+ cy.getTestId('certificate-form-key').type(certificate1.key, { delay: 0 })
// replaces all the newlines with spaces; this should fail the validation
- cy.getTestId('certificate-form-cert-alt').type(secp384r1CertKeyPair.cert)
- cy.getTestId('certificate-form-key-alt').type(secp384r1CertKeyPair.key)
+ cy.getTestId('certificate-form-cert-alt').type(secp384r1CertKeyPair.cert, { delay: 0 })
+ cy.getTestId('certificate-form-key-alt').type(secp384r1CertKeyPair.key, { delay: 0 })
+
+ cy.getTestId('form-submit').should('be.enabled')
+
+ cy.get('@vueWrapper').then((wrapper: any) => wrapper.findComponent(EntityBaseForm)
+ .vm.$emit('submit'))
+
+ cy.wait('@validateCertificate').its('response.statusCode').should('eq', 200)
+ cy.wait('@createCertificate').its('response.statusCode').should('eq', 200)
+ })
+
+ it('should not fail when SNI is provided', () => {
+ interceptKonnect()
+ interceptUpdate()
+
+ cy.mount(CertificateForm, {
+ props: {
+ config: baseConfigKonnect,
+ showSnisField: true,
+ },
+ }).then(({ wrapper }) => wrapper)
+ .as('vueWrapper')
+
+ cy.get('.kong-ui-entities-certificates-form').should('be.visible')
+ // default button state
+ cy.getTestId('form-cancel').should('be.visible')
+ cy.getTestId('form-submit').should('be.visible')
+ cy.getTestId('form-cancel').should('be.enabled')
+ cy.getTestId('form-submit').should('be.disabled')
+ cy.getTestId('certificate-form-cert').type(certificate1.cert, { delay: 0 })
+ cy.getTestId('certificate-form-key').type(certificate1.key, { delay: 0 })
+ cy.getTestId('sni-field-input-1').type('foo')
cy.getTestId('form-submit').should('be.enabled')