@@ -523,13 +523,71 @@ defmodule RealtimeWeb.RealtimeChannelTest do
523
523
end
524
524
525
525
describe "API Key validations" do
526
- test "api_key has not expired" , % { tenant: tenant } do
526
+ test "x-api-key header has not expired" , % { tenant: tenant } do
527
527
api_key = Generators . generate_jwt_token ( tenant )
528
528
{ :ok , % Socket { } = socket } = connect ( UserSocket , % { "log_level" => "warning" } , conn_opts ( tenant , api_key ) )
529
529
530
530
assert { :ok , _ , % Socket { } } = subscribe_and_join ( socket , "realtime:test" , % { } )
531
531
end
532
532
533
+ test "apikey param has not expired" , % { tenant: tenant } do
534
+ api_key = Generators . generate_jwt_token ( tenant )
535
+
536
+ conn_opts = [
537
+ connect_info: % {
538
+ uri: URI . parse ( "https://#{ tenant . external_id } .localhost:4000/socket/websocket" ) ,
539
+ x_headers: [ ]
540
+ }
541
+ ]
542
+
543
+ { :ok , % Socket { } = socket } = connect ( UserSocket , % { "log_level" => "warning" , "apikey" => api_key } , conn_opts )
544
+
545
+ assert { :ok , _ , % Socket { } = socket } = subscribe_and_join ( socket , "realtime:test" , % { } )
546
+ assert socket . assigns . access_token == api_key
547
+ end
548
+
549
+ test "join with access_token starting with sb_" , % { tenant: tenant } do
550
+ api_key = Generators . generate_jwt_token ( tenant )
551
+ { :ok , % Socket { } = socket } = connect ( UserSocket , % { "log_level" => "warning" } , conn_opts ( tenant , api_key ) )
552
+
553
+ assert { :ok , _ , % Socket { } = socket } =
554
+ subscribe_and_join ( socket , "realtime:test" , % { "access_token" => "sb_something" } )
555
+
556
+ assert socket . assigns . access_token == api_key
557
+ end
558
+
559
+ test "join with user_token starting with sb_" , % { tenant: tenant } do
560
+ api_key = Generators . generate_jwt_token ( tenant )
561
+ { :ok , % Socket { } = socket } = connect ( UserSocket , % { "log_level" => "warning" } , conn_opts ( tenant , api_key ) )
562
+
563
+ assert { :ok , _ , % Socket { } = socket } =
564
+ subscribe_and_join ( socket , "realtime:test" , % { "user_token" => "sb_something" } )
565
+
566
+ assert socket . assigns . access_token == api_key
567
+ end
568
+
569
+ test "join with access_token" , % { tenant: tenant } do
570
+ api_key = Generators . generate_jwt_token ( tenant )
571
+ access_token = Generators . generate_jwt_token ( tenant )
572
+ { :ok , % Socket { } = socket } = connect ( UserSocket , % { "log_level" => "warning" } , conn_opts ( tenant , api_key ) )
573
+
574
+ assert { :ok , _ , % Socket { } = socket } =
575
+ subscribe_and_join ( socket , "realtime:test" , % { "access_token" => access_token } )
576
+
577
+ assert socket . assigns . access_token == access_token
578
+ end
579
+
580
+ test "join with user_token" , % { tenant: tenant } do
581
+ api_key = Generators . generate_jwt_token ( tenant )
582
+ user_token = Generators . generate_jwt_token ( tenant )
583
+ { :ok , % Socket { } = socket } = connect ( UserSocket , % { "log_level" => "warning" } , conn_opts ( tenant , api_key ) )
584
+
585
+ assert { :ok , _ , % Socket { } = socket } =
586
+ subscribe_and_join ( socket , "realtime:test" , % { "user_token" => user_token } )
587
+
588
+ assert socket . assigns . access_token == user_token
589
+ end
590
+
533
591
test "api_key has expired" , % { tenant: tenant } do
534
592
assert capture_log ( fn ->
535
593
api_key =
@@ -688,13 +746,12 @@ defmodule RealtimeWeb.RealtimeChannelTest do
688
746
assert [ { _ , ^ transport_pid_1 } ] = Registry . lookup ( RealtimeWeb.SocketDisconnect.Registry , tenant . external_id )
689
747
end
690
748
691
- defp conn_opts ( tenant , token , params \\ % { } ) do
749
+ defp conn_opts ( tenant , token ) do
692
750
[
693
751
connect_info: % {
694
752
uri: URI . parse ( "https://#{ tenant . external_id } .localhost:4000/socket/websocket" ) ,
695
753
x_headers: [ { "x-api-key" , token } ]
696
- } ,
697
- params: params
754
+ }
698
755
]
699
756
end
700
757
0 commit comments