2011-06-30 33 views
11

Tôi sử dụng số FacebookBundle để xác thực người dùng trong ứng dụng Symfony2 của mình. Tuy nhiên, tôi muốn tạo các thử nghiệm chức năng với phpunit sử dụng một người dùng đã được xác thực.Làm thế nào để sử dụng một người dùng được xác thực trong một thử nghiệm chức năng Symfony2?

Hơn nữa, tôi không muốn sử dụng người dùng facebook cho điều này, nhưng bị bẻ khóa một.

Có ai biết cách triển khai tính năng này không?

Trả lời

16

Nó thực sự khá đơn giản.

  1. Cài đặt security.yml cho môi trường thử nghiệm (đó là một đoạn từ Symfony 2.0 RC3)

    security: 
        encoders: 
         Symfony\Component\Security\Core\User\User: plaintext 
    
        providers: 
         in_memory: 
          users: 
           user: { password: userpass, roles: [ 'ROLE_USER' ] } 
           admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] } 
    
        firewalls: 
         secured-area: 
          pattern: ^/demo/secured/ 
          http_basic: 
           realm: "Secured Demo Area" 
    
  2. Như bạn có thể thấy có HTTP Authentication xác định. Vì vậy, bây giờ, tất cả các bạn phải làm là để thiết lập một khách hàng trong thử nghiệm chức năng:

    $client = static::createClient(array(), array(
        'PHP_AUTH_USER' => 'user', 
        'PHP_AUTH_PW' => 'userpass', 
    )); 
    

Liên kết này có thể có ích: http://symfony.com/doc/current/testing.html

+2

Cám ơn câu trả lời của bạn. Tuy nhiên, tôi muốn người dùng này có nhiều thuộc tính khác được sử dụng trong ứng dụng của tôi. Ví dụ, họ có một tài sản $ facebookId. Làm cách nào để tôi có thể sử dụng người dùng được mã hóa cứng với các thuộc tính tùy chỉnh? – Reuven

+0

Làm thế nào để bạn chỉ định một cấu hình bảo mật khác cho môi trường thử nghiệm? Tôi rất muốn có thể thay đổi csoom wsse proviver của tôi thành cơ bản trong bộ nhớ. – greg

+0

@whistlergreg Tôi tin rằng tất cả những gì bạn phải làm là ghi đè định nghĩa 'security' trong' config_test.yml/.xml'. – Crozin

Các vấn đề liên quan