2016-03-25 11 views
2

JSON Web Jetonu girişini aldım ancak Rails 5 Denetleyici testlerimi gerçekleştirme aşamasındayım.Raylar 5 set Yetkilendirme başlığı

JWT auth jetonumu GET istek başlığma iletmeye çalışıyorum.

test "users should return list of users" do 
    User.create(@bob) 
    auth_token = log_in_as(@bob) 

    request.headers['Authorization'] = "JWT #{auth_token}"  
    get users_path  
    assert_response :success 

    assert_not response.body.empty? 
    end 

Şimdiye kadar çalışmadığını, ben cevabı not authenticated olsun:

Şimdiye kadar, benim Kullanıcı Kontrol testinde, bu test var.

Öyle mi bunu değiştirirseniz:

test "users should return list of users" do 
    User.create(@bob) 
    auth_token = log_in_as(@bob) 

    get users_path, nil, { HTTP_AUTHORIZATION: "JWT #{auth_token}" } 

    puts "response = #{response.body}" 

    assert_response :success 

    assert_not response.body.empty? 
    end 

Bu beklenen yanıt almak:

response = {"users":[{"id":298486374,"name":"MyString","email":"MyString","cats":[]},{"id":980190962,"name":"MyString","email":"MyString","cats":[]},{"id":980190963,"name":"Bob","email":"[email protected]","cats":[]}]} 

ama ben de bir DEPRECATED UYARI olsun:

kullanımdan kaldırılması UYARI: ActionDispatch :: IntegrationTest HTTP isteği yöntemleri, ileride'de yalnızca aşağıdaki anahtar kelime bağımsız değişkenlerini kabul edecektirRaylar sürümleri: parametreler, başlıklar, env, xhr

Örnekler:

olsun '/ profile parametreleri: {id: 1}, başlıklar: { 'X-Ekstra-Başlık'=> '123 '}, env: { 'action_dispatch.custom'=> ​​'özel'}, xhr: true

Yani Raylar 5 HTTP Yetkilendirme başlığı ayarlamak için önerilen yolu nedir?

cevap

2

see here argümanlarına param ve anahtarlar anahtarını eklemeniz gerekir.

get users_path, params: {}, headers: { HTTP_AUTHORIZATION: "JWT #{auth_token}" } 

Eğer Yetkilendirme JWT'yi ayarı değil HTTP_AUTHORIZATION olduğunuz için ilk örnek muhtemelen çalışmıyor.

request.headers['HTTP_AUTHORIZATION'] = "JWT #{auth_token}" 
+1

'request.headers ['HTTP_AUTHORIZATION'] =" JWT # {auth_token} "işlevini kullanmadı. Başlıklar: {...} 'metodu çalışır. – Zhang

+0

': headers' anahtar sözcüğü argümanını kullanmak benim istek özelliklerimde çalışır, fakat benim denetleyici özelliklerimde 'request.headers' işlevini değiştirmek zorundayım. – Dennis