public async Task TenantChangedRequest() { MockTransportBuilder builder = new MockTransportBuilder { AccessTokenLifetime = TimeSpan.Zero, }; MockTransport transport = builder.Build(); SecretClientOptions options = new SecretClientOptions { Transport = transport, }; MockCredential credential = new MockCredential(transport); SecretClient client = new SecretClient(VaultUri, credential, options); KeyVaultSecret secret = await client.GetSecretAsync("test-secret").ConfigureAwait(false); Assert.AreEqual("secret-value", secret.Value); builder.TenantId = "de763a21-49f7-4b08-a8e1-52c8fbc103b4"; try { await client.GetSecretAsync("test-secret").ConfigureAwait(false); Assert.Fail("Expected a 401 Unauthorized response"); } catch (RequestFailedException ex) when(ex.Status == 401) { } }
public async Task MultipleRequests(int numberOfRequests, int minDelay, int maxDelay) { Random rand = new Random(); MockTransportBuilder builder = new MockTransportBuilder(); builder.Request += async(sender, args) => { int delay; lock (rand) { delay = rand.Next(minDelay, maxDelay); } Trace.WriteLine($"[{Thread.CurrentThread.ManagedThreadId:x4}] Delaying request [{args.Request.ClientRequestId}] by {delay}ms: {args.Request.Method} {args.Request.Uri}"); await Task.Delay(delay); }; MockTransport transport = builder.Build(); SecretClientOptions options = new SecretClientOptions { Transport = transport, //Diagnostics = //{ // // Headers and content are fake so no PII is leaked and this is useful for debugging. // LoggedHeaderNames = { "*" }, // IsLoggingContentEnabled = true, //}, }; //using AzureEventSourceListener logger = AzureEventSourceListener.CreateTraceLogger(EventLevel.Verbose); SecretClient client = new SecretClient(VaultUri, new MockCredential(transport), options); Task <Response <KeyVaultSecret> >[] tasks = new Task <Response <KeyVaultSecret> > [numberOfRequests]; for (int i = 0; i < tasks.Length; ++i) { tasks[i] = Task.Run(async() => await client.GetSecretAsync("test-secret").ConfigureAwait(false)); } foreach (KeyVaultSecret secret in await Task.WhenAll(tasks)) { Assert.AreEqual("secret-value", secret.Value); } }