Skip to content

Commit f8720b9

Browse files
committed
D-10596: added testing for Guid datatypes null values and valids values
1 parent fe24848 commit f8720b9

File tree

3 files changed

+80
-1
lines changed

3 files changed

+80
-1
lines changed

src/main/java/com/versionone/apiclient/AttributeDefinition.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import javax.xml.xpath.XPathFactory;
88

99
import org.apache.commons.lang.NullArgumentException;
10+
import org.apache.commons.lang.StringUtils;
1011
import org.w3c.dom.Element;
1112

1213
import com.versionone.DB;
@@ -117,7 +118,7 @@ public Object coerce(Object value) throws V1Exception {
117118
case Blob:
118119
return value;
119120
case Guid:
120-
if (value == null)
121+
if (value == null || StringUtils.isEmpty(value.toString()))
121122
throw new NullArgumentException("value");
122123
return UUID.fromString(new DB.Str(value).getValue());
123124
default:

src/test/java/com/versionone/sdk/unit/tests/ServicesTests.java

+52
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,15 @@
22

33
import com.github.tomakehurst.wiremock.WireMockServer;
44
import com.github.tomakehurst.wiremock.junit.WireMockRule;
5+
import com.sun.jna.platform.win32.Guid.GUID;
56
import com.versionone.apiclient.*;
7+
import com.versionone.apiclient.exceptions.APIException;
8+
import com.versionone.apiclient.exceptions.ConnectionException;
9+
import com.versionone.apiclient.exceptions.OidException;
610
import com.versionone.apiclient.exceptions.V1Exception;
11+
import com.versionone.apiclient.filters.FilterTerm;
12+
13+
import org.apache.commons.lang.NullArgumentException;
714
import org.junit.Assert;
815
import org.junit.Rule;
916
import org.junit.Test;
@@ -14,6 +21,7 @@
1421
import com.versionone.apiclient.services.QueryResult;
1522

1623
import java.net.MalformedURLException;
24+
import java.util.UUID;
1725

1826
import static com.github.tomakehurst.wiremock.client.WireMock.*;
1927

@@ -155,4 +163,48 @@ public void TestHasChangedOnAttributeSet() throws Exception {
155163
asset.setAttributeValue(nameAttributeDefinition, "Fred");
156164
Assert.assertTrue(asset.hasChanged());
157165
}
166+
167+
@Test
168+
public void Asset_with_valid_Guid_Attribute() throws ConnectionException, APIException, OidException {
169+
UUID payloadGuid = UUID.fromString("98771fb4-71b8-42ec-be8b-69414daa020e");
170+
171+
Services subject = new Services(getMeta(), getDataConnector());
172+
IAssetType publicationType = getMeta().getAssetType("Publication");
173+
IAttributeDefinition payloadAttribute = publicationType.getAttributeDefinition("Payload");
174+
175+
Query query = new Query(publicationType);
176+
query.getSelection().add(payloadAttribute);
177+
FilterTerm filter = new FilterTerm(payloadAttribute);
178+
filter.equal(payloadGuid);
179+
query.setFilter(filter);
180+
181+
QueryResult result = subject.retrieve(query);
182+
183+
UUID payloadFromResult = (UUID) result.getAssets()[0].getAttribute(payloadAttribute).getValue();
184+
185+
Assert.assertEquals(payloadGuid, payloadFromResult);
186+
}
187+
188+
@Test
189+
public void Asset_with_null_Guid_Attribute() throws OidException {
190+
Services subject = new Services(getMeta(), getDataConnector());
191+
Query query = new Query(Oid.fromToken("Publication:12346", getMeta()));
192+
193+
IAssetType publicationType = getMeta().getAssetType("Publication");
194+
IAttributeDefinition payloadAttribute = publicationType
195+
.getAttributeDefinition("Payload");
196+
query.getSelection().add(payloadAttribute);
197+
198+
try {
199+
subject.retrieve(query);
200+
} catch (NullArgumentException ex) {
201+
Assert.assertEquals(
202+
"value must not be null.",
203+
ex.getMessage());
204+
return;
205+
} catch (Exception ex) {
206+
Assert.fail("Expected to raise ApiException, but did not.");
207+
}
208+
}
209+
158210
}

testdata/TestData.xml

+26
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,32 @@
418418
<Asset href="/VersionOne/rest-1.v1/Data/Member/1001" idref="Member:1001" />
419419
</Relation>
420420
</Response>
421+
<Response path="meta.v1/Publication">
422+
<AssetType href="/v1.six/meta.v1/Publication" version="16.3.2.207" name="Publication" token="Publication" displayname="AssetType'Publication" abstract="False">
423+
<DefaultOrderBy href="/v1.six/meta.v1/Publication/Name" tokenref="Publication.Name"/>
424+
<DefaultDisplayBy href="/v1.six/meta.v1/Publication/Name" tokenref="Publication.Name"/>
425+
<Name href="/v1.six/meta.v1/Publication/Name" tokenref="Publication.Name"/>
426+
<AttributeDefinition name="ID" token="Publication.ID" displayname="AttributeDefinition'ID'Publication" attributetype="Relation" isreadonly="True" isrequired="False" ismultivalue="False" iscanned="True" iscustom="False">
427+
<ReciprocalRelation href="/v1.six/meta.v1/Publication/ID" tokenref="Publication.ID"/>
428+
<OrderByAttribute href="/v1.six/meta.v1/Publication/ID" tokenref="Publication.ID"/>
429+
<DisplayByAttribute href="/v1.six/meta.v1/Publication/Name" tokenref="Publication.Name"/>
430+
<RelatedAsset nameref="Publication" href="/v1.six/meta.v1/Publication"/>
431+
</AttributeDefinition>
432+
<AttributeDefinition href="/v1.six/meta.v1/Publication/Payload" of="/v1.six/meta.v1/Publication" version="16.3.2.207" name="Payload" token="Publication.Payload" displayname="AttributeDefinition'Payload'Publication" attributetype="Guid" isreadonly="False" isrequired="True" ismultivalue="False" iscanned="True" iscustom="False">
433+
<OrderByAttribute href="/v1.six/meta.v1/Publication/Payload" tokenref="Publication.Payload"/>
434+
</AttributeDefinition>
435+
</AssetType>
436+
</Response>
437+
<Response path="rest-1.v1/Data/Publication?sel=Publication.Payload&amp;where=Publication.Payload='98771fb4-71b8-42ec-be8b-69414daa020e'">
438+
<Asset href="/V1Production/rest-1.v1/Publication/12345" id="Publication:12345">
439+
<Attribute name="Payload">98771fb4-71b8-42ec-be8b-69414daa020e</Attribute>
440+
</Asset>
441+
</Response>
442+
<Response path="rest-1.v1/Data/Publication/12346/Payload?">
443+
<Asset href="/V1Production/rest-1.v1/Publication/12346" id="Publication:12346">
444+
<Attribute name="Payload"></Attribute>
445+
</Asset>
446+
</Response>
421447
</Test>
422448
<Test name="V1ConfigurationTester">
423449
<Response path="config.v1/TrueOffOff">

0 commit comments

Comments
 (0)