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 CRSvnMaterialTest extends CRBaseTest<CRSvnMaterial> { private final CRSvnMaterial simpleSvn; private final CRSvnMaterial simpleSvnAuth; private final CRSvnMaterial customSvn; private final CRSvnMaterial invalidNoUrl; private final CRSvnMaterial invalidPasswordAndEncyptedPasswordSet; public CRSvnMaterialTest() { simpleSvn = new CRSvnMaterial(); simpleSvn.setUrl("http://mypublicrepo"); simpleSvnAuth = new CRSvnMaterial(); simpleSvnAuth.setUrl("http://myprivaterepo"); simpleSvnAuth.setUserName("john"); simpleSvnAuth.setPassword("pa$sw0rd"); customSvn = new CRSvnMaterial("svnMaterial1","destDir1", false, "http://svn","user1","pass1",true,false,"tools","lib"); invalidNoUrl = new CRSvnMaterial(); invalidPasswordAndEncyptedPasswordSet = new CRSvnMaterial(); invalidPasswordAndEncyptedPasswordSet.setUrl("http://myprivaterepo"); invalidPasswordAndEncyptedPasswordSet.setPassword("pa$sw0rd"); invalidPasswordAndEncyptedPasswordSet.setEncryptedPassword("26t=$j64"); } @Override public void addGoodExamples(Map<String, CRSvnMaterial> examples) { examples.put("simpleSvn",simpleSvn); examples.put("simpleSvnAuth",simpleSvnAuth); examples.put("customSvn",customSvn); } @Override public void addBadExamples(Map<String, CRSvnMaterial> examples) { examples.put("invalidNoUrl",invalidNoUrl); examples.put("invalidPasswordAndEncyptedPasswordSet",invalidPasswordAndEncyptedPasswordSet); } @Test public void shouldAppendTypeFieldWhenSerializingMaterials() { CRMaterial value = customSvn; JsonObject jsonObject = (JsonObject)gson.toJsonTree(value); assertThat(jsonObject.get("type").getAsString(), is(CRSvnMaterial.TYPE_NAME)); } @Test public void shouldHandlePolymorphismWhenDeserializing() { CRMaterial value = customSvn; String json = gson.toJson(value); CRSvnMaterial deserializedValue = (CRSvnMaterial)gson.fromJson(json,CRMaterial.class); assertThat(String.format("Deserialized value should equal to value before serialization"), deserializedValue,is(value)); } }