package com.thoughtworks.go.plugin.access.configrepo.contract.material;
import com.google.gson.JsonObject;
import com.thoughtworks.go.plugin.access.configrepo.contract.CRBaseTest;
import org.junit.Test;
import java.util.Map;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
public class CRP4MaterialTest extends CRBaseTest<CRP4Material> {
private final String exampleView = "//depot/dev/src... //anything/src/...";
private final CRP4Material p4simple;
private final CRP4Material p4custom;
private final CRP4Material invalidP4NoView;
private final CRP4Material invalidP4NoServer;
private final CRP4Material invalidPasswordAndEncyptedPasswordSet;
public CRP4MaterialTest()
{
p4simple = new CRP4Material("10.18.3.102:1666",exampleView);
p4custom= new CRP4Material(
"p4materialName", "dir1", false,"10.18.3.102:1666",exampleView,"user1","pass1", false,false,"lib","tools");
invalidP4NoView = new CRP4Material("10.18.3.102:1666",null);
invalidP4NoServer = new CRP4Material(null,exampleView);
invalidPasswordAndEncyptedPasswordSet = new CRP4Material("10.18.3.102:1666",null);
invalidPasswordAndEncyptedPasswordSet.setPassword("pa$sw0rd");
invalidPasswordAndEncyptedPasswordSet.setEncryptedPassword("26t=$j64");
}
@Override
public void addGoodExamples(Map<String, CRP4Material> examples) {
examples.put("p4simple",p4simple);
examples.put("p4custom",p4custom);
}
@Override
public void addBadExamples(Map<String, CRP4Material> examples) {
examples.put("invalidP4NoView",invalidP4NoView);
examples.put("invalidP4NoServer",invalidP4NoServer);
examples.put("invalidPasswordAndEncyptedPasswordSet",invalidPasswordAndEncyptedPasswordSet);
}
@Test
public void shouldAppendTypeFieldWhenSerializingMaterials()
{
CRMaterial value = p4custom;
JsonObject jsonObject = (JsonObject)gson.toJsonTree(value);
assertThat(jsonObject.get("type").getAsString(), is(CRP4Material.TYPE_NAME));
}
@Test
public void shouldHandlePolymorphismWhenDeserializing()
{
CRMaterial value = p4custom;
String json = gson.toJson(value);
CRP4Material deserializedValue = (CRP4Material)gson.fromJson(json,CRMaterial.class);
assertThat(String.format("Deserialized value should equal to value before serialization"),
deserializedValue,is(value));
}
}