function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Rodolfo NoviskiRodolfo Noviski 

Create test class for rest webservice calls

I'm trying to create a test class for my class call webservice. I'm using on a custom button, it is my knowledge that is not supported a standard class to perform the tests but even using Mock implementation is not able to hold someone could help me? For all I found so far was saying to create a fake response.

Thanks
Rodolfo Noviski
KevinPKevinP
can you post your existing code? 

You can find more about testing rest callouts here: https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_restful_http_testing_httpcalloutmock.htm
Rodolfo NoviskiRodolfo Noviski
webservice static String WSToken(String cpf)
    {
        msg = 'Consulta Realizada \n';
        try
        {
            contas = Database.query('SELECT ID,Name,CPF__pc,data_de_nascimento__c From Account WHERE CPF__pc = \''+cpf+'\' LIMIT 1');
            flagFase = false;
            flagExtrato = false;
            flagAdicional = false;
            flagMargem = false;
            flagPesquisaCpf = false;            
            httpProtocolo = new Http();
            request = new HttpRequest();

            request.setEndpoint(endpoint);
            request.setMethod('GET');
            response = httpProtocolo.send(request);
            doc = response.getBodyDocument();
            address = doc.getRootElement();
            chave = address.getChildElement('key',null).getText();

            request.setEndpoint(endpoint);
            request.setMethod('GET');
            response = httpProtocolo.send(request);

            Map<String,String> nbs = new Map<String,String>();
            if(response.getStatusCode() == 200)
            {
                JSONParser parser = JSON.createParser(response.getBody());
                while(parser.nextToken() != null)             
                {
                    if(parser.getCurrentToken() == JSONToken.FIELD_NAME)
                    {
                        parser.nextToken();
                        if(parser.getCurrentName() == 'nb')
                        {
                            parser.nextValue();
                           	nbs.put('nb', parser.getText());
                        }else
                        {
                            nbs.put(parser.getCurrentName(),parser.getText());
                        }
                    }
                }
            }
            
            if(nbs.get('return') == '1')
            {
                flagPesquisaCpf = true;
            }else if(nbs.get('return')== '0')
            {
                msg += nbs.get('msg') + ' \n';
            }
            
            if(flagPesquisaCpf)
            {
                request.setEndpoint(endpoint);
                request.setMethod('GET');
                
                response = httpProtocolo.send(request);
                if((response.getStatusCode() == 200)&&(response.getStatus()=='OK'))
                {
                    JSONParser parser = JSON.createParser(response.getBody());
                    mapFase = new Map<String,String>();
                    mapTelefone = new Map<String,String>();
                    mapDemaisEmprestimos = new Map<String,String>();
                    countTelefone = 1;
                    countDemaisEmprestimos =0;
                    while(parser.nextToken() != null)
                    {
                        if(parser.getCurrentToken() == JSONToken.FIELD_NAME)
                        {
                            parser.nextToken();
                            if(parser.getCurrentName() == 'fone')
                            {
                                parser.nextToken();
                                while((parser.nextToken() != JSONToken.END_ARRAY))
                                {
                                    if(parser.getCurrentToken() == JSONToken.START_OBJECT)
                                    {
                                        countTelefone++;
                                    }
                                    mapTelefone.put((parser.getCurrentName()+countTelefone), parser.getText());
                                }
                            }else if(parser.getCurrentName() == 'consighome_vlfin')
                            {
                                if(parser.getCurrentToken() == JSONToken.START_ARRAY)
                                {
                                    while(parser.nextToken() != JSONToken.END_ARRAY)
                                    {
                                        if(parser.getCurrentToken() == JSONToken.FIELD_NAME)
                                        {
                                            parser.nextToken();
                                            mapDemaisEmprestimos.put((parser.getCurrentName()+countDemaisEmprestimos),parser.getText());
                                            //system.debug('(( '+ (parser.getCurrentName()+countDemaisEmprestimos) + ' ' + parser.getText());
                                        }else if(parser.getCurrentToken() == JSONToken.START_OBJECT)
                                        {
                                            countDemaisEmprestimos++;
                                        }
                                    }
                                }
                            }else
                            {
                                mapFase.put(parser.getCurrentName(), parser.getText());
                            }
                        }   
                    }
                }

                String nomeP = contas.get(0).Name;
                nomeP = nomeP.replaceAll(' ', '%20');
                Date dtNasc = contas.get(0).data_de_nascimento__c;
                String dataNasc = String.valueof(dtNasc.day())+'/';
                if(Integer.valueOf(String.valueOf(dtNasc.month()))<10)
                {
                   dataNasc += '0'+String.valueOf(dtNasc.month())+'/';
                }else
                {
                    dataNasc += String.valueOf(dtNasc.month())+'/';
                }
                dataNasc +=  String.valueOf(dtNasc.year());

                request.setEndpoint(endpoint);
                system.debug('ENDPOINT '+request.getEndpoint());
                request.setMethod('GET');
                response = httpProtocolo.send(request);
                if((response.getStatusCode() == 200)&&(response.getStatus()=='OK'))
                {
                    JSONParser parser = JSON.createParser(response.getBody());
                    mapRubricaExtrato = new Map<String,String>();
                    countExtrato = 1;
                    mapExtrato = new Map<String,String>();
                    while(parser.nextToken() != null)
                    {
                        if(parser.getCurrentToken() == JSONToken.FIELD_NAME)
                        {
                            parser.nextToken();
                            if(parser.getCurrentToken()==JSONToken.START_OBJECT)
                            {
                                while(parser.nextToken() != JSONToken.END_OBJECT)
                                {
                                    if(parser.getCurrentToken() == JSONToken.FIELD_NAME)
                                    {
                                        parser.nextToken();
                                        if(parser.getCurrentToken() == JSONToken.START_OBJECT)
                                        {
                                            while((parser.nextToken() != JSONToken.END_OBJECT))
                                            {
                                                mapRubricaExtrato.put((parser.getCurrentName()+countExtrato), parser.getText());
                                            }
                                            countExtrato++;
                                        }
                                    }
                                }
                                
                            }else
                            {
                                mapExtrato.put(parser.getCurrentName(), parser.getText());
                            }
                        }   
                    }
                }
             
                request.setEndpoint(endpoint);
                request.setMethod('GET');
                
                response = httpProtocolo.send(request);
                
                if((response.getStatusCode() == 200)&&(response.getStatus()=='OK'))
                {
                    JSONParser parser = JSON.createParser(response.getBody());
                    mapAdicional = new Map<String,String>();
                    while(parser.nextToken() != null)
                    {
                        if(parser.getCurrentToken() == JSONToken.FIELD_NAME)
                        {
                            parser.nextToken();
                            if(parser.getCurrentToken() == JSONToken.START_ARRAY)
                            {
                                while(parser.nextToken() != JSONToken.END_ARRAY)
                                {
                                    if(parser.getCurrentToken() == JSONToken.FIELD_NAME)
                                    {
                                        parser.nextToken();
                                        mapAdicional.put(parser.getCurrentName(), parser.getText());                                    
                                    }
                                }
                            }else
                            {
                                mapAdicional.put(parser.getCurrentName(), parser.getText());
                            }
                        }   
                    }
                    flagAdicional = true;   
                }

                request.setEndpoint(endpoint);
                request.setMethod('GET');
                response = httpProtocolo.send(request);
                if((response.getStatusCode() == 200)&&(response.getStatus()=='OK'))
                {
                    JSONParser parser = JSON.createParser(response.getBody());
                    String corpo = response.getBody(); 
                    mapRubricaMargem = new Map<String,String>();
                    countMap=1;
                    mapMargem = new Map<String,String>();
                    while(parser.nextToken() != null)
                    {
                        if(parser.getCurrentToken() == JSONToken.FIELD_NAME)
                        {
                            parser.nextToken();
                            if(parser.getCurrentToken()==JSONToken.START_ARRAY)
                            {
                                parser.nextToken();
                                while((parser.nextToken() != JSONToken.END_ARRAY))
                                {
                                    if(parser.getCurrentToken() == JSONToken.START_OBJECT)
                                    {
                                        countMap++;
                                    }
                                    mapRubricaMargem.put((parser.getCurrentName()+countMap), parser.getText());
                                }
                            }else
                            {
                                mapMargem.put(parser.getCurrentName(), parser.getText());
                            }
                        }   
                    }
                    flagMargem = true;
                }
         }catch(Exception E)
         {
             msg =  'Ocorreu um erro durante a consulta ao webservice';
            system.debug(e.getMessage());
        }
        return msg;

}
This is the code implemented this within a method that returns a String. And this implemented within a custom button.

Thanks
Rodolfo Noviski
PAtbPAtb
Rodolfo, Is this code the call a Webserice to validate CPF ?