Skip to content

Commit 18e01d7

Browse files
committed
✅ 100% test coverage
1 parent 37aebbd commit 18e01d7

File tree

3 files changed

+66
-77
lines changed

3 files changed

+66
-77
lines changed

lib/oauth2/access_token.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,9 @@ def from_hash(client, hash)
4444
# If token_name is present, then use that key name
4545
key =
4646
if fresh.key?(:token_name)
47-
no_tokens_warning(fresh, key)
48-
fresh[:token_name]
47+
t_key = fresh[:token_name]
48+
no_tokens_warning(fresh, t_key)
49+
t_key
4950
else
5051
# Otherwise, if one of the supported default keys is present, use whichever has precedence
5152
supported_keys = TOKEN_KEY_LOOKUP & fresh.keys

spec/oauth2/access_token_spec.rb

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,12 +178,36 @@
178178
context "when not raising errors" do
179179
let(:options) { {raise_errors: false} }
180180

181-
it "warns on STDERR and selects the correct key" do
181+
it "warns on STDERR" do
182182
msg = <<-MSG.lstrip
183183
OAuth2::AccessToken has no token
184184
MSG
185185
expect(printed).to eq(msg)
186186
end
187+
188+
context "when custom token_name" do
189+
let(:options) { {raise_errors: false} }
190+
191+
let(:hash) do
192+
{
193+
"lollipop" => token,
194+
expires_at: Time.now.to_i + 200,
195+
foo: "bar",
196+
header_format: "Bearer %",
197+
mode: :header,
198+
param_name: "lollipop",
199+
token_name: "lollipop",
200+
}
201+
end
202+
203+
it "finds token" do
204+
expect(target.token).to eq("monkey")
205+
end
206+
207+
it "does not warn when token is found" do
208+
expect(printed).to eq("")
209+
end
210+
end
187211
end
188212
end
189213
end

spec/oauth2/client_spec.rb

Lines changed: 38 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -505,10 +505,8 @@
505505

506506
it "body is a standard hash" do
507507
expect(response_body).to be_a(Hash)
508-
end
509-
510-
it "body is not a SnakyHash" do
511-
expect(response_body).not_to be_a(SnakyHash)
508+
expect(response_body).not_to be_a(SnakyHash::StringKeyed)
509+
expect(response_body).not_to be_a(SnakyHash::SymbolKeyed)
512510
end
513511
end
514512
end
@@ -582,7 +580,7 @@
582580

583581
context "when snaky" do
584582
subject(:token) do
585-
client = stubbed_client do |stub|
583+
client = stubbed_client(options) do |stub|
586584
stub.post("/oauth/token") do
587585
[200, {"Content-Type" => "application/json"}, response_body]
588586
end
@@ -591,6 +589,7 @@
591589
client.get_token(params, access_token_opts)
592590
end
593591

592+
let(:options) { {raise_errors: false} }
594593
let(:access_token_opts) { {} }
595594
let(:response_body) { JSON.dump("access_token" => "the-token") }
596595

@@ -609,12 +608,8 @@
609608
expect(token).to be_a OAuth2::AccessToken
610609
expect(token.token).to eq("the-token")
611610
expect(token.response.parsed).to be_a(Hash)
612-
end
613-
614-
it "parsed is not a SnakyHash" do
615-
expect(token).to be_a OAuth2::AccessToken
616-
expect(token.token).to eq("the-token")
617-
expect(token.response.parsed).not_to be_a(SnakyHash)
611+
expect(token.response.parsed).not_to be_a(SnakyHash::StringKeyed)
612+
expect(token.response.parsed).not_to be_a(SnakyHash::SymbolKeyed)
618613
end
619614
end
620615

@@ -631,12 +626,8 @@
631626
expect(token).to be_a OAuth2::AccessToken
632627
expect(token.token).to eq("the-token")
633628
expect(token.response.parsed).to be_a(Hash)
634-
end
635-
636-
it "parsed is not a SnakyHash" do
637-
expect(token).to be_a OAuth2::AccessToken
638-
expect(token.token).to eq("the-token")
639-
expect(token.response.parsed).not_to be_a(SnakyHash)
629+
expect(token.response.parsed).not_to be_a(SnakyHash::StringKeyed)
630+
expect(token.response.parsed).not_to be_a(SnakyHash::SymbolKeyed)
640631
end
641632

642633
context "with alternate token named" do
@@ -647,12 +638,8 @@
647638
expect(token).to be_a OAuth2::AccessToken
648639
expect(token.token).to eq("the-token")
649640
expect(token.response.parsed).to be_a(Hash)
650-
end
651-
652-
it "parsed is not a SnakyHash" do
653-
expect(token).to be_a OAuth2::AccessToken
654-
expect(token.token).to eq("the-token")
655-
expect(token.response.parsed).not_to be_a(SnakyHash)
641+
expect(token.response.parsed).not_to be_a(SnakyHash::StringKeyed)
642+
expect(token.response.parsed).not_to be_a(SnakyHash::SymbolKeyed)
656643
end
657644

658645
it "returns a snake-cased key" do
@@ -673,12 +660,8 @@
673660
expect(token).to be_a OAuth2::AccessToken
674661
expect(token.token).to eq("the-token")
675662
expect(token.response.parsed).to be_a(Hash)
676-
end
677-
678-
it "parsed is not a SnakyHash" do
679-
expect(token).to be_a OAuth2::AccessToken
680-
expect(token.token).to eq("the-token")
681-
expect(token.response.parsed).not_to be_a(SnakyHash)
663+
expect(token.response.parsed).not_to be_a(SnakyHash::StringKeyed)
664+
expect(token.response.parsed).not_to be_a(SnakyHash::SymbolKeyed)
682665
end
683666

684667
it "returns a configured AccessToken" do
@@ -701,28 +684,20 @@
701684
expect(token).to be_a OAuth2::AccessToken
702685
expect(token.token).to eq("the-token")
703686
expect(token.response.parsed).to be_a(Hash)
687+
expect(token.response.parsed).not_to be_a(SnakyHash::StringKeyed)
688+
expect(token.response.parsed).not_to be_a(SnakyHash::SymbolKeyed)
704689
end
705690

706-
it "parsed is not a SnakyHash" do
707-
expect(token).to be_a OAuth2::AccessToken
708-
expect(token.token).to eq("the-token")
709-
expect(token.response.parsed).not_to be_a(SnakyHash)
710-
end
711-
712-
context "with alternate token named" do
691+
context "with alternate token name" do
713692
let(:access_token_opts) { {token_name: "bananaFace"} }
714693
let(:response_body) { JSON.dump("bananaFace" => "the-token") }
715694

716695
it "parsed is a Hash" do
717696
expect(token).to be_a OAuth2::AccessToken
718697
expect(token.token).to eq("the-token")
719698
expect(token.response.parsed).to be_a(Hash)
720-
end
721-
722-
it "parsed is not a SnakyHash" do
723-
expect(token).to be_a OAuth2::AccessToken
724-
expect(token.token).to eq("the-token")
725-
expect(token.response.parsed).not_to be_a(SnakyHash)
699+
expect(token.response.parsed).not_to be_a(SnakyHash::StringKeyed)
700+
expect(token.response.parsed).not_to be_a(SnakyHash::SymbolKeyed)
726701
end
727702

728703
it "returns a snake-cased key" do
@@ -746,12 +721,8 @@
746721
expect(token).to be_a OAuth2::AccessToken
747722
expect(token.token).to eq("the-token")
748723
expect(token.response.parsed).to be_a(Hash)
749-
end
750-
751-
it "parsed is not a SnakyHash" do
752-
expect(token).to be_a OAuth2::AccessToken
753-
expect(token.token).to eq("the-token")
754-
expect(token.response.parsed).not_to be_a(SnakyHash)
724+
expect(token.response.parsed).not_to be_a(SnakyHash::StringKeyed)
725+
expect(token.response.parsed).not_to be_a(SnakyHash::SymbolKeyed)
755726
end
756727

757728
it "returns a snake-cased key" do
@@ -768,12 +739,8 @@
768739
expect(token).to be_a OAuth2::AccessToken
769740
expect(token.token).to eq("the-token")
770741
expect(token.response.parsed).to be_a(Hash)
771-
end
772-
773-
it "parsed is not a SnakyHash" do
774-
expect(token).to be_a OAuth2::AccessToken
775-
expect(token.token).to eq("the-token")
776-
expect(token.response.parsed).not_to be_a(SnakyHash)
742+
expect(token.response.parsed).not_to be_a(SnakyHash::StringKeyed)
743+
expect(token.response.parsed).not_to be_a(SnakyHash::SymbolKeyed)
777744
end
778745

779746
it "returns a snake-cased key" do
@@ -795,12 +762,8 @@
795762
expect(token).to be_a OAuth2::AccessToken
796763
expect(token.token).to eq("the-token")
797764
expect(token.response.parsed).to be_a(Hash)
798-
end
799-
800-
it "parsed is not a SnakyHash" do
801-
expect(token).to be_a OAuth2::AccessToken
802-
expect(token.token).to eq("the-token")
803-
expect(token.response.parsed).not_to be_a(SnakyHash)
765+
expect(token.response.parsed).not_to be_a(SnakyHash::StringKeyed)
766+
expect(token.response.parsed).not_to be_a(SnakyHash::SymbolKeyed)
804767
end
805768
end
806769
end
@@ -811,8 +774,17 @@
811774
context "with token_name" do
812775
let(:access_token_opts) { {token_name: "accessToken"} }
813776

814-
it "raises an Error because snaky has renamed the key" do
815-
block_is_expected.to raise_error(OAuth2::Error)
777+
it "parsed is a Hash, but no token since snaky changed key" do
778+
expect(token).to be_a OAuth2::AccessToken
779+
expect(token.token).to eq("")
780+
expect(token.response.parsed).to be_a(Hash)
781+
expect(token.response.parsed).not_to be_a(SnakyHash::StringKeyed)
782+
expect(token.response.parsed).not_to be_a(SnakyHash::SymbolKeyed)
783+
end
784+
785+
it "returns a snake-cased key" do
786+
expect(token).to be_a OAuth2::AccessToken
787+
expect(token.response.parsed.to_h).to eq("access_token" => "the-token")
816788
end
817789

818790
context "with alternate snaky token named" do
@@ -823,12 +795,8 @@
823795
expect(token).to be_a OAuth2::AccessToken
824796
expect(token.token).to eq("the-token")
825797
expect(token.response.parsed).to be_a(Hash)
826-
end
827-
828-
it "parsed is not a SnakyHash" do
829-
expect(token).to be_a OAuth2::AccessToken
830-
expect(token.token).to eq("the-token")
831-
expect(token.response.parsed).not_to be_a(SnakyHash)
798+
expect(token.response.parsed).not_to be_a(SnakyHash::StringKeyed)
799+
expect(token.response.parsed).not_to be_a(SnakyHash::SymbolKeyed)
832800
end
833801

834802
it "returns a snake-cased key" do
@@ -844,12 +812,8 @@
844812
expect(token).to be_a OAuth2::AccessToken
845813
expect(token.token).to eq("the-token")
846814
expect(token.response.parsed).to be_a(Hash)
847-
end
848-
849-
it "parsed is not a SnakyHash" do
850-
expect(token).to be_a OAuth2::AccessToken
851-
expect(token.token).to eq("the-token")
852-
expect(token.response.parsed).not_to be_a(SnakyHash)
815+
expect(token.response.parsed).not_to be_a(SnakyHash::StringKeyed)
816+
expect(token.response.parsed).not_to be_a(SnakyHash::SymbolKeyed)
853817
end
854818

855819
it "returns a snake-cased key" do

0 commit comments

Comments
 (0)