Hirdetés

Keresés

Új hozzászólás Aktív témák

  • disy68
    aktív tag

    pl mvc.perform(MockMvcRequestBuilders.post("/user").header(HttpHeaders.AUTHORIZATION, "Bearer "+testToken).contentType(MediaType.APPLICATION_JSON_VALUE).content(json)).andReturn();
    így. Ha kihagyom az autentikációs tokent, akkor is megy. Úgy megy, hogy semmilyen jogosultsági beállítást nem állítottam a tesztben. Ugyan ennyivel elindítva postmanből szépen unauthorized, ahogy kell.

    A másik, pedig hogy a beadott DML sql-ben lévő insertek lefutnak még egyszer (constraintviolationnal, mert már ugye betöltötte a DB-be), amikor egy ahhoz köze nincs, rest hívást csinálok először. Utána újra próbálva ugyan az a rest hívás lemegy.
    Így an a DML beadva az application.properties-ben: @Transactional
     @PostMapping(path = "/user")
     @ResponseBody ResponseEntity<InfoResponse> createUser(@RequestBody UserDTO userDTO) {
      User newUser = new User(userDTO);
      return InfoResponse.createResponseEntity(ResponseTypes.SUCCESS, "new user id: "+userRepo.save(newUser).getId(),HttpStatus.CREATED);
     }

    Nem írsz arról, hogy a MockMvc-t hogyan használod (a test class hogyan van annotálva). Ha @SpringBootTest annotációval használod, akkor explicit be kell konfigurálni a security-t.
    részlet a korábbi baeldung cikkből:

    @Autowired
    private WebApplicationContext context;

    private MockMvc mvc;

    @Before
    public void setup() {
    mvc = MockMvcBuilders
    .webAppContextSetup(context)
    .apply(springSecurity())
    .build();
    }(...)

    De én továbbra is TestRestTemplate használatát javaslom, ehhez itt egy kis egyszerű minta.

    A DB-s problémád pedig kicsit zavaros, az az "application.properties" részlet meg egy controller post methodja..

    @(#11044) mobal
    nem unit csak jUnit :)

Új hozzászólás Aktív témák