2017-05-13 2 views
0

Ich habe eine grundlegende SpringBoot App. Verwenden von Spring Initializer, eingebetteter Tomcat-, Thymeleaf-Vorlagen-Engine und Paket als ausführbare JAR-Datei.SpringBoot: WebMvcTest mit Autorisierung

Ich habe diesen Test:

@RunWith(SpringRunner.class) 
@WebAppConfiguration 
@WebMvcTest 
public class MockMvcTests { 

    // Pull in the application context created by @ContextConfiguration 
    @Autowired 
    private WebApplicationContext wac; 

    private MockMvc mockMvc; 

    @MockBean 
    private I18NService i18NService; 

    @MockBean 
    private EmailService emailService; 

    @MockBean 
    private PasswordResetTokenService passwordResetTokenService; 

    @MockBean 
    private UserService userService; 

    @MockBean 
    private CompanyService companyService; 

    @MockBean 
    private UserSecurityService userSecurityService; 

    @Before 
    public void setup() { 
     // Setup MockMVC to use our Spring Configuration 
     this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); 
    } 

    /** 
    * 
    * @throws Exception 
    *    If anything fails. 
    */ 
    @Test 
    public void getDeviceEventsTest() throws Exception { 
     this.mockMvc 
       .perform(get("/deviceevent/list") // 
       .accept(MediaType.parseMediaType("text/html;charset=UTF-8"))) 
       .andExpect(status().isOk()) // 
       .andExpect(model().size(1)); // 
    } 

Aber läuft der Test-ich diese Ausnahme bekam

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "#authorization.expression('hasRole(''ROLE_ADMIN'')')" (tdk/common/menu:62) 

Gibt es eine Möglichkeit, die Genehmigung zu umgehen?

+0

Wie wäre es mit dem Hinzufügen von Authentifizierung Header? '.perform (get ("/deviceevent/list "). header (" Authorization "," Ihr Auth-Typ Header-Wert "))' –

Antwort

0

Ich sehe erste mögliches Problem in seltsamen Ausdruck in hasRole(''ROLE_ADMIN''), sieht aus wie zwei einfache Anführungszeichen statt doppelte Anführungszeichen hier, aber vielleicht sieht es seltsam, gerade in log.

Wie auch immer, in den Bypass-Auth-Mechanismus für die Tests, die Sie Spring Security im Testmodus deaktivieren müssen, gibt es einige Arbeitswege beschrieben here

ich in der Regel this Art und Weise mit der Konfiguration und Profile Einstellung verwenden, weil es dann mehr Flexibilität nimmt andere beschriebene Wege.

Verwandte Themen