1010#include " oidc_session_create_handler.h"
1111#include " oidc_settings.h"
1212#include " openid_connect.h"
13+ #include " context.h"
1314
1415using namespace NMVP ::NOIDC;
1516
@@ -719,23 +720,18 @@ Y_UNIT_TEST_SUITE(Mvp) {
719720 TStringBuilder request;
720721 request << " GET /auth/callback?code=code_template&state=" << state << " HTTP/1.1\r\n " ;
721722 request << " Host: " + hostProxy + " \r\n " ;
722- request << " Cookie: " << CreateNameYdbOidcCookie (settings.ClientSecret , wrongState) << " =" << GenerateCookie (wrongState, " /requested/page" , settings.ClientSecret , redirectStrategy.IsAjaxRequest ()) << " \r\n " ;
723+ TContext context (wrongState, " /requested/page" , redirectStrategy.IsAjaxRequest ());
724+ request << " Cookie: " << context.CreateYdbOidcCookie (settings.ClientSecret ) << " \r\n " ;
723725 NHttp::THttpIncomingRequestPtr incomingRequest = new NHttp::THttpIncomingRequest ();
724726 EatWholeString (incomingRequest, redirectStrategy.CreateRequest (request));
725727 incomingRequest->Endpoint ->Secure = true ;
726728 runtime.Send (new IEventHandle (sessionCreator, edge, new NHttp::TEvHttpProxy::TEvHttpIncomingRequest (incomingRequest)));
727729
728730 TAutoPtr<IEventHandle> handle;
729731 NHttp::TEvHttpProxy::TEvHttpOutgoingResponse* outgoingResponseEv = runtime.GrabEdgeEvent <NHttp::TEvHttpProxy::TEvHttpOutgoingResponse>(handle);
730- UNIT_ASSERT_STRINGS_EQUAL (outgoingResponseEv->Response ->Status , " 302" );
731- const NHttp::THeaders headers (outgoingResponseEv->Response ->Headers );
732- UNIT_ASSERT (headers.Has (" Location" ));
733- TString location = TString (headers.Get (" Location" ));
734- UNIT_ASSERT_STRING_CONTAINS (location, " https://auth.test.net/oauth/authorize" );
735- UNIT_ASSERT_STRING_CONTAINS (location, " response_type=code" );
736- UNIT_ASSERT_STRING_CONTAINS (location, " scope=openid" );
737- UNIT_ASSERT_STRING_CONTAINS (location, " client_id=" + settings.ClientId );
738- UNIT_ASSERT_STRING_CONTAINS (location, " redirect_uri=https://" + hostProxy + " /auth/callback" );
732+ UNIT_ASSERT_STRINGS_EQUAL (outgoingResponseEv->Response ->Status , " 400" );
733+ UNIT_ASSERT_STRING_CONTAINS (outgoingResponseEv->Response ->Body , " Unknown error has occurred. Please open the page again" );
734+
739735 }
740736
741737 Y_UNIT_TEST (OpenIdConnectotWrongStateAuthorizationFlow) {
@@ -773,8 +769,8 @@ Y_UNIT_TEST_SUITE(Mvp) {
773769 TStringBuilder request;
774770 request << " GET /auth/callback?code=code_template&state=" << state << " HTTP/1.1\r\n " ;
775771 request << " Host: oidcproxy.net\r\n " ;
776- const TString oidcCookie = CreateNameYdbOidcCookie (settings. ClientSecret , state );
777- request << " Cookie: " << oidcCookie << " = " << GenerateCookie (state, " /requested/page " , settings.ClientSecret , false ) << " \r\n\r\n " ;
772+ TContext context (state, " /requested/page " , false );
773+ request << " Cookie: " << context. CreateYdbOidcCookie ( settings.ClientSecret ) << " \r\n\r\n " ;
778774 NHttp::THttpIncomingRequestPtr incomingRequest = new NHttp::THttpIncomingRequest ();
779775 EatWholeString (incomingRequest, request);
780776 runtime.Send (new IEventHandle (sessionCreator, edge, new NHttp::TEvHttpProxy::TEvHttpIncomingRequest (incomingRequest)));
@@ -823,7 +819,8 @@ Y_UNIT_TEST_SUITE(Mvp) {
823819 TStringBuilder request;
824820 request << " GET /auth/callback?code=code_template&state=" << state << " HTTP/1.1\r\n " ;
825821 request << " Host: oidcproxy.net\r\n " ;
826- request << " Cookie: " << CreateNameYdbOidcCookie (settings.ClientSecret , state) << " =" << GenerateCookie (state, " /requested/page" , settings.ClientSecret , redirectStrategy.IsAjaxRequest ()) << " \r\n " ;
822+ TContext context (state, " /requested/page" , redirectStrategy.IsAjaxRequest ());
823+ request << " Cookie: " << context.CreateYdbOidcCookie (settings.ClientSecret ) << " \r\n " ;
827824 NHttp::THttpIncomingRequestPtr incomingRequest = new NHttp::THttpIncomingRequest ();
828825 EatWholeString (incomingRequest, redirectStrategy.CreateRequest (request));
829826 incomingRequest->Endpoint ->Secure = true ;
@@ -843,22 +840,11 @@ Y_UNIT_TEST_SUITE(Mvp) {
843840 " Content-Length: " + ToString (authorizationServerResponse.length ()) + " \r\n\r\n " + authorizationServerResponse);
844841 runtime.Send (new IEventHandle (handle->Sender , edge, new NHttp::TEvHttpProxy::TEvHttpIncomingResponse (outgoingRequestEv->Request , incomingResponse)));
845842 auto outgoingResponseEv = runtime.GrabEdgeEvent <NHttp::TEvHttpProxy::TEvHttpOutgoingResponse>(handle);
846- redirectStrategy.CheckRedirectStatus (outgoingResponseEv);
847- TString location = redirectStrategy.GetRedirectUrl (outgoingResponseEv);
848- UNIT_ASSERT_STRING_CONTAINS (location, " https://auth.test.net/oauth/authorize" );
849- UNIT_ASSERT_STRING_CONTAINS (location, " response_type=code" );
850- UNIT_ASSERT_STRING_CONTAINS (location, " scope=openid" );
851- UNIT_ASSERT_STRING_CONTAINS (location, " client_id=" + settings.ClientId );
852- UNIT_ASSERT_STRING_CONTAINS (location, " redirect_uri=https://oidcproxy.net/auth/callback" );
853-
854- NHttp::TUrlParameters urlParameters (location);
855- const TString newState = urlParameters[" state" ];
856-
857- NHttp::THeaders headers (outgoingResponseEv->Response ->Headers );
858- UNIT_ASSERT (headers.Has (" Set-Cookie" ));
859- const TStringBuf setCookie = headers.Get (" Set-Cookie" );
860- UNIT_ASSERT_STRING_CONTAINS (setCookie, CreateNameYdbOidcCookie (settings.ClientSecret , newState));
861- redirectStrategy.CheckSpecificHeaders (headers);
843+ UNIT_ASSERT_STRINGS_EQUAL (outgoingResponseEv->Response ->Status , " 302" );
844+ const NHttp::THeaders headers (outgoingResponseEv->Response ->Headers );
845+ UNIT_ASSERT (headers.Has (" Location" ));
846+ TStringBuf location = headers.Get (" Location" );
847+ UNIT_ASSERT_STRING_CONTAINS (location, " /requested/page" );
862848 }
863849
864850 Y_UNIT_TEST (OpenIdConnectSessionServiceCreateAccessTokenInvalid) {
@@ -896,8 +882,8 @@ Y_UNIT_TEST_SUITE(Mvp) {
896882 TStringBuilder request;
897883 request << " GET /callback?code=code_template&state=" << state << " HTTP/1.1\r\n " ;
898884 request << " Host: oidcproxy.net\r\n " ;
899- const TString oidcCookie = CreateNameYdbOidcCookie (settings. ClientSecret , state );
900- request << " Cookie: " << oidcCookie << " = " << GenerateCookie (state, " /requested/page " , settings.ClientSecret , false ) << " \r\n\r\n " ;
885+ TContext context (state, " /requested/page " , false );
886+ request << " Cookie: " << context. CreateYdbOidcCookie ( settings.ClientSecret ) << " \r\n\r\n " ;
901887 NHttp::THttpIncomingRequestPtr incomingRequest = new NHttp::THttpIncomingRequest ();
902888 EatWholeString (incomingRequest, request);
903889 runtime.Send (new IEventHandle (sessionCreator, edge, new NHttp::TEvHttpProxy::TEvHttpIncomingRequest (incomingRequest)));
@@ -941,14 +927,14 @@ Y_UNIT_TEST_SUITE(Mvp) {
941927 std::unique_ptr<grpc::Server> sessionServer (builder.BuildAndStart ());
942928
943929 const NActors::TActorId sessionCreator = runtime.Register (new TSessionCreateHandler (edge, settings));
944- TStringBuf firstRequestState = " first_request_state" ;
945- TStringBuf secondRequestState = " second_request_state" ;
946- TString firstCookie { CreateNameYdbOidcCookie (settings. ClientSecret , firstRequestState) + " = " + GenerateCookie (firstRequestState , " /requested/page" , settings. ClientSecret , redirectStrategy.IsAjaxRequest ())} ;
947- TString secondCookie { CreateNameYdbOidcCookie (settings. ClientSecret , secondRequestState) + " = " + GenerateCookie (secondRequestState , " /requested/page" , settings. ClientSecret , redirectStrategy.IsAjaxRequest ())} ;
930+ TString firstRequestState = " first_request_state" ;
931+ TString secondRequestState = " second_request_state" ;
932+ TContext context1 ( firstRequestState, " /requested/page" , redirectStrategy.IsAjaxRequest ());
933+ TContext context2 ( secondRequestState, " /requested/page" , redirectStrategy.IsAjaxRequest ());
948934 TStringBuilder request;
949935 request << " GET /auth/callback?code=code_template&state=" << firstRequestState << " HTTP/1.1\r\n " ;
950936 request << " Host: oidcproxy.net\r\n " ;
951- request << " Cookie: " << firstCookie << " ; " << secondCookie << " \r\n " ;
937+ request << " Cookie: " << context1. CreateYdbOidcCookie (settings. ClientSecret ) << " ; " << context2. CreateYdbOidcCookie (settings. ClientSecret ) << " \r\n " ;
952938 NHttp::THttpIncomingRequestPtr incomingRequest = new NHttp::THttpIncomingRequest ();
953939 EatWholeString (incomingRequest, redirectStrategy.CreateRequest (request));
954940 incomingRequest->Endpoint ->Secure = true ;
0 commit comments