Skip to content
Snippets Groups Projects
ApiControllerTest.java 2.04 KiB
Newer Older
package apiservice;

import apiservice.model.Asset;
import apiservice.repo.AssetRepo;
import apiservice.service.ApiController;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.*;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import java.util.Map;

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@WebMvcTest(ApiController.class)
class ApiControllerTest {

    @Autowired
    MockMvc mockMvc;

    @Autowired
    ObjectMapper mapper;

    @MockBean
    ApiController apiController;

    @MockBean
    AssetRepo assetRepo;

    @Test
    public void contextLoads() {
        assert (apiController != null);
    }


    @Test
    void postAsset() throws Exception {

        Asset asset = new Asset();
        asset.setTitle("test title");
        asset.setAttributes(Map.ofEntries(Map.entry("test attribute", "blue")));

        Mockito.when(assetRepo.save(asset, "1")).thenReturn(asset);

        MockHttpServletRequestBuilder mockRequest = MockMvcRequestBuilders.post("/assets/")
                .contentType(MediaType.APPLICATION_JSON_VALUE)
                .accept(MediaType.APPLICATION_JSON_VALUE)
                .content(this.mapper.writeValueAsString(asset))
                .param("uid", "1");

        mockMvc.perform(mockRequest)
                .andExpect(status().isOk());
    }

    @Test
    void getAssets() throws Exception {

        mockMvc.perform(MockMvcRequestBuilders
                        .get("/assets/").param("uid", "1")
                        .contentType(MediaType.APPLICATION_JSON_VALUE))
                .andExpect(status().isOk());
    }

}