public static async Task <ITestApplication> SessionSuperAdminAsync(this ITestApplicationFactory testAppFactory)
 {
     return(await EastFive.Web.Configuration.Settings.GetGuid(EastFive.Api.AppSettings.AuthorizationIdSuperAdmin,
                                                              async (superAdminAuthorizationId) =>
     {
         var sessionToRun = testAppFactory.GetUnauthorizedSession();
         var sessionRef = Guid.NewGuid().AsRef <EastFive.Azure.Auth.Session>();
         var session = new EastFive.Azure.Auth.Session
         {
             sessionId = sessionRef,
             authorization = superAdminAuthorizationId.AsRefOptional <EastFive.Azure.Auth.Authorization>(),
         };
         var token = await sessionToRun.PostAsync(
             session,
             onCreatedBody:
             (sessionCreated, contentType) =>
         {
             return ((EastFive.Azure.Auth.Session)sessionCreated).token;
         });
         var testApplication = testAppFactory.GetAuthorizedSession(token);
         return testApplication;
     },
                                                              (why) =>
     {
         Assert.Fail(why);
         throw new Exception(why);
     }));
 }
Esempio n. 2
0
        public static async Task <TResult> ExecuteLoginRedirect <TRedirect, TResult>(this ITestApplicationFactory sessionFactory,
                                                                                     string integrationName,
                                                                                     Func <ITestApplication, TRedirect> getRedirect,
                                                                                     Func <ITestApplication, Auth.Session, Auth.Authorization, Uri, TResult> onComplete)
        {
            var comms            = sessionFactory.GetUnauthorizedSession();
            var responseResource = getRedirect(comms);

            //var authentication = await comms.GetAsync<Method, Method>(
            //    onContents:
            //        authentications =>
            //        {
            //            var matchingAuthentications = authentications
            //                .Where(auth => auth.name == integrationName);
            //            Assert.IsTrue(matchingAuthentications.Any());
            //            return matchingAuthentications.First();
            //        });

            return(await await comms.GetAsync(responseResource,
                                              onRedirect :
                                              async(urlRedirect) =>
            {
                var authIdStr = urlRedirect.GetQueryParam(EastFive.Api.Azure.AzureApplication.QueryRequestIdentfier);
                var authId = Guid.Parse(authIdStr);
                var authIdRef = authId.AsRef <Auth.Authorization>();

                // TODO: New comms here?
                return await await comms.GetAsync(
                    (Auth.Authorization authorizationGet) => authorizationGet.authorizationRef.AssignQueryValue(authIdRef),
                    onContent:
                    (authenticatedAuthorization) =>
                {
                    // Use comms here to avoid losing overides var commsRedirect = sessionFactory.GetUnauthorizedSession();
                    var session = new Session
                    {
                        sessionId = Guid.NewGuid().AsRef <Session>(),
                        authorization = new RefOptional <Auth.Authorization>(authenticatedAuthorization.authorizationRef),
                    };
                    return comms.PostAsync(session,                 // commsRedirect.PostAsync(session,
                                           onCreatedBody:
                                           (updated, contentType) =>
                    {
                        var commsAuth = sessionFactory.GetAuthorizedSession(updated.token);
                        return onComplete(commsAuth, updated, authenticatedAuthorization, urlRedirect);
                    });
                });
            }));
        }
        public static async Task <ITestApplication> SessionUnauthenticatedAsync(this ITestApplicationFactory testAppFactory)
        {
            var sessionToRun = testAppFactory.GetUnauthorizedSession();
            var token        = await sessionToRun.PostAsync(
                new EastFive.Azure.Auth.Session
            {
                sessionId = Guid.NewGuid().AsRef <EastFive.Azure.Auth.Session>(),
            },
                onCreatedBody :
                (sessionCreated, contentType) =>
            {
                return(((EastFive.Azure.Auth.Session)sessionCreated).token);
            });

            var testApplication = testAppFactory.GetAuthorizedSession(token);

            return(testApplication);
        }