package cc.nfscan.server.controller.fe;
import cc.nfscan.server.controller.response.ResultResponse;
import com.google.gson.Gson;
import org.hamcrest.MatcherAssert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/**
* Controller test for handling electronic tax receipts requests
*
* @author Paulo Miguel Almeida <a href="http://github.com/PauloMigAlmeida">@PauloMigAlmeida</a>
*/
public class ElectronicTaxReceiptMobileControllerTest extends BaseDatabaseControllerTest {
@Before
public void init() {
super.init();
}
@After
public void clean() {
super.clean();
}
@Test
public void testDonate_SuccessExpected() throws Exception {
ResultResponse resultResponse;
resultResponse = donateRequest("3599 0922 8436 4200 0195 6500 1000 0000 2314 0000 2313", 0.01);
MatcherAssert.assertThat(resultResponse.isSuccess(), equalTo(Boolean.TRUE));
resultResponse = donateRequest("35990922843642000195650010000000231400002313", 10.01);
MatcherAssert.assertThat(resultResponse.isSuccess(), equalTo(Boolean.TRUE));
resultResponse = donateRequest("35150561099008000141599000012200005098600482", 10.01);
MatcherAssert.assertThat(resultResponse.isSuccess(), equalTo(Boolean.TRUE));
}
@Test
public void testDonateInvalidAccessKey_failExpected() throws Exception {
ResultResponse resultResponse;
resultResponse = donateRequest("3500 0932 8436 4300 0195 6500 1000 0000 2314 0000 2313", 0.01);
MatcherAssert.assertThat(resultResponse.isSuccess(), equalTo(Boolean.FALSE));
resultResponse = donateRequest("35000932843643000195650010000000231400002313", 0.01);
MatcherAssert.assertThat(resultResponse.isSuccess(), equalTo(Boolean.FALSE));
resultResponse = donateRequest("fasdfasdfasdfasd", 0.01);
MatcherAssert.assertThat(resultResponse.isSuccess(), equalTo(Boolean.FALSE));
resultResponse = donateRequest("3599 0922 8436 4200 0195 6500 1000 0000 2314 0000 2313", -0.01);
MatcherAssert.assertThat(resultResponse.isSuccess(), equalTo(Boolean.FALSE));
resultResponse = donateRequest("3599 0922 8436 4200 0195 6500 1000 0000 2314 0000 2313", 0.0);
MatcherAssert.assertThat(resultResponse.isSuccess(), equalTo(Boolean.FALSE));
}
private ResultResponse donateRequest(String accessKey, double total) throws Exception {
MockHttpServletRequestBuilder builder = post("/fe/electronictaxreceipts/donate.action");
builder.contentType(MediaType.APPLICATION_FORM_URLENCODED);
builder.param("accessKey", accessKey);
builder.param("total", String.valueOf(total));
Gson gson = new Gson();
return gson.fromJson(
mockMvc.perform(builder).andExpect(status().isOk()).andReturn().getResponse().getContentAsString(),
ResultResponse.class
);
}
}