public async Task <CacheProgramResults> ExecuteAsync(IEnumerable <LabUserData> labUserData, CancellationToken cancellationToken)
        {
            var testInputData = new TestInputData
            {
                ResultsFilePath = ResultsFilePath,
                StorageType     = CacheStorageType,
                LabUserDatas    = labUserData.ToList()
            };

            var    inputDataJson = JsonConvert.SerializeObject(testInputData);
            string inputFilePath = Path.Combine(Path.GetTempPath(), Path.GetTempFileName());

            File.WriteAllText(inputFilePath, inputDataJson);

            var sb = new StringBuilder();

            sb.Append($"--inputPath {inputFilePath.EncloseQuotes()} ");
            string arguments    = sb.ToString();
            var    processUtils = new ProcessUtils();

            try
            {
                var processRunResults = await processUtils.RunProcessAsync(ExecutablePath, arguments, cancellationToken).ConfigureAwait(false);

                return(CacheProgramResults.CreateFromResultsFile(ResultsFilePath, processRunResults));
            }
            catch (ProcessRunException ex)
            {
                return(CacheProgramResults.CreateWithFailedExecution(ex));
            }
        }
Beispiel #2
0
 protected override Task InternalExecuteAsync(TestInputData testInputData)
 {
     return(LanguageRunner.ExecuteAsync(
                new JavaLanguageExecutor("TestConsoleApp"),
                testInputData,
                CancellationToken.None));
 }
 protected override Task InternalExecuteAsync(TestInputData testInputData)
 {
     return(LanguageRunner.ExecuteAsync(
                new NodeLanguageExecutor(),
                testInputData,
                default));
 }
Beispiel #4
0
        public void HackerRankTest11()
        {
            TestInputData oData    = BadVibes(_sTestDataRootDir + "hackerrank11_input.txt");
            long          result   = JourneyToTheMoon.journeyToMoon(oData.numAstronauts, oData.astronautPairData);
            long          expected = 4999949998;

            Assert.AreEqual(expected, result);
        }
Beispiel #5
0
        public void SampleTest2()
        {
            TestInputData oData    = BadVibes(_sTestDataRootDir + "sample2_input.txt");
            long          result   = JourneyToTheMoon.journeyToMoon(oData.numAstronauts, oData.astronautPairData);
            int           expected = 5;

            Assert.AreEqual(expected, result);
        }
 public LanguageTestInputData(TestInputData testInputData, string scope, string cacheFilePath)
 {
     LabUserDatas    = testInputData.LabUserDatas;
     ResultsFilePath = testInputData.ResultsFilePath;
     StorageType     = testInputData.StorageType;
     Scope           = scope;
     CacheFilePath   = cacheFilePath;
 }
Beispiel #7
0
            protected override Task InternalExecuteAsync(TestInputData testInputData)
            {
                string scriptFilePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "TestMsalPython.py");

                return(LanguageRunner.ExecuteAsync(
                           new PythonLanguageExecutor(scriptFilePath),
                           testInputData,
                           CancellationToken.None));
            }
            protected override Task InternalExecuteAsync(TestInputData testInputData)
            {
                // TODO: figure out how we setup the public main program, compile it from .java to .class, and execute it
                // May need to have the JavaLanguageExecutor take a .java file and then have a separate compile
                // step on that class to build the java code and run it.
                string javaClassFilePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "SomeJavaClass.class");

                return(LanguageRunner.ExecuteAsync(
                           new JavaLanguageExecutor(javaClassFilePath),
                           testInputData,
                           CancellationToken.None));
            }
            /// <inheritdoc />
            protected override async Task <IEnumerable <CacheExecutorAccountResult> > InternalExecuteAsync(TestInputData testInputData)
            {
                LoggerCallbackHandler.LogCallback = (LogLevel level, string message, bool containsPii) =>
                {
                    Console.WriteLine("{0}: {1}", level, message);
                };

                var results = new List <CacheExecutorAccountResult>();

                foreach (var labUserData in testInputData.LabUserDatas)
                {
                    var tokenCache = new FileBasedTokenCache(
                        testInputData.StorageType,
                        CommonCacheTestUtils.AdalV3CacheFilePath,
                        CommonCacheTestUtils.MsalV2CacheFilePath);

                    var authenticationContext = new AuthenticationContext(labUserData.Authority, tokenCache);

                    try
                    {
                        var result = await authenticationContext.AcquireTokenSilentAsync(
                            TestInputData.MsGraph,
                            labUserData.ClientId,
                            new UserIdentifier(labUserData.Upn, UserIdentifierType.RequiredDisplayableId)).ConfigureAwait(false);

                        Console.WriteLine($"got token for '{result.UserInfo.DisplayableId}' from the cache");
                        results.Add(new CacheExecutorAccountResult(
                                        labUserData.Upn,
                                        result.UserInfo.DisplayableId,
                                        true));
                    }
                    catch (AdalSilentTokenAcquisitionException)
                    {
                        var result = await authenticationContext.AcquireTokenAsync(
                            TestInputData.MsGraph,
                            labUserData.ClientId,
                            new UserPasswordCredential(labUserData.Upn, labUserData.Password)).ConfigureAwait(false);

                        if (string.IsNullOrWhiteSpace(result.AccessToken))
                        {
                            results.Add(new CacheExecutorAccountResult(labUserData.Upn, string.Empty, false));
                        }
                        else
                        {
                            Console.WriteLine($"got token for '{result.UserInfo.DisplayableId}' without the cache");
                            results.Add(new CacheExecutorAccountResult(
                                            labUserData.Upn,
                                            result.UserInfo.DisplayableId,
                                            false));
                        }
                    }
                }

                return(results);
            }
Beispiel #10
0
 public LanguageTestInputData(TestInputData testInputData)
 {
     LabUserDatas    = testInputData.LabUserDatas;
     ResultsFilePath = testInputData.ResultsFilePath;
     StorageType     = testInputData.StorageType;
 }
 public static void ClassInit(TestContext context)
 {
     _geniusClient = GeniusClientInitializer.GetClient();
     _inputData    = TestInputData.GetFromJsonFile();
 }
Beispiel #12
0
            /// <inheritdoc />
            protected override async Task <IEnumerable <CacheExecutorAccountResult> > InternalExecuteAsync(TestInputData testInputData)
            {
                string resource = TestInputData.MsGraph;

                string[] scopes = new[]
                {
                    resource + "/user.read"
                };

                var results = new List <CacheExecutorAccountResult>();

                foreach (var labUserData in testInputData.LabUserDatas)
                {
                    var app = PublicClientApplicationBuilder
                              .Create(labUserData.ClientId)
                              .WithAuthority(new Uri(labUserData.Authority), true)
                              .WithLogging((LogLevel level, string message, bool containsPii) =>
                    {
                        Console.WriteLine("{0}: {1}", level, message);
                    })
                              .WithTelemetry(new TraceTelemetryConfig())
                              .Build();

                    FileBasedTokenCacheHelper.ConfigureUserCache(
                        testInputData.StorageType,
                        app.UserTokenCache,
                        CommonCacheTestUtils.AdalV3CacheFilePath,
                        CommonCacheTestUtils.MsalV2CacheFilePath,
                        CommonCacheTestUtils.MsalV3CacheFilePath);

                    IEnumerable <IAccount> accounts = await app.GetAccountsAsync().ConfigureAwait(false);

                    IAccount accountToReference = accounts.FirstOrDefault(x => x.Username.Equals(labUserData.Upn, StringComparison.OrdinalIgnoreCase));

                    try
                    {
                        var result = await app
                                     .AcquireTokenSilent(scopes, accountToReference)
                                     .WithAuthority(app.Authority)
                                     .WithForceRefresh(false)
                                     .ExecuteAsync(CancellationToken.None)
                                     .ConfigureAwait(false);

                        Console.WriteLine($"got token for '{result.Account.Username}' from the cache");

                        results.Add(new CacheExecutorAccountResult(labUserData.Upn, result.Account.Username, true));
                    }
                    catch (MsalUiRequiredException)
                    {
                        var result = await app
                                     .AcquireTokenByUsernamePassword(scopes, labUserData.Upn, labUserData.Password.ToSecureString())
                                     .ExecuteAsync(CancellationToken.None)
                                     .ConfigureAwait(false);

                        if (string.IsNullOrWhiteSpace(result.AccessToken))
                        {
                            results.Add(new CacheExecutorAccountResult(labUserData.Upn, string.Empty, false));
                        }
                        else
                        {
                            Console.WriteLine($"got token for '{result.Account.Username}' without the cache");
                            results.Add(new CacheExecutorAccountResult(labUserData.Upn, result.Account.Username, false));
                        }
                    }
                }

                return(results);
            }
Beispiel #13
0
            /// <inheritdoc />
            protected override async Task <IEnumerable <CacheExecutorAccountResult> > InternalExecuteAsync(TestInputData testInputData)
            {
                var    v1App    = PreRegisteredApps.CommonCacheTestV1;
                string resource = PreRegisteredApps.MsGraph;

                string[] scopes = new[]
                {
                    resource + "/user.read"
                };

                Logger.LogCallback = (LogLevel level, string message, bool containsPii) =>
                {
                    Console.WriteLine("{0}: {1}", level, message);
                };


                var tokenCache = new TokenCache();

                FileBasedTokenCacheHelper.ConfigureUserCache(
                    testInputData.StorageType,
                    tokenCache,
                    CommonCacheTestUtils.AdalV3CacheFilePath,
                    CommonCacheTestUtils.MsalV2CacheFilePath);

                var app = new PublicClientApplication(v1App.ClientId, v1App.Authority, tokenCache)
                {
                    ValidateAuthority = true
                };

                IEnumerable <IAccount> accounts = await app.GetAccountsAsync().ConfigureAwait(false);

                var results = new List <CacheExecutorAccountResult>();

                foreach (var labUserData in testInputData.LabUserDatas)
                {
                    IAccount accountToReference = accounts.FirstOrDefault(x => x.Username.Equals(labUserData.Upn, StringComparison.OrdinalIgnoreCase));
                    try
                    {
                        var result = await app.AcquireTokenSilentAsync(
                            scopes,
                            accountToReference,
                            app.Authority,
                            false).ConfigureAwait(false);

                        Console.WriteLine($"got token for '{result.Account.Username}' from the cache");
                        results.Add(new CacheExecutorAccountResult(labUserData.Upn, result.Account.Username, true));
                    }
                    catch (MsalUiRequiredException)
                    {
                        var result = await app.AcquireTokenByUsernamePasswordAsync(
                            scopes,
                            labUserData.Upn,
                            labUserData.Password.ToSecureString()).ConfigureAwait(false);

                        if (string.IsNullOrWhiteSpace(result.AccessToken))
                        {
                            results.Add(new CacheExecutorAccountResult(labUserData.Upn, string.Empty, false));
                        }
                        else
                        {
                            Console.WriteLine($"got token for '{result.Account.Username}' without the cache");
                            results.Add(new CacheExecutorAccountResult(labUserData.Upn, result.Account.Username, false));
                        }
                    }
                }

                return(results);
            }