|
15 | 15 | end |
16 | 16 |
|
17 | 17 | describe 'initialize' do |
| 18 | + describe 'JWKS caching' do |
| 19 | + before do |
| 20 | + WorkOS::Cache.clear |
| 21 | + end |
| 22 | + |
| 23 | + it 'caches and returns JWKS' do |
| 24 | + expect(Net::HTTP).to receive(:get).once |
| 25 | + session1 = WorkOS::Session.new( |
| 26 | + user_management: user_management, |
| 27 | + client_id: client_id, |
| 28 | + session_data: session_data, |
| 29 | + cookie_password: cookie_password, |
| 30 | + ) |
| 31 | + |
| 32 | + session2 = WorkOS::Session.new( |
| 33 | + user_management: user_management, |
| 34 | + client_id: client_id, |
| 35 | + session_data: session_data, |
| 36 | + cookie_password: cookie_password, |
| 37 | + ) |
| 38 | + |
| 39 | + expect(session1.jwks.map(&:export)).to eq(session2.jwks.map(&:export)) |
| 40 | + end |
| 41 | + |
| 42 | + it 'fetches JWKS from remote when cache is expired' do |
| 43 | + expect(Net::HTTP).to receive(:get).twice |
| 44 | + session1 = WorkOS::Session.new( |
| 45 | + user_management: user_management, |
| 46 | + client_id: client_id, |
| 47 | + session_data: session_data, |
| 48 | + cookie_password: cookie_password, |
| 49 | + ) |
| 50 | + |
| 51 | + allow(Time).to receive(:now).and_return(Time.now + 301) |
| 52 | + |
| 53 | + session2 = WorkOS::Session.new( |
| 54 | + user_management: user_management, |
| 55 | + client_id: client_id, |
| 56 | + session_data: session_data, |
| 57 | + cookie_password: cookie_password, |
| 58 | + ) |
| 59 | + |
| 60 | + expect(session1.jwks.map(&:export)).to eq(session2.jwks.map(&:export)) |
| 61 | + end |
| 62 | + end |
| 63 | + |
18 | 64 | it 'raises an error if cookie_password is nil or empty' do |
19 | 65 | expect do |
20 | 66 | WorkOS::Session.new( |
|
0 commit comments