diff --git a/test/iam/platform-invitation/assertions/assert-email-exists.yaml b/test/iam/platform-invitation/assertions/assert-email-exists.yaml new file mode 100644 index 00000000..bb54cf97 --- /dev/null +++ b/test/iam/platform-invitation/assertions/assert-email-exists.yaml @@ -0,0 +1,5 @@ +apiVersion: notification.miloapis.com/v1alpha1 +kind: Email +metadata: + name: (join('-', [$pi.metadata.uid, 'platform-invitation-e2e'])) + namespace: milo-system diff --git a/test/iam/platform-invitation/assertions/assert-platforminvitation-ready.yaml b/test/iam/platform-invitation/assertions/assert-platforminvitation-ready.yaml new file mode 100644 index 00000000..55f02710 --- /dev/null +++ b/test/iam/platform-invitation/assertions/assert-platforminvitation-ready.yaml @@ -0,0 +1,11 @@ +apiVersion: iam.miloapis.com/v1alpha1 +kind: PlatformInvitation +metadata: + name: platform-invitation-e2e +status: + conditions: + - type: Ready + status: "True" + reason: Reconciled + + diff --git a/test/iam/platform-invitation/assertions/assert-user-approved.yaml b/test/iam/platform-invitation/assertions/assert-user-approved.yaml new file mode 100644 index 00000000..47e345e4 --- /dev/null +++ b/test/iam/platform-invitation/assertions/assert-user-approved.yaml @@ -0,0 +1,8 @@ +apiVersion: iam.miloapis.com/v1alpha1 +kind: User +metadata: + name: platform-invited-user +status: + registrationApproval: Approved + + diff --git a/test/iam/platform-invitation/assertions/platformaccessapproval-exists.yaml b/test/iam/platform-invitation/assertions/platformaccessapproval-exists.yaml new file mode 100644 index 00000000..42ee10d1 --- /dev/null +++ b/test/iam/platform-invitation/assertions/platformaccessapproval-exists.yaml @@ -0,0 +1,7 @@ +apiVersion: iam.miloapis.com/v1alpha1 +kind: PlatformAccessApproval +metadata: + name: (join('-', [$pi.metadata.uid, 'platform-invitation-e2e'])) +spec: + subjectRef: + email: invited.user@example.com diff --git a/test/iam/platform-invitation/chainsaw-test.yaml b/test/iam/platform-invitation/chainsaw-test.yaml new file mode 100644 index 00000000..1a817e7f --- /dev/null +++ b/test/iam/platform-invitation/chainsaw-test.yaml @@ -0,0 +1,62 @@ +apiVersion: chainsaw.kyverno.io/v1alpha1 +kind: Test +metadata: + name: platform-invitation +spec: + description: | + Validate PlatformInvitation end-to-end: + - Load EmailTemplate used by the controller + - Create PlatformInvitation + - Verify PlatformInvitation Ready=True + - Verify Email created in milo-system + - Create User with matching email + - Verify User registrationApproval=Approved + steps: + - name: setup-template + description: Apply the EmailTemplate required by PlatformInvitation controller + try: + - apply: + file: resources/email-template.yaml + + - name: create-invitation + description: Create the PlatformInvitation + try: + - apply: + file: resources/platform-invitation.yaml + outputs: + - name: pi + value: (@) + - wait: + apiVersion: iam.miloapis.com/v1alpha1 + kind: PlatformInvitation + name: platform-invitation-e2e + timeout: 2m + for: + condition: + name: Ready + value: 'True' + - assert: + file: assertions/assert-platforminvitation-ready.yaml + - assert: + file: assertions/assert-email-exists.yaml + - assert: + file: assertions/platformaccessapproval-exists.yaml + + - name: create-user-and-verify + description: Create the User and verify registrationApproval becomes Approved + try: + - apply: + file: resources/user.yaml + - wait: + apiVersion: iam.miloapis.com/v1alpha1 + kind: User + name: platform-invited-user + timeout: 2m + for: + condition: + name: Ready + value: 'True' + - assert: + file: assertions/assert-user-approved.yaml + + diff --git a/test/iam/platform-invitation/resources/email-template.yaml b/test/iam/platform-invitation/resources/email-template.yaml new file mode 100644 index 00000000..d40dace8 --- /dev/null +++ b/test/iam/platform-invitation/resources/email-template.yaml @@ -0,0 +1,313 @@ +apiVersion: notification.miloapis.com/v1alpha1 +kind: EmailTemplate +metadata: + name: emailtemplates.notification.miloapis.com-platforminvitationemailtemplate +spec: + subject: "You're invited to join Datum's private beta" + htmlBody: | + + + + + + + + + + + + + + +
+ Join Datum's private beta - exclusive access to our open network + cloud +
+  ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ ‌​‍‎‏ +
+
+ + + + + + + +
+ + + + + + +
+ + + + + + +
+ Datum +
+
+ + + + + + +
+ + + +

+ Hi + {{.UserName}}, +

+

+ We're building an open network cloud to + help the next generation of builders get + access to some of the building blocks of the + internet. I'm hoping you'll take + some time to kick the tires during our + private beta. +

+

+ We're intentionally keeping this group + small so we can listen closely to feedback. +

+ Get started +

+ Let me know your thoughts? +

+

+ Cheers,

Zac Smith
Co-founder + & CEO at Datum +

+ + +
+
+ + + + + + +
+
+

+ Datum unlocks cloud superpowers, without getting + in the way. Find out more about Datum at + datum.net +

+ + + + + + + +
+ GitHub + + LinkedIn +
+

+ Datum Technology Inc.
29 Broadway
New + York City
NY, 10006 +

+
+
+
+ + + + + + textBody: | + ---------------------------------------- + + HI {{.UserName}}, + + We're building an open network cloud to help the next generation of builders get access to some of the building blocks of the internet. I'm hoping you'll take some time to kick the tires during our private beta. + + We're intentionally keeping this group small so we can listen closely to feedback. + + Get started {{.ActionUrl}} + + Let me know your thoughts? + + Cheers, + + Zac Smith + Co-founder & CEO at Datum + + ---------------------------------------- + + Datum unlocks cloud superpowers, without getting in the way. Find out more about Datum at datum.net https://www.datum.net + + https://github.com/datum-cloud https://www.linkedin.com/company/datum-cloud + + Datum Technology Inc. + 29 Broadway + New York City + NY, 10006 + + variables: + - name: "UserName" + required: true + type: "string" + - name: "ActionUrl" + required: true + type: "string" + diff --git a/test/iam/platform-invitation/resources/platform-invitation.yaml b/test/iam/platform-invitation/resources/platform-invitation.yaml new file mode 100644 index 00000000..7527e43b --- /dev/null +++ b/test/iam/platform-invitation/resources/platform-invitation.yaml @@ -0,0 +1,10 @@ +apiVersion: iam.miloapis.com/v1alpha1 +kind: PlatformInvitation +metadata: + name: platform-invitation-e2e +spec: + email: invited.user@example.com + givenName: Invited + familyName: User + + diff --git a/test/iam/platform-invitation/resources/user.yaml b/test/iam/platform-invitation/resources/user.yaml new file mode 100644 index 00000000..885617cf --- /dev/null +++ b/test/iam/platform-invitation/resources/user.yaml @@ -0,0 +1,10 @@ +apiVersion: iam.miloapis.com/v1alpha1 +kind: User +metadata: + name: platform-invited-user +spec: + email: invited.user@example.com + givenName: Invited + familyName: User + +