2016-08-05 11 views
0

私はspring-boot-starter-securityを導入するまでは簡単な統合テストを持つ単純なスプリングブート(1.3.5)アプリケーションを持っています。私はapplication.propertiesにsecurity.user.nameとsecurity.user.passwordを設定しました。これは私のエンドポイントをパスワードで保護する必要があるようです(できるだけ不必要な役割やセキュリティ設定を追加することで、 )。しかし今、統合テストは失敗します。私のテストクラス:どのように私は基本的な認証でSpring Bootを統合テストするのですか?

カールhttp://user:[email protected]:8181/hello

のためのアサート:

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = Application.class) 
@WebIntegrationTest(randomPort = true) 
public class MyTestsIT { 

    private TestRestTemplate template = new TestRestTemplate(); 
    private URL base; 

    @Value("${security.user.name}") 
    private String username; 

    @Value("${security.user.password}") 
    private String password; 

    @Value("${local.server.port}") 
    private int port; 

    @Before 
    public void beforeTest() throws MalformedURLException { 
     base = new URL("http://" + username + ":" + password + "@localhost:" + port); 
    } 

    @Test 
    public void testHello() throws IllegalStateException, IOException { 
     System.err.println(base.toString() + "/hello"); 
     ResponseEntity<String> response = template.getForEntity(base.toString() + "/hello", String.class); 
     assertEquals("Incorrect HTTP status returned", HttpStatus.OK, response.getStatusCode()); 
     String body = response.getBody(); 
     assertEquals("Incorrect response string.", "Hello World!", body); 
    } 
} 

のprintln文は、私はアプリを実行したときにカールして使用することができました同じ1正しいURLが表示されます返品ステータスが401で失敗していますが、何が間違っていますか?

答えて

1

D'oh!私が質問を掲示するとすぐに、回答はBasic authentication for REST API using spring restTemplateにありました。私の検索がなぜそれに当たらなかったのかわからない。申し訳ありませんが、これは他の誰かを助けるでしょう。

@Before 
public void beforeTest() throws MalformedURLException { 
    template = new TestRestTemplate(username, password); 
    base = new URL("http://localhost:" + port); 
} 
関連する問題