package com.yahoo.config.application;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeploymentInstanceSpec;
import com.yahoo.config.application.api.xml.DeploymentSpecXmlReader;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.Tags;
import org.junit.Test;
import org.w3c.dom.Document;
import javax.xml.transform.TransformerException;
import java.io.File;
import java.io.IOException;
import static org.junit.Assert.assertEquals;
public class HostedOverrideProcessorComplexTest {
private static final String servicesFile = "src/test/resources/complex-app/services.xml";
@Test
public void testProdBetaUsWest2a() throws TransformerException, IOException {
String expected =
"""
1
1
""";
assertOverride(InstanceName.from("beta1"),
Environment.prod,
RegionName.from("aws-us-west-2a"),
expected);
}
@Test
public void testProdBetaUsEast1b() throws TransformerException, IOException {
String expected =
"""
1
1
""";
assertOverride(InstanceName.from("beta1"),
Environment.prod,
RegionName.from("aws-us-east-1b"),
expected);
}
private void assertOverride(InstanceName instance, Environment environment, RegionName region, String expected) throws TransformerException {
ApplicationPackage app = FilesApplicationPackage.fromFile(new File(servicesFile).getParentFile());
Document inputDoc = Xml.getDocument(app.getServices());
Tags tags = app.getDeploymentSpec().instance(instance).map(DeploymentInstanceSpec::tags).orElse(Tags.empty());
Document newDoc = new OverrideProcessor(instance, environment, region, tags).process(inputDoc);
assertEquals(expected, Xml.documentAsString(newDoc, true));
}
}