@@ -523,13 +523,71 @@ defmodule RealtimeWeb.RealtimeChannelTest do
523523 end
524524
525525 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
527527 api_key = Generators . generate_jwt_token ( tenant )
528528 { :ok , % Socket { } = socket } = connect ( UserSocket , % { "log_level" => "warning" } , conn_opts ( tenant , api_key ) )
529529
530530 assert { :ok , _ , % Socket { } } = subscribe_and_join ( socket , "realtime:test" , % { } )
531531 end
532532
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+
533591 test "api_key has expired" , % { tenant: tenant } do
534592 assert capture_log ( fn ->
535593 api_key =
@@ -688,13 +746,12 @@ defmodule RealtimeWeb.RealtimeChannelTest do
688746 assert [ { _ , ^ transport_pid_1 } ] = Registry . lookup ( RealtimeWeb.SocketDisconnect.Registry , tenant . external_id )
689747 end
690748
691- defp conn_opts ( tenant , token , params \\ % { } ) do
749+ defp conn_opts ( tenant , token ) do
692750 [
693751 connect_info: % {
694752 uri: URI . parse ( "https://#{ tenant . external_id } .localhost:4000/socket/websocket" ) ,
695753 x_headers: [ { "x-api-key" , token } ]
696- } ,
697- params: params
754+ }
698755 ]
699756 end
700757
0 commit comments