|
1 | 1 | import { describe, expect, it } from "@jest/globals"; |
2 | | -import { generateSecretData } from "./client-sync"; |
| 2 | +import { extractSamlCertificateFromXML, generateSecretData } from "./client-sync"; |
3 | 3 | import { Client } from "./types"; |
4 | 4 |
|
5 | 5 | const mockClient: Client = { |
@@ -60,6 +60,41 @@ const mockClientStringified: Record<string, string> = { |
60 | 60 | standardFlowEnabled: "true", |
61 | 61 | }; |
62 | 62 |
|
| 63 | +describe("Test XML Extraction Using Regex", () => { |
| 64 | + it("extract xml", async () => { |
| 65 | + // Sample XML string with namespace prefixes |
| 66 | + const xmlString = ` |
| 67 | + <md:EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://keycloak.admin.uds.dev/realms/uds"> |
| 68 | + <md:IDPSSODescriptor WantAuthnRequestsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> |
| 69 | + <md:KeyDescriptor use="signing"> |
| 70 | + <ds:KeyInfo> |
| 71 | + <ds:KeyName>SO1zm7gOpX2xlm16-pZ08zOJui0i7PwEHIqM6h4d9Sw</ds:KeyName> |
| 72 | + <ds:X509Data> |
| 73 | + <ds:X509Certificate>FOUND THE CERT</ds:X509Certificate> |
| 74 | + </ds:X509Data> |
| 75 | + </ds:KeyInfo> |
| 76 | + </md:KeyDescriptor> |
| 77 | + <md:ArtifactResolutionService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://keycloak.admin.uds.dev/realms/uds/protocol/saml/resolve" index="0"></md:ArtifactResolutionService> |
| 78 | + <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://keycloak.admin.uds.dev/realms/uds/protocol/saml"></md:SingleLogoutService> |
| 79 | + <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://keycloak.admin.uds.dev/realms/uds/protocol/saml"></md:SingleLogoutService> |
| 80 | + <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" Location="https://keycloak.admin.uds.dev/realms/uds/protocol/saml"></md:SingleLogoutService> |
| 81 | + <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://keycloak.admin.uds.dev/realms/uds/protocol/saml"></md:SingleLogoutService> |
| 82 | + <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat> |
| 83 | + <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat> |
| 84 | + <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat> |
| 85 | + <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat> |
| 86 | + <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://keycloak.admin.uds.dev/realms/uds/protocol/saml"></md:SingleSignOnService> |
| 87 | + <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://keycloak.admin.uds.dev/realms/uds/protocol/saml"></md:SingleSignOnService> |
| 88 | + <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://keycloak.admin.uds.dev/realms/uds/protocol/saml"></md:SingleSignOnService> |
| 89 | + <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" Location="https://keycloak.admin.uds.dev/realms/uds/protocol/saml"></md:SingleSignOnService> |
| 90 | + </md:IDPSSODescriptor> |
| 91 | + </md:EntityDescriptor> |
| 92 | + `; |
| 93 | + |
| 94 | + expect(extractSamlCertificateFromXML(xmlString)).toEqual("FOUND THE CERT"); |
| 95 | + }); |
| 96 | +}); |
| 97 | + |
63 | 98 | describe("Test Secret & Template Data Generation", () => { |
64 | 99 | it("generates data without template", async () => { |
65 | 100 | const expected: Record<string, string> = {}; |
|
0 commit comments