All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.dynamide.restreplay.mutators.VarMutator Maven / Gradle / Ivy

Go to download

RestReplay is a dynamide.org utility to send REST requests to the services layer (including JSON, XML, and multipart XML requests), read responses, validate responses, and compare the resulting payloads with templates.

There is a newer version: 1.0.27
Show newest version
package org.dynamide.restreplay.mutators;

import org.dom4j.Node;
import org.dynamide.interpreters.EvalResult;
import org.dynamide.interpreters.Eval;
import org.dynamide.restreplay.ResourceManager;
import org.dynamide.restreplay.ServiceResult;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class VarMutator extends ContentMutator implements IMutator {

    protected static class VarTemplate{
        public VarTemplate(String i, String t){ID=i;template=t;}
        public String ID;
        public String template;
    }

    private int index = 0;

    private List> spaces = new ArrayList>();
    private ListspaceIDs = new ArrayList();

    public void setOptions(Node testNode){
        super.setOptions(testNode);
        List vars = testNode.selectNodes("mutator/vars");
        for (Node oneVarsNode: vars){
            String spaceID = oneVarsNode.valueOf("@ID");
            List nodes = oneVarsNode.selectNodes("var");
            List varList = new ArrayList();
            for (Node varNode : nodes) {
                String idbase = varNode.valueOf("@idbase");
                String template = varNode.valueOf(".");
                varList.add(new VarTemplate(idbase, template));
            }
            spaces.add(varList);
            spaceIDs.add(spaceID);
        }
    }

    private Map clonedMasterVars;

    public String mutate(Map clonedMasterVars, Eval evalStruct, ServiceResult serviceResult){
        if (index+1>spaces.size()){
            return null;
        }

        List localVarList = spaces.get(index);
        for (VarTemplate vt: localVarList) {
            clonedMasterVars.put(vt.ID, vt.template);
        }
        this.clonedMasterVars = clonedMasterVars;

        index++;
        return getContentRaw(evalStruct, serviceResult);
    }

    public String getMutationID(){
        return safeID();
    }
    private String safeID(){
        int i = index-1;
        int sz = spaceIDs.size();
        if (sz > 0 && i < sz){
            return spaceIDs.get(i);
        }
        System.out.println("------> funny safeID, i: "+i+" size: "+sz+" spaceIDs:"+spaceIDs);
        return ""+(index-1);
    }

    public String getID(){
        return safeID();
    }

    public int getIndex(){
        return index-1;
    }

    //==================== for VarMutator these must be different ================================================

    private ResourceManager resourceManager = null;
    private String contentRawFilename = "";
    private String contentRawRelResourceName = "";

    @Override
    public void init(String relResourceName, String theFileName, ResourceManager resourceManager)
    throws IOException {
        this.contentRawFilename = theFileName;
        this.contentRawRelResourceName = relResourceName;
        this.resourceManager = resourceManager;
    }

    public String getContentRaw(Eval evalStruct, ServiceResult serviceResult){
        try {
            if (resourceManager != null) {
                EvalResult filanameRelEvalResult  = evalStruct.eval("expand req. filenameRel:" + contentRawRelResourceName,
                                                                          contentRawRelResourceName,
                                                                          clonedMasterVars);
                serviceResult.alerts.addAll(filanameRelEvalResult.alerts);
                String requestPayloadFilenameRelExp = filanameRelEvalResult.getResultString();


                return resourceManager.readResource("ContentMutator:constructor",
                        requestPayloadFilenameRelExp,
                        contentRawFilename).contents;//new String(FileUtils.readFileToByteArray(new File(contentRawFilename)));
            }
        } catch (Exception e){
            System.out.println("ERROR in getContentRaw()"+e);
            return "";
        }
        return "";
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy