2009-06-12 28 views
8

Tôi đang phát triển một ứng dụng sử dụng twitter oauth và chạy vào một bức tường gạch cố gắng tìm ra cách để kiểm tra twitter oauth. Đặc biệt cố gắng sử dụng Cucumber và Webrat/Selenium để kiểm tra chức năng - Một số bước trong quá trình đăng ký/đăng nhập hoạt động khác nhau nếu người dùng đã cấp quyền truy cập oauth cho ứng dụng hay không, trong số những thứ khác.Chiến lược thử nghiệm cho Ruby on Rails & Twitter OAuth

Có ai ở đó có thành phần giả mạo hoặc stubbing hoặc tất cả các hệ thống OAuth Twitter trong các tính năng của Ruby on Rails Cucumber (hoặc bất kỳ khung kiểm tra nào khác cho vấn đề đó) không? Bất kỳ trợ giúp sẽ được đánh giá cao.

Trả lời

3

Tôi không có công thức chính xác cho twitter (không thực hiện chính xác cho đến bây giờ), nhưng vì OAuth có đặc tả mô tả các luồng khác nhau, tôi sẽ cố gắng liệt kê từng trường hợp trong trường hợp này, và cố gắng tự động hóa tương tác.

Để hướng dẫn bạn, dưới đây là một vài gợi ý để thông tin liên quan:

Thông thường các dòng chảy cho trang web dựa trên là khác nhau (như bạn đã thấy) cho dù chúng tôi er đã không cho phép cho các ứng dụng của khách hàng:

  • nếu người dùng chưa được uỷ quyền cho các ứng dụng của khách hàng sau đó nó được chuyển hướng đến các trang web cung cấp dịch vụ
    • tại nhà cung cấp dịch vụ là người dùng được chưa đăng nhập được yêu cầu xác thực bằng thông tin đăng nhập của mình
    • sau khi được xác thực tại nhà cung cấp dịch vụ phải ủy quyền hoặc từ chối ủy quyền cho ứng dụng/dịch vụ của khách hàng
    • sau khi nhận được phản hồi ủy quyền được gửi lại khách hàng trang web sau đó có thể nhận được một access token
  • nếu người dùng đã ủy quyền cho ứng dụng client/dịch vụ sau đó nó có thể sử dụng các thẻ truy cập để vượt qua những bậc thang và dữ liệu người dùng truy cập/API tại các nhà cung cấp dịch vụ
4

Đã hơn một năm kể từ ngày OP, nhưng gần đây tôi đã tìm thấy bài viết này về cách sử dụng TwitterAuth và Cucumber đã làm việc cho tôi.

http://blog.zerosum.org/2009/7/13/twitter-auth-integration-testing

+0

Vâng, nước sốt bí mật đang sử dụng FakeWeb để loại bỏ phần phụ trợ Twitter. Bài viết hay. – Rob

3

Tôi đã sử dụng chế nhạo trong các trường hợp thử nghiệm của mình. Tôi đã thử nghiệm bằng tay, đã tìm ra câu trả lời là gì và loại bỏ đá quý ruby ​​oAuth. Dưới đây là một trường hợp thử nghiệm (sử dụng shoulda) cho một tweet thành công:

context 'cork/tweet' do 
    setup do 
     response = Net::HTTPResponse.new("1.1", 200, "") 
     Net::HTTPResponse.any_instance.stubs(:body).returns JSON_RESPONSE 
     OAuth::AccessToken.any_instance.stubs(:post).returns(response) 
     post :create, :cork_id => @cork.id, :message=>MESSAGE  
    end 
    should_respond_with :redirect 
    should_change('Tweet.count' , :by => 1) {Tweet.count} 
    .. and so on 

JSON_RESPONSE là câu trả lời tôi thu thập được từ các bài kiểm tra thủ công của tôi - tôi đặt một printf trong lib/oauth/thẻ/access_token.rb: 44: trong `đăng 'để nắm bắt phản hồi.

Nếu không, điều này hầu như không thể kiểm tra, b/c khi bạn chỉ ra, Twitter không có cách nào để hủy cấp phép ứng dụng của bạn khỏi API và hoạt động khác nếu bạn đã ủy quyền ứng dụng.

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