You need to sign in to do that
Don't have an account?

how to write test class for consuming Third party rest API integration class
Hi Please help write test class and get code coverage for my class
Class:-
public class IssuersCalloutController{
public IssuersCalloutController(ApexPages.StandardController controller) {
}
public PageReference saveCalloutResult(){
Http h = new Http();
HttpRequest req = new HttpRequest();
req.setEndpoint('https://test/getIssueList');
req.setMethod('GET');
req.setHeader('Content-Type', 'application/json');
req.setHeader('Accept','application/json');
system.debug('request endpoint '+ req);
String username = 'amit';
String password = 'password';
Blob headerValue= Blob.valueOf(username + ':' + password);
system.debug('headerValue'+ headerValue);
String authorizationHeader = 'Basic ' + EncodingUtil.base64Encode(headerValue);
req.setHeader('Authorization', authorizationHeader);
req.setTimeout(60000);
system.debug('###req### '+ req);
HttpResponse res = h.send(req);
system.debug('###res### '+ res);
string response = res.getBody();
system.debug('response'+ response);
Set<String> bankNames = New Set<String>();
// declare issuer list to inser
List<Issuers__c> InsertedIssuers = New List<Issuers__c>();
// I used limit in below query, but its better to use any filter to limit the data
for(Issuers__c issuer : [Select Id,Bankdir_Name__c from Issuers__c LIMIT 50000]){
If(!string.isBlank(issuer.Bankdir_Name__c)){
bankNames.add(issuer.Bankdir_Name__c);
//system.debug('###Bank Name### '+ bankNames);
//system.debug('issuerbankdir'+ issuer.Bankdir_Name__c);
}
}
system.debug('###Bank Name### '+ bankNames.size());
List<JsonParserDetail> responseDetails = JsonParserDetail.parse(response);
system.debug('****responseDetails****** '+responseDetails);
if(responseDetails.size() > 0){
for(JsonParserDetail jpd : responseDetails){
If(!bankNames.contains(jpd.issuerBankdirName)){
InsertedIssuers.add(getIssuer(jpd.issuername,jpd.issuerBankdirName,jpd.processorName,jpd.subProcessorName,jpd.siloName));
}
}
}
If(InsertedIssuers.size() >0){
insert InsertedIssuers;
}
PageReference p = apexPages.currentPage();
ApexPages.Message msg=new ApexPages.Message(ApexPages.Severity.CONFIRM,'Preview 2 list Successfully updated'+InsertedIssuers.size()+'"Thank you!');
ApexPages.addMessage(msg);
return p;
}
public Issuers__c getIssuer(string iName, string ibName, string pName, string spName,string siloName){
Issuers__c issuer = New Issuers__c();
issuer.Name = iName;
issuer.Bankdir_Name__c = ibName;
issuer.Processor_Name__c = pName;
issuer.SubProcessor_Name__c = spName;
issuer.Silo_Name__c = siloName;
return issuer;
}
}
Thanks
Class:-
public class IssuersCalloutController{
public IssuersCalloutController(ApexPages.StandardController controller) {
}
public PageReference saveCalloutResult(){
Http h = new Http();
HttpRequest req = new HttpRequest();
req.setEndpoint('https://test/getIssueList');
req.setMethod('GET');
req.setHeader('Content-Type', 'application/json');
req.setHeader('Accept','application/json');
system.debug('request endpoint '+ req);
String username = 'amit';
String password = 'password';
Blob headerValue= Blob.valueOf(username + ':' + password);
system.debug('headerValue'+ headerValue);
String authorizationHeader = 'Basic ' + EncodingUtil.base64Encode(headerValue);
req.setHeader('Authorization', authorizationHeader);
req.setTimeout(60000);
system.debug('###req### '+ req);
HttpResponse res = h.send(req);
system.debug('###res### '+ res);
string response = res.getBody();
system.debug('response'+ response);
Set<String> bankNames = New Set<String>();
// declare issuer list to inser
List<Issuers__c> InsertedIssuers = New List<Issuers__c>();
// I used limit in below query, but its better to use any filter to limit the data
for(Issuers__c issuer : [Select Id,Bankdir_Name__c from Issuers__c LIMIT 50000]){
If(!string.isBlank(issuer.Bankdir_Name__c)){
bankNames.add(issuer.Bankdir_Name__c);
//system.debug('###Bank Name### '+ bankNames);
//system.debug('issuerbankdir'+ issuer.Bankdir_Name__c);
}
}
system.debug('###Bank Name### '+ bankNames.size());
List<JsonParserDetail> responseDetails = JsonParserDetail.parse(response);
system.debug('****responseDetails****** '+responseDetails);
if(responseDetails.size() > 0){
for(JsonParserDetail jpd : responseDetails){
If(!bankNames.contains(jpd.issuerBankdirName)){
InsertedIssuers.add(getIssuer(jpd.issuername,jpd.issuerBankdirName,jpd.processorName,jpd.subProcessorName,jpd.siloName));
}
}
}
If(InsertedIssuers.size() >0){
insert InsertedIssuers;
}
PageReference p = apexPages.currentPage();
ApexPages.Message msg=new ApexPages.Message(ApexPages.Severity.CONFIRM,'Preview 2 list Successfully updated'+InsertedIssuers.size()+'"Thank you!');
ApexPages.addMessage(msg);
return p;
}
public Issuers__c getIssuer(string iName, string ibName, string pName, string spName,string siloName){
Issuers__c issuer = New Issuers__c();
issuer.Name = iName;
issuer.Bankdir_Name__c = ibName;
issuer.Processor_Name__c = pName;
issuer.SubProcessor_Name__c = spName;
issuer.Silo_Name__c = siloName;
return issuer;
}
}
Thanks
Step 2 : Call that mock Web service in apex test class
You can write the test mock class to do the call out as below
Call the above code from your test class of controller
Thanks
Preyanka