| 1 | export const testCertificateBody = `-----BEGIN CERTIFICATE----- |
| 2 | MIICuDCCAaACCQDB190ctLeLgjANBgkqhkiG9w0BAQsFADAeMRwwGgYDVQQDDBNh |
| 3 | bGNoZW15LWVmZmVjdC10ZXN0MB4XDTI2MDMxMjE4NTczOVoXDTI3MDMxMjE4NTcz |
| 4 | OVowHjEcMBoGA1UEAwwTYWxjaGVteS1lZmZlY3QtdGVzdDCCASIwDQYJKoZIhvcN |
| 5 | AQEBBQADggEPADCCAQoCggEBAJwiwtc5eAckD66lQaHRj+1qHqIO2yaKsXV6DJFg |
| 6 | q1HhE//fup0fcJIPlKUDDfZlx1cIuvUVO0qlpg8mG9RwKm533j5ysiciBkxmIpvQ |
| 7 | 6xFLbfD/n3w2EcTPbJaqf7guO7hGlfP3wur/SNeKG5U/GuE2Ta6uqCEhj2XQHHdJ |
| 8 | 5Xgz1873txyYcG2+wDhpSbSMMaOvTCWu3BSek5zx0Y2tvb8gVSJQ6cXLf9EIPPUw |
| 9 | FaiY+oJ24f4BRssF8C++o2te9nFApmyL9cCoM352bj/h4s3LPS/Ogx+HsxUdTjFh |
| 10 | Lbrg25IosnUuX8ecQcO9R2Ftl4T5kLvb4KaA+knAo55oP9MCAwEAATANBgkqhkiG |
| 11 | 9w0BAQsFAAOCAQEAWKwbO5WCu6+kdEwXq59ZAdBHK/8DLL9frm/i+BaBD+Qjk/gF |
| 12 | uRBfUXMYvrayWxGnrGgbD5ltHkxkjfpcIoGXcoGiGkpssJ1PrmNhXU+GApvTlx/M |
| 13 | UIlY96wMzI+k3Vx8nGAuPfWr8+P7JmX0fPojw3XwlD8LICgZcik/q+Y8gf2JEza2 |
| 14 | dcFQa4gdhPj/lZuo9PJrogSnc7opgOkwWcpXHUiixqb/KLCPDFqnEXVjCP24NBGY |
| 15 | 0q4+AE4SoS1uYnh9DRx8lBM9TqahQGsk66OEp9/dUF23CBtRNuU7SS/5oH1Kgq8m |
| 16 | EI2bc6hl1tMiULo9WrvuVFknk1hx4/Yli2AMmQ== |
| 17 | -----END CERTIFICATE-----`; |
| 18 | |
| 19 | export const testPrivateKey = `-----BEGIN PRIVATE KEY----- |
| 20 | MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCcIsLXOXgHJA+u |
| 21 | pUGh0Y/tah6iDtsmirF1egyRYKtR4RP/37qdH3CSD5SlAw32ZcdXCLr1FTtKpaYP |
| 22 | JhvUcCpud94+crInIgZMZiKb0OsRS23w/598NhHEz2yWqn+4Lju4RpXz98Lq/0jX |
| 23 | ihuVPxrhNk2urqghIY9l0Bx3SeV4M9fO97ccmHBtvsA4aUm0jDGjr0wlrtwUnpOc |
| 24 | 8dGNrb2/IFUiUOnFy3/RCDz1MBWomPqCduH+AUbLBfAvvqNrXvZxQKZsi/XAqDN+ |
| 25 | dm4/4eLNyz0vzoMfh7MVHU4xYS264NuSKLJ1Ll/HnEHDvUdhbZeE+ZC72+CmgPpJ |
| 26 | wKOeaD/TAgMBAAECggEAfl1/1dLUOutLqexjxwSleN/HNR/S7EmZwFtsKojTfyws |
| 27 | FI3NKfdVE1F622YyebX79IvDTDHHz+1rDZ2pLnEtVkS7YU1QtG1MLa8H2ZXnehLT |
| 28 | QxaPzGayUNgTqYkKX1VDziuKl25xmeHM4W0MT+lH5vgdPQBsYIwZ06vwLfdnubTw |
| 29 | GPjXBYHexWrL/Bpm9lPPFcB3kGtQ5T51U34DrBKCKLuckZcdV//91dy8IvrYQsLU |
| 30 | SbEisoOlztn3IgweKbsMXdHoiKfH1IGiVPKAOReNnDpZWIQoorNHF9A90xuhfZHD |
| 31 | 9PZ4UDu0ywzPfCnY5wi8ZK9+MKgA1mNLDgbiKjY3IQKBgQDInGMnKBHL3lqKA93F |
| 32 | WFM2jukTWSToPn8jTGtdg6cJ6eXNu1y54Xf2Ws/Y2Opf26iWopmWGExJ6gsyPng6 |
| 33 | pUBZ3MyFdRF7/hX9tN2d9XmLB1ULjMQinljfEemmb/NEk8PmRvZiBEaQcWZqJd1H |
| 34 | 3J2aNf4IA+QsMCgvLjfiLWPfkQKBgQDHPsbuZcd8IeGbHgSfQ6NB4LG2dgtn+QL0 |
| 35 | fzW5ppS+cfRSZGlugAftL8yvE4lY0OL6KHn2GV4hHkbK4Jf1+3NtLNLP/ZUWG1n+ |
| 36 | CgQ0zbUiGe48Fjiw3t/eTVRmU5O342CeIlQx0ZCYgmh4HGYewtHWATHz87uPYjId |
| 37 | 6xdkE/w/IwKBgBwTZv0P6o2xrNIsAFmiJuM31P7UNwoZ1QlHpK8Nwc7tYTANzMhm |
| 38 | +bcMtpIOqZ6Iy2tpjj0nYWXmz3JUs9bhUcRB1o3G+I912/YJ3gpBVKVUfV6EcN63 |
| 39 | cpClnSGiAVXTqFMOE2VcW9PTSxYH/pQUGCqA6/CLOt/ETZtsyH1rBNNBAoGAE2GY |
| 40 | 6kG+SOXm0zb1TiS/Mb5QqyYKb/+5+NyS9k8s8uWU1Zrs4pHTs4/Nwk4NMzWGjrz3 |
| 41 | OCg5jtEqI7v7LDNchAczLoZFRVQ9ycdhp11HPFz3XqLuus3DSxWMmzOQD/gvQtKm |
| 42 | C/6NqTguP1jL2jwrOzz8hfV0jjsIEv72VIbZJ68CgYBVGQlMbxn0FgAKmkQjS3H8 |
| 43 | NxJgkyRs59+YrN9v3ZkHs7I2krxrFIWkOyNKgvaTt3/rpx0IK8URYoR+pAWA8I9r |
| 44 | hmxwC/rv7MHPe/R/EDnfLRgdpCV4MEP2nbHcVIN23z/VaxS07h3UXkc7iPibN5hY |
| 45 | 6GSLFl3fVUvo8nWbAm8/Bg== |
| 46 | -----END PRIVATE KEY-----`; |
| 47 | |
| 48 | export const testSshPublicKey = |
| 49 | "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf2JQ857siVWa30QTOix63EDnH3t6SzjmNp5ps1XDPrVCLbWMvvN2I17uRIydtWm3mM8BLz5JvDLbJMWgAo+imslqC+GW1UcDTzx8Hcrg5hUUSwHrYgpq6JBdIwVjshO/dgzGjnVIM9aYbKIOSYdahRrY9ORyyuEK+u46M+04GE6f5KYk0hQMXXdJTBsukXJMSz82kkTyRkyuLaw06+TCNLv+Ui8y9d2VtrG2cIeo6XWfGw+NTYG5O9BaBqxpuuDeslLfLtiTXy7E6dgTk9Qo6/5s30As2dcPLD8nwP1IKeKXCB1IvMWgiSV+lC8HlRgm2udGs92jW6pX4XZmMR2Wd alchemy-test-rsa"; |
| 50 | |
| 51 | const testCertificateBase64 = testCertificateBody.replace( |
| 52 | /-----BEGIN CERTIFICATE-----|-----END CERTIFICATE-----|\n/g, |
| 53 | "", |
| 54 | ); |
| 55 | |
| 56 | export const testSamlMetadataDocument = `<?xml version="1.0" encoding="UTF-8"?> |
| 57 | <EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" entityID="urn:alchemy:test:idp"> |
| 58 | <IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> |
| 59 | <KeyDescriptor use="signing"> |
| 60 | <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> |
| 61 | <X509Data> |
| 62 | <X509Certificate>${testCertificateBase64}</X509Certificate> |
| 63 | </X509Data> |
| 64 | </KeyInfo> |
| 65 | </KeyDescriptor> |
| 66 | <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://example.com/sso" /> |
| 67 | </IDPSSODescriptor> |
| 68 | </EntityDescriptor>`; |
| 69 | |
| 70 | export const testSamlMetadataDocumentUpdated = `<?xml version="1.0" encoding="UTF-8"?> |
| 71 | <EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" entityID="urn:alchemy:test:idp:updated"> |
| 72 | <IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> |
| 73 | <KeyDescriptor use="signing"> |
| 74 | <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> |
| 75 | <X509Data> |
| 76 | <X509Certificate>${testCertificateBase64}</X509Certificate> |
| 77 | </X509Data> |
| 78 | </KeyInfo> |
| 79 | </KeyDescriptor> |
| 80 | <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://example.com/sso/updated" /> |
| 81 | </IDPSSODescriptor> |
| 82 | </EntityDescriptor>`; |
| 83 | |
| 84 | export const testOidcUrl = "https://example.com/alchemy-oidc"; |
| 85 | // A distinct issuer URL for the `list` test. The OIDC provider ARN is derived |
| 86 | // deterministically from the URL, so reusing `testOidcUrl` would make the list |
| 87 | // test and the federation lifecycle test provision (and tear down) the same |
| 88 | // physical provider concurrently — give the list test its own resource. |
| 89 | export const testOidcListUrl = "https://example.com/alchemy-oidc-list"; |
| 90 | // Issuer for the GitHub-Actions-style federation e2e. The testing account |
| 91 | // already carries the real `token.actions.githubusercontent.com` provider |
| 92 | // (used by this repo's CI) and IAM allows exactly one provider per issuer |
| 93 | // URL per account — so the e2e federates against a stand-in issuer with |
| 94 | // identical trust mechanics instead of touching the CI provider. |
| 95 | export const testOidcGithubUrl = "https://example.com/alchemy-oidc-github"; |
| 96 | export const testOidcGithubHost = testOidcGithubUrl.replace(/^https?:\/\//, ""); |
| 97 | export const testOidcThumbprintA = "1111111111111111111111111111111111111111"; |
| 98 | export const testOidcThumbprintB = "2222222222222222222222222222222222222222"; |