package com.sequenceiq.it.cloudbreak.recipes;
import java.util.HashSet;
import java.util.Set;
import org.apache.commons.codec.binary.Base64;
import org.springframework.util.Assert;
import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import com.sequenceiq.cloudbreak.api.endpoint.RecipeEndpoint;
import com.sequenceiq.cloudbreak.api.model.RecipeRequest;
import com.sequenceiq.cloudbreak.common.type.RecipeType;
import com.sequenceiq.it.IntegrationTestContext;
import com.sequenceiq.it.cloudbreak.AbstractCloudbreakIntegrationTest;
import com.sequenceiq.it.cloudbreak.CloudbreakITContextConstants;
public class RecipeCreationTest extends AbstractCloudbreakIntegrationTest {
@Test
@Parameters({ "name", "description", "preScript", "postScript" })
public void testRecipeCreation(String name, @Optional ("") String description, @Optional("") String preScript,
@Optional("") String postScript) throws Exception {
// GIVEN
// WHEN
if (!preScript.isEmpty()) {
createRecipe(name + "pre", preScript, RecipeType.PRE, description);
}
if (!postScript.isEmpty()) {
createRecipe(name + "post", postScript, RecipeType.POST, description);
}
}
private void addRecipeToContext(Long id) {
IntegrationTestContext itContext = getItContext();
Set<Long> recipeIds = itContext.getContextParam(CloudbreakITContextConstants.RECIPE_ID, Set.class);
recipeIds = recipeIds == null ? new HashSet<>() : recipeIds;
recipeIds.add(id);
itContext.putContextParam(CloudbreakITContextConstants.RECIPE_ID, recipeIds);
}
private void createRecipe(String name, String script, RecipeType recipeType, String description) {
RecipeRequest recipeRequest = new RecipeRequest();
recipeRequest.setRecipeType(recipeType);
recipeRequest.setName(name);
recipeRequest.setContent(Base64.encodeBase64String(script.getBytes()));
recipeRequest.setDescription(description);
RecipeEndpoint recipeEndpoint = getCloudbreakClient().recipeEndpoint();
Long id = recipeEndpoint.postPrivate(recipeRequest).getId();
//then
Assert.notNull(id, "Recipe is not created.");
addRecipeToContext(id);
}
}