A simple Ruby server using Sinatra that serves Bluesky custom feeds
1require 'spec_helper'
2require 'rack'
3
4describe BlueFactory::RequestContext do
5 let(:env) {{
6 'HTTP_AUTHORIZATION' => 'Bearer qwertyuiop'
7 }}
8
9 let(:request) { Rack::Request.new(env) }
10
11 describe '#request' do
12 it 'should return the underlying request' do
13 ctx = BlueFactory::RequestContext.new(request)
14 ctx.request.should == request
15 end
16 end
17
18 describe '#env' do
19 it "should return the request's environment" do
20 ctx = BlueFactory::RequestContext.new(request)
21 ctx.env.should == env
22 end
23 end
24
25 context 'if env includes HTTP_AUTHORIZATION' do
26 describe '#user' do
27 it 'should return a UserInfo with parsed token' do
28 ctx = BlueFactory::RequestContext.new(request)
29
30 ctx.user.should be_a(BlueFactory::UserInfo)
31 ctx.user.token.should == 'qwertyuiop'
32 end
33 end
34
35 describe '#has_auth?' do
36 it 'should return true' do
37 ctx = BlueFactory::RequestContext.new(request)
38 ctx.has_auth?.should == true
39 end
40 end
41 end
42
43 context 'if env does not include HTTP_AUTHORIZATION' do
44 before do
45 env.delete('HTTP_AUTHORIZATION')
46 end
47
48 describe '#user' do
49 it 'should return a UserInfo with no token' do
50 ctx = BlueFactory::RequestContext.new(request)
51
52 ctx.user.should be_a(BlueFactory::UserInfo)
53 ctx.user.token.should be_nil
54 end
55 end
56
57 describe '#has_auth?' do
58 it 'should return false' do
59 ctx = BlueFactory::RequestContext.new(request)
60 ctx.has_auth?.should == false
61 end
62 end
63 end
64end