Skip to content
This repository was archived by the owner on Jun 5, 2025. It is now read-only.

Commit 6212e39

Browse files
authored
Merge pull request #112 from Venafi/contacts-support
Fix Policy contacts multiple matching in TPP
2 parents 40df511 + 562998c commit 6212e39

3 files changed

Lines changed: 26 additions & 4 deletions

File tree

src/main/java/com/venafi/vcert/sdk/connectors/tpp/AbstractTppConnector.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.time.Instant;
66
import java.util.*;
77
import java.util.concurrent.TimeUnit;
8+
import java.util.stream.Collectors;
89

910
import com.venafi.vcert.sdk.connectors.tpp.endpoint.BrowseIdentitiesResponse;
1011
import com.venafi.vcert.sdk.connectors.tpp.endpoint.BrowseIdentitiesRequest;
@@ -126,7 +127,8 @@ public TPPPolicy getTPPPolicy(String policyName) throws VCertException {
126127
protected String[] resolveTPPContacts(String[] contacts) throws VCertException{
127128
List<String> identitiesIdList = new ArrayList<>();
128129
if (contacts != null){
129-
for (String contact: contacts) {
130+
HashSet<String> contactSet = Arrays.stream(contacts).collect(Collectors.toCollection(HashSet::new));
131+
for (String contact: contactSet) {
130132
IdentityEntry identity = this.getTPPIdentity(contact);
131133
identitiesIdList.add(identity.prefixedUniversal());
132134
}
@@ -145,11 +147,22 @@ public IdentityEntry getTPPIdentity(String username) throws VCertException{
145147
if (response.identities().length == 0){
146148
throw new TPPUsernameNotFoundException(username);
147149
}
150+
151+
IdentityEntry identity = null;
148152
if (response.identities().length > 1){
149-
throw new IdentityExtraneousInformationException(response.identities());
153+
for (IdentityEntry entry: response.identities()){
154+
if (entry.name().equalsIgnoreCase(username)){
155+
identity = entry;
156+
break;
157+
}
158+
}
159+
}else {
160+
identity = response.identities()[0];
150161
}
151162

152-
IdentityEntry identity = response.identities()[0];
163+
if (identity == null){
164+
throw new TPPUsernameNotFoundException(username);
165+
}
153166

154167
return identity;
155168
}

src/test/java/com/venafi/vcert/sdk/TestUtils.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public class TestUtils {
4949
public static final String TPP_PM_ROOT = System.getenv("TPP_PM_ROOT");
5050
public static final String TPP_CA_NAME = System.getenv("TPP_CA_NAME");
5151
public static final String CLIENT_ID = "vcert-sdk";
52+
public static final String TPP_IDENTITY_USER = System.getenv("TPP_IDENTITY_USER");
53+
5254
public static final String CLOUD_ZONE = System.getenv("CLOUDZONE");
5355
public static final String API_KEY = System.getenv("APIKEY");
5456
public static final String CLOUD_ENTRUST_CA_NAME = System.getenv("CLOUD_ENTRUST_CA_NAME");

src/test/java/com/venafi/vcert/sdk/connectors/tpp/TppTokenConnectorPolicyAT.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.venafi.vcert.sdk.connectors.tpp;
22

3-
import com.venafi.vcert.sdk.Config;
3+
import com.venafi.vcert.sdk.TestUtils;
44
import com.venafi.vcert.sdk.VCertException;
55
import com.venafi.vcert.sdk.connectors.tpp.endpoint.IdentityEntry;
66
import com.venafi.vcert.sdk.connectors.tpp.endpoint.IdentityInformation;
@@ -28,6 +28,13 @@ public void browseIdentities() throws VCertException {
2828
prefixedUniversal = identity.prefixedUniversal();
2929
}
3030

31+
// @Test
32+
// @DisplayName("TPP - Retrieve and Identity using a partial match. Ensure that only one entry is returned")
33+
// public void browseIdentitiesPartialMatch() throws VCertException {
34+
// IdentityEntry identity = connectorResource.connector().getTPPIdentity(TestUtils.TPP_IDENTITY_USER);
35+
// Assertions.assertEquals(TestUtils.TPP_IDENTITY_USER, identity.name());
36+
// }
37+
3138
@Test
3239
@DisplayName("TPP - Retrieve the details of an Identity Entry by prefixedUniversal")
3340
public void validateIdentity() throws VCertException {

0 commit comments

Comments
 (0)