ZTSImpl implements KeyStore, ZTSHandler { Principal createPrincipalForName(String principalName) { String domain; String name; int idx = principalName.lastIndexOf('.'); if (idx == -1) { domain = userDomain; name = principalName; } else { domain = principalName.substring(0, idx); if (userDomainAlias != null && userDomainAlias.equals(domain)) { domain = userDomain; } name = principalName.substring(idx + 1); } return SimplePrincipal.create(domain, name, (String) null); } ZTSImpl();  ZTSImpl(CloudStore implCloudStore, DataStore implDataStore); @Override String getPublicKey(String domain, String service, String keyId); ServiceIdentity getServiceIdentity(ResourceContext ctx, String domainName, String serviceName); PublicKeyEntry getPublicKeyEntry(ResourceContext ctx, String domainName,
            String serviceName, String keyId); ServiceIdentityList getServiceIdentityList(ResourceContext ctx, String domainName); HostServices getHostServices(ResourceContext ctx, String host); Response getDomainSignedPolicyData(ResourceContext ctx, String domainName, String matchingTag); TenantDomains getTenantDomains(ResourceContext ctx, String providerDomainName,
            String userName, String roleName, String serviceName); @Override RoleToken getRoleToken(ResourceContext ctx, String domainName, String roleNames,
            Integer minExpiryTime, Integer maxExpiryTime, String proxyForPrincipal); @Override AccessTokenResponse postAccessTokenRequest(ResourceContext ctx, String request); RoleAccess getRoleAccess(ResourceContext ctx, String domainName, String principal); @Override RoleToken postRoleCertificateRequest(ResourceContext ctx, String domainName,
            String roleName, RoleCertificateRequest req); @Override RoleCertificate postRoleCertificateRequestExt(ResourceContext ctx, RoleCertificateRequest req); AWSTemporaryCredentials getAWSTemporaryCredentials(ResourceContext ctx, String domainName,
            String roleName, Integer durationSeconds, String externalId); @Override Response postInstanceRegisterInformation(ResourceContext ctx, InstanceRegisterInformation info); @Override InstanceIdentity postInstanceRefreshInformation(ResourceContext ctx, String provider,
            String domain, String service, String instanceId, InstanceRefreshInformation info); @Override void deleteInstanceIdentity(ResourceContext ctx, String provider,
            String domain, String service, String instanceId); @Deprecated @Override Identity postInstanceRefreshRequest(ResourceContext ctx, String domain,
            String service, InstanceRefreshRequest req); @Override Response postSSHCertRequest(ResourceContext ctx, SSHCertRequest certRequest); @Override JWKList getJWKList(ResourceContext ctx, Boolean rfc); @Deprecated @Override Identity postOSTKInstanceRefreshRequest(ResourceContext ctx, String domain,
            String service, OSTKInstanceRefreshRequest req); @Override ResourceAccess getResourceAccessExt(ResourceContext ctx, String action, String resource,
            String trustDomain, String checkPrincipal); @Override ResourceAccess getResourceAccess(ResourceContext ctx, String action, String resource,
            String trustDomain, String checkPrincipal); @Override Access getAccess(ResourceContext ctx, String domainName, String roleName,
            String principal); CertificateAuthorityBundle getCertificateAuthorityBundle(ResourceContext ctx, String name); @Override DomainMetrics postDomainMetrics(ResourceContext ctx, String domainName,
            DomainMetrics domainMetrics); @Override Status getStatus(ResourceContext ctx); @Override Schema getRdlSchema(ResourceContext context); ResourceContext newResourceContext(HttpServletRequest request,
                                              HttpServletResponse response,
                                              String apiName); static String getRootDir(); void recordMetrics(ResourceContext ctx, int httpStatus);  }
@Test public void testCreatePrincipalForName() { Principal principal = zts.createPrincipalForName("athenz.provider"); assertEquals(principal.getDomain(), "athenz"); assertEquals(principal.getName(), "provider"); principal = zts.createPrincipalForName("athenz.subdomain.provider"); assertEquals(principal.getDomain(), "athenz.subdomain"); assertEquals(principal.getName(), "provider"); principal = zts.createPrincipalForName("provider"); assertEquals(principal.getDomain(), zts.userDomain); assertEquals(principal.getName(), "provider"); zts.userDomain = "user"; zts.userDomainAlias = null; principal = zts.createPrincipalForName("joe"); assertEquals(principal.getFullName(), "user.joe"); principal = zts.createPrincipalForName("joe-smith"); assertEquals(principal.getFullName(), "user.joe-smith"); principal = zts.createPrincipalForName("user.joe"); assertEquals(principal.getFullName(), "user.joe"); principal = zts.createPrincipalForName("user.joe.storage"); assertEquals(principal.getFullName(), "user.joe.storage"); principal = zts.createPrincipalForName("alias.joe"); assertEquals(principal.getFullName(), "alias.joe"); principal = zts.createPrincipalForName("alias.joe.storage"); assertEquals(principal.getFullName(), "alias.joe.storage"); zts.userDomainAlias = "alias"; principal = zts.createPrincipalForName("joe"); assertEquals(principal.getFullName(), "user.joe"); principal = zts.createPrincipalForName("joe-smith"); assertEquals(principal.getFullName(), "user.joe-smith"); principal = zts.createPrincipalForName("user.joe"); assertEquals(principal.getFullName(), "user.joe"); principal = zts.createPrincipalForName("user.joe.storage"); assertEquals(principal.getFullName(), "user.joe.storage"); principal = zts.createPrincipalForName("alias.joe"); assertEquals(principal.getFullName(), "user.joe"); principal = zts.createPrincipalForName("alias.joe.storage"); assertEquals(principal.getFullName(), "alias.joe.storage"); }