From 8c315af495c4188adb83fa5725f11b833fb2b86b Mon Sep 17 00:00:00 2001 From: Noah McGregor Harper <74685766+nharper285@users.noreply.github.com> Date: Thu, 12 Oct 2023 10:32:32 -0700 Subject: [PATCH 1/4] Create new `CrashReported` metric that track report upload attempts (#3567) * Release 8.7.1 (hotfix) (#3459) * Remove the retention policy setting (#3452) --------- Co-authored-by: Cheick Keita <chkeita@microsoft.com> * Revert "Release 8.7.1 (hotfix) (#3459)" (#3468) This reverts commit c69deed50e81cc1805f6f82ebb10513a211cbbe2. * Redo 8.7.1 (#3469) * Redo-8.7.1-hotfix --------- Co-authored-by: Cheick Keita <chkeita@microsoft.com> * Support custom ado fields that mark work items as duplicate (#3467) * Add field to ado config for checking duplicate work items * Make duplicate fields nullable and add it to python models * Update broken tests * Update docs to include new ado_duplicate_fields property * Update readme with archive message (#3408) Co-authored-by: Adam <103067949+AdamL-Microsoft@users.noreply.github.com> * Bump tokio from 1.30.0 to 1.32.0 in /src/proxy-manager (#3425) Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.30.0 to 1.32.0. - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.30.0...tokio-1.32.0) --- updated-dependencies: - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump tokio from 1.30.0 to 1.32.0 in /src/agent (#3424) Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.30.0 to 1.32.0. - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.30.0...tokio-1.32.0) --- updated-dependencies: - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Remove unnecessary method argument (#3473) * Bump elsa from 1.8.1 to 1.9.0 in /src/agent (#3411) Bumps [elsa](https://github.com/manishearth/elsa) from 1.8.1 to 1.9.0. - [Commits](https://github.com/manishearth/elsa/compare/v1.8.1...v1.9.0) --- updated-dependencies: - dependency-name: elsa dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump tempfile from 3.7.1 to 3.8.0 in /src/agent (#3437) Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.7.1 to 3.8.0. - [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md) - [Commits](https://github.com/Stebalien/tempfile/compare/v3.7.1...v3.8.0) --- updated-dependencies: - dependency-name: tempfile dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump tempfile from 3.7.1 to 3.8.0 in /src/proxy-manager (#3436) Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.7.1 to 3.8.0. - [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md) - [Commits](https://github.com/Stebalien/tempfile/compare/v3.7.1...v3.8.0) --- updated-dependencies: - dependency-name: tempfile dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Updating requirements.txt to accept >= onefuzztypes. (#3477) * Updating requirements.txt to accept >= onefuzztypes. * Trying to loosen restriction. * Bump notify from 6.0.1 to 6.1.1 in /src/agent (#3435) Bumps [notify](https://github.com/notify-rs/notify) from 6.0.1 to 6.1.1. - [Release notes](https://github.com/notify-rs/notify/releases) - [Changelog](https://github.com/notify-rs/notify/blob/main/CHANGELOG.md) - [Commits](https://github.com/notify-rs/notify/compare/notify-6.0.1...notify-6.1.1) --- updated-dependencies: - dependency-name: notify dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump azure_* crates (#3478) * Release 8.8.0 (#3466) * Release 8.8.0 * Bump clap from 4.3.21 to 4.4.2 in /src/agent (#3484) Bumps [clap](https://github.com/clap-rs/clap) from 4.3.21 to 4.4.2. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v4.3.21...v4.4.2) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump gimli from 0.27.3 to 0.28.0 in /src/agent (#3414) Bumps [gimli](https://github.com/gimli-rs/gimli) from 0.27.3 to 0.28.0. - [Changelog](https://github.com/gimli-rs/gimli/blob/master/CHANGELOG.md) - [Commits](https://github.com/gimli-rs/gimli/compare/0.27.3...0.28.0) --- updated-dependencies: - dependency-name: gimli dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump clap from 4.3.21 to 4.4.2 in /src/proxy-manager (#3474) Bumps [clap](https://github.com/clap-rs/clap) from 4.3.21 to 4.4.2. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v4.3.21...v4.4.2) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump winreg from 0.50.0 to 0.51.0 in /src/agent (#3434) Bumps [winreg](https://github.com/gentoo90/winreg-rs) from 0.50.0 to 0.51.0. - [Release notes](https://github.com/gentoo90/winreg-rs/releases) - [Changelog](https://github.com/gentoo90/winreg-rs/blob/master/CHANGELOG.md) - [Commits](https://github.com/gentoo90/winreg-rs/compare/v0.50.0...v0.51.0) --- updated-dependencies: - dependency-name: winreg dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Adam <103067949+AdamL-Microsoft@users.noreply.github.com> * Starting integration tests (#3438) * Starting integration tests * Ready to test the test * Parametrize test * checkpoint * Test works * Run integration tests in pipeline * fmt * . * -p * Install clang * quotes not required in yaml? * Hopefully fixed windows? * Try without killondrop * lint * small test * another test * Reuse core name * Wrong step * bump tokio? * Try with rust * make build happy * Bump pete and small clean up * Clean up and make the test pass regularly * fix broken ci * Lower the poll timeout * Set the timeout in a nicer way * fix windows * fmt * Include and copy pdbs * Ignore if pdb is missing on linux * It takes too long for coverage to be generated * lint * Only warn on missing coverage since it's flaky * Fix windows build * Small clean up * Try lowering the poll delay * fix coverage * PR comments * . * Apparently make is missing? * Remove aggressive step skipping in CI * Fix sed checks for CLI versioning (#3486) * Fix sed checks for CLI versioning * Fix. * Fix. * Changing build_cli * Trying greater than * Tring once more. * Trying major minor * trying to replace major minor * Using major minor * Bump bytes from 1.4.0 to 1.5.0 in /src/agent (#3488) Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.4.0 to 1.5.0. - [Release notes](https://github.com/tokio-rs/bytes/releases) - [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md) - [Commits](https://github.com/tokio-rs/bytes/compare/v1.4.0...v1.5.0) --- updated-dependencies: - dependency-name: bytes dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Improve area/iteration path validation (#3489) * Add more comprehensive checks and better error messages to area/iteration path validation * Join invalid chars with space instead of comma * Make tree path validation more testable * Add error code for invalid ADO project in config * Write unit tests for tree path validation * Format tree path unit tests * Merge escape character and control character checks and clarify error message * Improve handling of unexpected breakpoints (#3493) * Improve handling of unexpected breakpoints * fmt * Update azure_* crates (#3503) * Fuzz coverage recording (#3322) * Fuzz coverage recording * Update cargo.toml * Update src/agent/coverage/fuzz/fuzz_targets/fuzz_target_record_coverage.rs Co-authored-by: George Pollard <porges@porg.es> * Fix fuzz --------- Co-authored-by: George Pollard <porges@porg.es> * Reporting coverage on task start up (#3502) * Reporting coverage on task start up * Moving metric up. * Remove feature flag from heartbeat metrics. (#3505) * Update archive notice. (#3507) * Add onefuzz service version to job created events (#3504) * Tevoinea/add version checking in local tasks (#3517) * Compare task version to service version * Swallow output when looking for appropriate name * Create directories if they don't exist in the template (#3522) * Create directories if they don't exist in the template * fmt * Support for retention policies on containers (#3501) - [x] ability to specify a retention period on a container, which applies to newly-created blobs - [x] specify default retention periods in templates from CLI side There's a small breaking change to the Python JobHelper class. * Bump rayon from 1.7.0 to 1.8.0 in /src/agent (#3520) Bumps [rayon](https://github.com/rayon-rs/rayon) from 1.7.0 to 1.8.0. - [Changelog](https://github.com/rayon-rs/rayon/blob/master/RELEASES.md) - [Commits](https://github.com/rayon-rs/rayon/compare/rayon-core-v1.7.0...rayon-core-v1.8.0) --- updated-dependencies: - dependency-name: rayon dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump insta from 1.31.0 to 1.32.0 in /src/agent (#3521) Bumps [insta](https://github.com/mitsuhiko/insta) from 1.31.0 to 1.32.0. - [Changelog](https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md) - [Commits](https://github.com/mitsuhiko/insta/compare/1.31.0...1.32.0) --- updated-dependencies: - dependency-name: insta dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Disable `repro` and `debug` VM CLI commands. (#3494) * Disable and VM CLI commands. * Formatting. * More formatting. * More formatting. * Removing Repro check. * Make modules case insenstive on windows (#3527) * Make modules and coverage allowlist case insensitive on Windows * Tests and fmt * PR comments * fmt * Debugging missing file coverage * fmt * Broken linux test * Add a case insensitive transformer for better perf * cargo fix * Update windows interceptor list (#3528) * Template creation command (#3531) * Tasks are selectable * Almost there * It works * fmt * remove dead code * Remove unnecessary comments * Improve instructions * fix bug * Add some dummy values for paths * Terminate process on timeout in windows for the coverage task (#3529) * Terminate process on timeout in windows for the coverage task * set the timeout before we start the debugger * split the target launch from the debugger initialization wait for the process to finish on a separate thread * fix build * move comments * Ignore regression update when the work item is in some states (#3532) * Ignore regression update when the work item is in some states * format * formatting * don't hide messages in the poison queue * fix typo * update regression logic update test_template to support regression * build fix * mypy fix * build fix * move regression ignore state under ADODuplicateTemplate * replace extend with append * update set_tcp_keepalive * mke mypy happy * copy ADODuplicateTemplate.OnDuplicate.RegressionIgnoreStates * Adding new UniqueReport metric for attempts. * rename metric * lock --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Adam <103067949+AdamL-Microsoft@users.noreply.github.com> Co-authored-by: Cheick Keita <chkeita@microsoft.com> Co-authored-by: Kanan B <32438208+kananb@users.noreply.github.com> Co-authored-by: Marc Greisen <mgreisen@microsoft.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: George Pollard <gpollard@microsoft.com> Co-authored-by: Teo Voinea <58236992+tevoinea@users.noreply.github.com> Co-authored-by: George Pollard <porges@porg.es> --- src/agent/onefuzz-result/src/job_result.rs | 1 + src/agent/onefuzz-task/src/tasks/report/crash_report.rs | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/agent/onefuzz-result/src/job_result.rs b/src/agent/onefuzz-result/src/job_result.rs index b305eca2cb..08f7bbc1ee 100644 --- a/src/agent/onefuzz-result/src/job_result.rs +++ b/src/agent/onefuzz-result/src/job_result.rs @@ -17,6 +17,7 @@ pub enum JobResultData { NewCrashingInput, NoReproCrashingInput, NewReport, + CrashReported, NewUniqueReport, NewRegressionReport, NewCoverage, diff --git a/src/agent/onefuzz-task/src/tasks/report/crash_report.rs b/src/agent/onefuzz-task/src/tasks/report/crash_report.rs index 290b98ccde..9ae618ce93 100644 --- a/src/agent/onefuzz-task/src/tasks/report/crash_report.rs +++ b/src/agent/onefuzz-task/src/tasks/report/crash_report.rs @@ -166,6 +166,14 @@ impl CrashTestResult { match self { Self::CrashReport(report) => { // Use SHA-256 of call stack as dedupe key. + if let Some(jr_client) = jr_client { + let _ = jr_client + .send_direct( + JobResultData::CrashReported, + HashMap::from([("count".to_string(), 1.0)]), + ) + .await; + } if let Some(unique_reports) = unique_reports { let name = report.unique_blob_name(); if upload_or_save_local(&report, &name, unique_reports).await? { From f25128281a43a6cf507c05face5932a9321d0fa9 Mon Sep 17 00:00:00 2001 From: Kanan B <32438208+kananb@users.noreply.github.com> Date: Thu, 12 Oct 2023 11:43:07 -0700 Subject: [PATCH 2/4] Add middleware for optional strict CLI version checking (#3564) * Add a middleware for strict version checking * Fill in doc comments * Move header names to constants * Make version middleware more easily testable and add first unit test * Add the rest of the version check unit tests * Fix build errors for dropped FluentAssertions return values in other tests * dotnet format * Fix import order * fix str.lower on optional str * Rename TestCliVersion to CheckCliVersion * Use OneFuzzResultVoid instead of nullabe Error * Change version parser to Semver * Restore projects that use ApiService * Add a prerelease version test case --- src/ApiService/ApiService/ApiService.csproj | 2 +- .../ApiService/OneFuzzTypes/Enums.cs | 1 + src/ApiService/ApiService/Program.cs | 63 + .../ApiService/onefuzzlib/Versions.cs | 4 +- src/ApiService/ApiService/packages.lock.json | 6 +- src/ApiService/FunctionalTests/Auth.cs | 2 +- .../FunctionalTests/FunctionalTests.csproj | 5 +- .../FunctionalTests/TestContainer.cs | 18 +- src/ApiService/FunctionalTests/TestInfo.cs | 4 +- src/ApiService/FunctionalTests/TestNode.cs | 20 +- src/ApiService/FunctionalTests/TestPool.cs | 12 +- src/ApiService/FunctionalTests/TestProxy.cs | 18 +- .../FunctionalTests/TestScaleset.cs | 28 +- src/ApiService/FunctionalTests/TestTasks.cs | 8 +- .../TestVersionCheckMiddleware.cs | 165 ++ .../FunctionalTests/packages.lock.json | 1464 ++++++++++++++++- .../IntegrationTests/packages.lock.json | 6 +- src/ApiService/Tests/packages.lock.json | 6 +- src/cli/onefuzz/backend.py | 7 +- src/pytypes/onefuzztypes/enums.py | 1 + 20 files changed, 1712 insertions(+), 128 deletions(-) create mode 100644 src/ApiService/FunctionalTests/TestVersionCheckMiddleware.cs diff --git a/src/ApiService/ApiService/ApiService.csproj b/src/ApiService/ApiService/ApiService.csproj index b96b58e8b4..1a80d69bcc 100644 --- a/src/ApiService/ApiService/ApiService.csproj +++ b/src/ApiService/ApiService/ApiService.csproj @@ -13,7 +13,7 @@ <PackageReference Include="Microsoft.Azure.Functions.Worker.ApplicationInsights" Version="1.0.0-preview4" /> <PackageReference Include="Microsoft.Rest.ClientRuntime" Version="2.3.24" /> - <PackageReference Include="Semver" Version="2.1.0" /> + <PackageReference Include="Semver" Version="2.3.0" /> <PackageReference Include="Azure.Security.KeyVault.Secrets" Version="4.3.0" /> <PackageReference Include="Microsoft.Azure.AppConfiguration.Functions.Worker" Version="6.0.0" /> <PackageReference Include="Microsoft.FeatureManagement" Version="2.5.1" /> diff --git a/src/ApiService/ApiService/OneFuzzTypes/Enums.cs b/src/ApiService/ApiService/OneFuzzTypes/Enums.cs index 4692debfe8..9f752622f1 100644 --- a/src/ApiService/ApiService/OneFuzzTypes/Enums.cs +++ b/src/ApiService/ApiService/OneFuzzTypes/Enums.cs @@ -51,6 +51,7 @@ public enum ErrorCode { ADO_VALIDATION_INVALID_PATH = 495, ADO_VALIDATION_INVALID_PROJECT = 496, INVALID_RETENTION_PERIOD = 497, + INVALID_CLI_VERSION = 498, // NB: if you update this enum, also update enums.py } diff --git a/src/ApiService/ApiService/Program.cs b/src/ApiService/ApiService/Program.cs index d5ee30b45e..f26463883b 100644 --- a/src/ApiService/ApiService/Program.cs +++ b/src/ApiService/ApiService/Program.cs @@ -18,6 +18,7 @@ using Microsoft.FeatureManagement; using Microsoft.Graph; using Microsoft.OneFuzz.Service.OneFuzzLib.Orm; +using Semver; namespace Microsoft.OneFuzz.Service; public class Program { @@ -58,6 +59,67 @@ public async Async.Task Invoke(FunctionContext context, FunctionExecutionDelegat } } + /// <summary> + /// Represents a middleware that can optionally perform strict version checking based on data sent in request headers. + /// </summary> + public class VersionCheckingMiddleware : IFunctionsWorkerMiddleware { + private const string CliVersionHeader = "Cli-Version"; + private const string StrictVersionHeader = "Strict-Version"; + private readonly SemVersion _oneFuzzServiceVersion; + private readonly IRequestHandling _requestHandling; + + /// <summary> + /// Initializes an instance of <see cref="VersionCheckingMiddleware"/> with the provided config and request handling objects. + /// </summary> + /// <param name="config">The service config containing the service version.</param> + /// <param name="requestHandling">The request handling object to create HTTP responses with.</param> + public VersionCheckingMiddleware(IServiceConfig config, IRequestHandling requestHandling) { + _oneFuzzServiceVersion = SemVersion.Parse(config.OneFuzzVersion, SemVersionStyles.Strict); + _requestHandling = requestHandling; + } + + public OneFuzzResultVoid CheckCliVersion(Azure.Functions.Worker.Http.HttpHeadersCollection headers) { + var doStrictVersionCheck = + headers.TryGetValues(StrictVersionHeader, out var strictVersion) + && strictVersion?.FirstOrDefault()?.Equals("true", StringComparison.InvariantCultureIgnoreCase) == true; // "== true" necessary here to avoid implicit null -> bool casting + + if (doStrictVersionCheck) { + if (!headers.TryGetValues(CliVersionHeader, out var cliVersion)) { + return Error.Create(ErrorCode.INVALID_REQUEST, $"'{StrictVersionHeader}' is set to true without a corresponding '{CliVersionHeader}' header"); + } + if (!SemVersion.TryParse(cliVersion?.FirstOrDefault() ?? "", SemVersionStyles.Strict, out var version)) { + return Error.Create(ErrorCode.INVALID_CLI_VERSION, $"'{CliVersionHeader}' header value is not a valid sematic version"); + } + if (version.ComparePrecedenceTo(_oneFuzzServiceVersion) < 0) { + return Error.Create(ErrorCode.INVALID_CLI_VERSION, "cli is out of date"); + } + } + + return OneFuzzResultVoid.Ok; + } + + /// <summary> + /// Checks the request for two headers, cli version and one indicating whether to do strict version checking. + /// When both are present and the cli is out of date, a descriptive response is sent back. + /// </summary> + /// <param name="context">The function context.</param> + /// <param name="next">The function execution delegate.</param> + /// <returns>A <seealso cref="Task"/> </returns> + public async Async.Task Invoke(FunctionContext context, FunctionExecutionDelegate next) { + var requestData = await context.GetHttpRequestDataAsync(); + if (requestData is not null) { + var error = CheckCliVersion(requestData.Headers); + if (!error.IsOk) { + var response = await _requestHandling.NotOk(requestData, error.ErrorV, "version middleware"); + context.GetInvocationResult().Value = response; + return; + } + } + + await next(context); + } + } + //Move out expensive resources into separate class, and add those as Singleton // ArmClient, Table Client(s), Queue Client(s), HttpClient, etc. @@ -161,6 +223,7 @@ public static async Async.Task Main() { builder.UseMiddleware<LoggingMiddleware>(); builder.UseMiddleware<Auth.AuthenticationMiddleware>(); builder.UseMiddleware<Auth.AuthorizationMiddleware>(); + builder.UseMiddleware<VersionCheckingMiddleware>(); //this is a must, to tell the host that worker logging is done by us builder.Services.Configure<WorkerOptions>(workerOptions => workerOptions.Capabilities["WorkerApplicationInsightsLoggingEnabled"] = bool.TrueString); diff --git a/src/ApiService/ApiService/onefuzzlib/Versions.cs b/src/ApiService/ApiService/onefuzzlib/Versions.cs index 6c44812a34..68032124d4 100644 --- a/src/ApiService/ApiService/onefuzzlib/Versions.cs +++ b/src/ApiService/ApiService/onefuzzlib/Versions.cs @@ -2,11 +2,11 @@ namespace Microsoft.OneFuzz.Service; -public class versions { +public class Versions { public static bool IsMinimumVersion(string versionStr, string minimumStr) { var version = SemVersion.Parse(versionStr, SemVersionStyles.Any); var minimum = SemVersion.Parse(minimumStr, SemVersionStyles.Any); - return version >= minimum; + return version.ComparePrecedenceTo(minimum) >= 0; } } diff --git a/src/ApiService/ApiService/packages.lock.json b/src/ApiService/ApiService/packages.lock.json index 5f57ce8ebd..1f912aa014 100644 --- a/src/ApiService/ApiService/packages.lock.json +++ b/src/ApiService/ApiService/packages.lock.json @@ -385,9 +385,9 @@ }, "Semver": { "type": "Direct", - "requested": "[2.1.0, )", - "resolved": "2.1.0", - "contentHash": "1jUT0PwgKO9d9F/X2n762qLp7v/30OpMtJPFRtmjPXUX2/J0lnqiGiSJNNsW3yYTj5StF0Z1yE36TrvtGpcbrg==" + "requested": "[2.3.0, )", + "resolved": "2.3.0", + "contentHash": "4vYo1zqn6pJ1YrhjuhuOSbIIm0CpM47grbpTJ5ABjOlfGt/EhMEM9ed4MRK5Jr6gVnntWDqOUzGeUJp68PZGjw==" }, "SmartAnalyzers.CSharpExtensions.Annotations": { "type": "Direct", diff --git a/src/ApiService/FunctionalTests/Auth.cs b/src/ApiService/FunctionalTests/Auth.cs index f717977d2b..28f69abe69 100644 --- a/src/ApiService/FunctionalTests/Auth.cs +++ b/src/ApiService/FunctionalTests/Auth.cs @@ -47,7 +47,7 @@ public async Task<AuthenticationResult> Auth(CancellationToken cancelationToken) _token = await _app.AcquireTokenForClient(_authConfig.Scopes).ExecuteAsync(cancelationToken); return _token; } finally { - _lockObj.Release(); + _ = _lockObj.Release(); } } diff --git a/src/ApiService/FunctionalTests/FunctionalTests.csproj b/src/ApiService/FunctionalTests/FunctionalTests.csproj index 2dfe9df83c..5b702705a3 100644 --- a/src/ApiService/FunctionalTests/FunctionalTests.csproj +++ b/src/ApiService/FunctionalTests/FunctionalTests.csproj @@ -9,7 +9,7 @@ </PropertyGroup> <ItemGroup> - <Compile Include="..\ApiService\HttpClient.cs" Link="1f-api\HttpClient.cs" /> + <ProjectReference Include="..\ApiService\ApiService.csproj" /> </ItemGroup> <ItemGroup> @@ -18,6 +18,7 @@ <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <PrivateAssets>all</PrivateAssets> </PackageReference> + <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http" Version="3.0.13" /> <PackageReference Include="Microsoft.Identity.Client" Version="4.52.0" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.2" /> <PackageReference Include="System.Net.Http" Version="4.3.4" /> @@ -34,4 +35,4 @@ </PackageReference> </ItemGroup> -</Project> \ No newline at end of file +</Project> diff --git a/src/ApiService/FunctionalTests/TestContainer.cs b/src/ApiService/FunctionalTests/TestContainer.cs index 6d132964f8..6b80698ff7 100644 --- a/src/ApiService/FunctionalTests/TestContainer.cs +++ b/src/ApiService/FunctionalTests/TestContainer.cs @@ -19,27 +19,27 @@ public TestContainer(ITestOutputHelper output) { [Fact] public async Task DownloadNonExistentContainer() { var r1 = await _downloadApi.Get(); - r1.IsOk.Should().BeFalse(); - r1.ErrorV!.Item2!.ShouldBeProvided("container").Should().BeTrue(); + _ = r1.IsOk.Should().BeFalse(); + _ = r1.ErrorV!.Item2!.ShouldBeProvided("container").Should().BeTrue(); var r2 = await _downloadApi.Get(container: Guid.NewGuid().ToString()); - r2.IsOk.Should().BeFalse(); - r2.ErrorV!.Item2!.ShouldBeProvided("filename").Should().BeTrue(); + _ = r2.IsOk.Should().BeFalse(); + _ = r2.ErrorV!.Item2!.ShouldBeProvided("filename").Should().BeTrue(); var r3 = await _downloadApi.Get(filename: Guid.NewGuid().ToString()); - r3.IsOk.Should().BeFalse(); - r3.ErrorV!.Item2!.ShouldBeProvided("container").Should().BeTrue(); + _ = r3.IsOk.Should().BeFalse(); + _ = r3.ErrorV!.Item2!.ShouldBeProvided("container").Should().BeTrue(); var r4 = await _downloadApi.Get(container: Guid.NewGuid().ToString(), filename: Guid.NewGuid().ToString()); - r4.IsOk.Should().BeFalse(); - r4.ErrorV!.Item1.Should().Be(System.Net.HttpStatusCode.NotFound); + _ = r4.IsOk.Should().BeFalse(); + _ = r4.ErrorV!.Item1.Should().Be(System.Net.HttpStatusCode.NotFound); } [Fact] public async Task CreateGetDeleteContainer() { var containerName = Guid.NewGuid().ToString(); var container = await _containerApi.Post(containerName); - container.IsOk.Should().BeTrue($"failed to create container due to {container.ErrorV}"); + _ = container.IsOk.Should().BeTrue($"failed to create container due to {container.ErrorV}"); var c = await _containerApi.Get(containerName); diff --git a/src/ApiService/FunctionalTests/TestInfo.cs b/src/ApiService/FunctionalTests/TestInfo.cs index fa3b11e815..c080553b02 100644 --- a/src/ApiService/FunctionalTests/TestInfo.cs +++ b/src/ApiService/FunctionalTests/TestInfo.cs @@ -16,8 +16,8 @@ public TestInfo(ITestOutputHelper output) { [Fact] async Task GetInfo() { var info = await _infoApi.Get(); - info.IsOk.Should().BeTrue(); - info.OkV!.Versions.ContainsKey("onefuzz").Should().BeTrue(); + _ = info.IsOk.Should().BeTrue(); + _ = info.OkV!.Versions.ContainsKey("onefuzz").Should().BeTrue(); } } } diff --git a/src/ApiService/FunctionalTests/TestNode.cs b/src/ApiService/FunctionalTests/TestNode.cs index 79308a1ab9..f8dfd9cc15 100644 --- a/src/ApiService/FunctionalTests/TestNode.cs +++ b/src/ApiService/FunctionalTests/TestNode.cs @@ -24,14 +24,14 @@ public TestNode(ITestOutputHelper output) { async Task GetNonExistentNode() { var n = await _nodeApi.Get(Guid.NewGuid()); - n.IsOk.Should().BeFalse(); - n.ErrorV!.UnableToFindNode.Should().BeTrue(); + _ = n.IsOk.Should().BeFalse(); + _ = n.ErrorV!.UnableToFindNode.Should().BeTrue(); } [Fact] async Task GetAllNodes() { var ns = await _nodeApi.Get(); - ns.IsOk.Should().BeTrue("failed to get all nodes due to {0}", ns.ErrorV); + _ = ns.IsOk.Should().BeTrue("failed to get all nodes due to {0}", ns.ErrorV); foreach (var n in ns.OkV!) { _output.WriteLine($"node machine id: {n.MachineId}, scaleset id: {n.ScalesetId}, poolName: {n.PoolName}, poolId: {n.PoolId} state: {n.State}, version: {n.Version}"); } @@ -41,8 +41,8 @@ async Task GetAllNodes() { [Fact] async Task DeleteNonExistentNode() { var n = await _nodeApi.Delete(Guid.NewGuid()); - n.IsError.Should().BeTrue(); - n.Error!.UnableToFindNode.Should().BeTrue(); + _ = n.IsError.Should().BeTrue(); + _ = n.Error!.UnableToFindNode.Should().BeTrue(); } [Fact] @@ -51,25 +51,25 @@ async Task GetPatchPostDelete() { var (pool, scaleset) = await Helpers.CreatePoolAndScaleset(_poolApi, _scalesetApi, "linux"); scaleset = await _scalesetApi.WaitWhile(scaleset.ScalesetId, sc => sc.State == "init" || sc.State == "setup"); - scaleset.Nodes!.Should().NotBeEmpty(); + _ = scaleset.Nodes!.Should().NotBeEmpty(); var nodeState = scaleset.Nodes!.First(); var nodeResult = await _nodeApi.Get(nodeState.MachineId); - nodeResult.IsOk.Should().BeTrue("failed to get node due to {0}", nodeResult.ErrorV); + _ = nodeResult.IsOk.Should().BeTrue("failed to get node due to {0}", nodeResult.ErrorV); var node = nodeResult.OkV!.First(); node = await _nodeApi.WaitWhile(node.MachineId, n => n.State == "init" || n.State == "setup"); var r = await _nodeApi.Patch(node.MachineId); - r.Result.Should().BeTrue(); + _ = r.Result.Should().BeTrue(); var rr = await _nodeApi.Update(node.MachineId, false); var d = await _nodeApi.Delete(node.MachineId); - d.Result.Should().BeTrue(); + _ = d.Result.Should().BeTrue(); var deletePool = await _poolApi.Delete(pool.Name); - deletePool.Result.Should().BeTrue(); + _ = deletePool.Result.Should().BeTrue(); } } } diff --git a/src/ApiService/FunctionalTests/TestPool.cs b/src/ApiService/FunctionalTests/TestPool.cs index 2fad583f48..28b633f6ea 100644 --- a/src/ApiService/FunctionalTests/TestPool.cs +++ b/src/ApiService/FunctionalTests/TestPool.cs @@ -21,7 +21,7 @@ public TestPool(ITestOutputHelper output) { [Fact] public async Task GetNonExistentPool() { var p = await _poolApi.Get(name: Guid.NewGuid().ToString()); - p.ErrorV!.UnableToFindPoolError.Should().BeTrue("{0}", p.ErrorV!); + _ = p.ErrorV!.UnableToFindPoolError.Should().BeTrue("{0}", p.ErrorV!); } @@ -34,7 +34,7 @@ public async Task DeleteFunctionalTestPools() { [Fact] public async Task GetPools() { var pools = await _poolApi.Get(); - pools.IsOk.Should().BeTrue(); + _ = pools.IsOk.Should().BeTrue(); if (!pools.OkV!.Any()) { _output.WriteLine("Got empty pools"); @@ -54,16 +54,16 @@ public async Task CreateAndDelete() { _output.WriteLine($"creating pool {newPoolName}"); var newPool = await _poolApi.Create(newPoolName, "linux"); - newPool.IsOk.Should().BeTrue("failed to create new pool: {0}", newPool.ErrorV); + _ = newPool.IsOk.Should().BeTrue("failed to create new pool: {0}", newPool.ErrorV); var poolsCreated = await _poolApi.Get(); - poolsCreated.IsOk.Should().BeTrue("failed to get pools: {0}", poolsCreated.ErrorV); + _ = poolsCreated.IsOk.Should().BeTrue("failed to get pools: {0}", poolsCreated.ErrorV); var newPools = poolsCreated.OkV!.Where(p => p.Name == newPoolName); - newPools.Count().Should().Be(1); + _ = newPools.Count().Should().Be(1); var deletedPoolResult = await _poolApi.Delete(newPoolName); - deletedPoolResult.Result.Should().BeTrue(); + _ = deletedPoolResult.Result.Should().BeTrue(); } } } diff --git a/src/ApiService/FunctionalTests/TestProxy.cs b/src/ApiService/FunctionalTests/TestProxy.cs index 0c0cc301dc..3e99c231e4 100644 --- a/src/ApiService/FunctionalTests/TestProxy.cs +++ b/src/ApiService/FunctionalTests/TestProxy.cs @@ -26,7 +26,7 @@ public TestProxy(ITestOutputHelper output) { public async Task GetProxies() { var allProxiesResult = await _proxyApi.Get(); - allProxiesResult.IsOk.Should().BeTrue("failed to get proxies due to {0}", allProxiesResult.ErrorV); + _ = allProxiesResult.IsOk.Should().BeTrue("failed to get proxies due to {0}", allProxiesResult.ErrorV); if (!allProxiesResult.OkV!.Any()) { _output.WriteLine("Got empty list of proxies"); @@ -42,12 +42,12 @@ public async Task CreateResetDelete() { var (newPool, newScaleset) = await Helpers.CreatePoolAndScaleset(_poolApi, _scalesetApi, "linux"); newScaleset = await _scalesetApi.WaitWhile(newScaleset.ScalesetId, sc => sc.State == "init" || sc.State == "setup"); - newScaleset.Nodes!.Should().NotBeEmpty(); + _ = newScaleset.Nodes!.Should().NotBeEmpty(); var firstNode = newScaleset.Nodes!.First(); var nodeResult = await _nodeApi.Get(machineId: firstNode.MachineId); - nodeResult.IsOk.Should().BeTrue(); + _ = nodeResult.IsOk.Should().BeTrue(); var node = nodeResult.OkV!.First(); node = await _nodeApi.WaitWhile(node.MachineId, n => n.State == "init" || n.State == "setup"); @@ -56,23 +56,23 @@ public async Task CreateResetDelete() { var proxyAgain = await _proxyApi.Create(newScaleset.ScalesetId, node.MachineId, 2223, 1); - proxy.IsOk.Should().BeTrue("failed to create proxy due to {0}", proxy.ErrorV); - proxyAgain.IsOk.Should().BeTrue("failed to create proxy with same config due to {0}", proxyAgain.ErrorV); + _ = proxy.IsOk.Should().BeTrue("failed to create proxy due to {0}", proxy.ErrorV); + _ = proxyAgain.IsOk.Should().BeTrue("failed to create proxy with same config due to {0}", proxyAgain.ErrorV); - proxy.OkV!.Should().BeEquivalentTo(proxyAgain.OkV!); + _ = proxy.OkV!.Should().BeEquivalentTo(proxyAgain.OkV!); _output.WriteLine($"created proxy dst ip: {proxy.OkV!.Forward.DstIp}, srcPort: {proxy.OkV.Forward.SrcPort} dstport: {proxy.OkV!.Forward.DstPort}, ip: {proxy.OkV!.Ip}"); var proxyReset = await _proxyApi.Reset(newScaleset.Region); - proxyReset.Result.Should().BeTrue(); + _ = proxyReset.Result.Should().BeTrue(); var deleteProxy = await _proxyApi.Delete(newScaleset.ScalesetId, node.MachineId); - deleteProxy.Result.Should().BeTrue(); + _ = deleteProxy.Result.Should().BeTrue(); _output.WriteLine($"deleted proxy"); var deletePool = await _poolApi.Delete(newPool.Name); - deletePool.Result.Should().BeTrue(); + _ = deletePool.Result.Should().BeTrue(); _output.WriteLine($"deleted pool {newPool.Name}"); } } diff --git a/src/ApiService/FunctionalTests/TestScaleset.cs b/src/ApiService/FunctionalTests/TestScaleset.cs index 08e51cf094..8e4cc339d6 100644 --- a/src/ApiService/FunctionalTests/TestScaleset.cs +++ b/src/ApiService/FunctionalTests/TestScaleset.cs @@ -21,7 +21,7 @@ public TestScaleset(ITestOutputHelper output) { [Fact] public async Task GetScalesets() { var scalesets = await _scalesetApi.Get(); - scalesets.IsOk.Should().BeTrue("failed to get scalesets due to {0}", scalesets.ErrorV); + _ = scalesets.IsOk.Should().BeTrue("failed to get scalesets due to {0}", scalesets.ErrorV); if (!scalesets.OkV!.Any()) { _output.WriteLine("Got empty scalesets"); } else { @@ -44,16 +44,16 @@ private async Task CreateAndDelete(string os) { _output.WriteLine($"New scale set info id: {newScaleset.ScalesetId}, pool: {newScaleset.PoolName}, state: {newScaleset.State}, error: {newScaleset.Error}"); var scalesetsCreated = await _scalesetApi.Get(); - scalesetsCreated.IsOk.Should().BeTrue("failed to get scalesets: {0}", scalesetsCreated.ErrorV); + _ = scalesetsCreated.IsOk.Should().BeTrue("failed to get scalesets: {0}", scalesetsCreated.ErrorV); var poolsCreated = await _poolApi.Get(); - poolsCreated.IsOk.Should().BeTrue("failed to get pools: {0}", poolsCreated.ErrorV); + _ = poolsCreated.IsOk.Should().BeTrue("failed to get pools: {0}", poolsCreated.ErrorV); var newPools = poolsCreated.OkV!.Where(p => p.Name == newPool.Name); var newScalesets = scalesetsCreated.OkV!.Where(sc => sc.ScalesetId == newScaleset.ScalesetId); - newPools.Count().Should().Be(1); - newScalesets.Count().Should().Be(1); + _ = newPools.Count().Should().Be(1); + _ = newScalesets.Count().Should().Be(1); Console.WriteLine($"Waiting for scaleset to move out from Init State"); newScaleset = await _scalesetApi.WaitWhile(newScaleset.ScalesetId, sc => sc.State == "init" || sc.State == "setup"); @@ -67,8 +67,8 @@ private async Task CreateAndDelete(string os) { } var patch0 = await _scalesetApi.Patch(newScaleset.ScalesetId, 0); - patch0.IsOk.Should().BeFalse(); - patch0.ErrorV!.IsWrongSizeError.Should().BeTrue(); + _ = patch0.IsOk.Should().BeFalse(); + _ = patch0.ErrorV!.IsWrongSizeError.Should().BeTrue(); // https://github.com/microsoft/onefuzz/issues/2311 //var patch1 = await _scalesetApi.Patch(newScaleset.ScalesetId, 1); //Assert.True(patch1.IsOk, $"scaleset patch failed due to: {patch1}"); @@ -89,9 +89,9 @@ private async Task CreateAndDelete(string os) { var preDeleteScalesets = await _scalesetApi.Get(); var deletedPoolResult = await _poolApi.Delete(newPool.Name); - preDeleteScalesets.IsOk.Should().BeTrue("failed to get pre-deleted scalesets due to: {0}", preDeleteScalesets.ErrorV); + _ = preDeleteScalesets.IsOk.Should().BeTrue("failed to get pre-deleted scalesets due to: {0}", preDeleteScalesets.ErrorV); var preDelete = preDeleteScalesets.OkV!.Where(sc => sc.PoolName == newPool.Name); - preDelete.Count().Should().Be(3); + _ = preDelete.Count().Should().Be(3); Result<IEnumerable<Pool>, Error> deletedPool; do { @@ -100,17 +100,17 @@ private async Task CreateAndDelete(string os) { } while (deletedPool.IsOk); - deletedPool.ErrorV!.UnableToFindPoolError.Should().BeTrue(); + _ = deletedPool.ErrorV!.UnableToFindPoolError.Should().BeTrue(); var postDeleteScalesets = await _scalesetApi.Get(); - postDeleteScalesets.IsOk.Should().BeTrue("failed to get scalesets after finishing pool deletion due to {0}", postDeleteScalesets.ErrorV); + _ = postDeleteScalesets.IsOk.Should().BeTrue("failed to get scalesets after finishing pool deletion due to {0}", postDeleteScalesets.ErrorV); _output.WriteLine($"Pool is deleted {newPool.Name}"); var postDelete = postDeleteScalesets.OkV!.Where(sc => sc.PoolName == newPool.Name); - postDelete.Should().BeEmpty(); + _ = postDelete.Should().BeEmpty(); var patch1 = await _scalesetApi.Patch(newScaleset.ScalesetId, 1); - patch1.IsOk.Should().BeFalse(); - patch1.ErrorV!.UnableToFindScalesetError.Should().BeTrue(); + _ = patch1.IsOk.Should().BeFalse(); + _ = patch1.ErrorV!.UnableToFindScalesetError.Should().BeTrue(); } return; diff --git a/src/ApiService/FunctionalTests/TestTasks.cs b/src/ApiService/FunctionalTests/TestTasks.cs index a0ea1ff747..14b7387173 100644 --- a/src/ApiService/FunctionalTests/TestTasks.cs +++ b/src/ApiService/FunctionalTests/TestTasks.cs @@ -18,13 +18,13 @@ public TestTasks(ITestOutputHelper output) { [Fact] public async Task GetNonExistentTask() { var t1 = await _taskApi.Get(Guid.NewGuid()); - t1.IsOk.Should().BeTrue(); - t1.OkV.Should().BeEmpty(); + _ = t1.IsOk.Should().BeTrue(); + _ = t1.OkV.Should().BeEmpty(); var t2 = await _taskApi.Get(Guid.NewGuid(), Guid.NewGuid()); - t2.IsOk.Should().BeFalse(); - t2.ErrorV!.UnableToFindTask.Should().BeTrue(); + _ = t2.IsOk.Should().BeFalse(); + _ = t2.ErrorV!.UnableToFindTask.Should().BeTrue(); } diff --git a/src/ApiService/FunctionalTests/TestVersionCheckMiddleware.cs b/src/ApiService/FunctionalTests/TestVersionCheckMiddleware.cs new file mode 100644 index 0000000000..12cc6f1a42 --- /dev/null +++ b/src/ApiService/FunctionalTests/TestVersionCheckMiddleware.cs @@ -0,0 +1,165 @@ +using Azure.Core; +using Microsoft.ApplicationInsights.DataContracts; +using Microsoft.Azure.Functions.Worker.Http; +using Microsoft.Extensions.Logging.Abstractions; +using Microsoft.OneFuzz.Service; +using Semver; +using Xunit; + +namespace FunctionalTests; + +[Trait("Category", "Live")] +public class TestVersionCheckMiddleware { + private sealed class MockServiceConfiguration : IServiceConfig { + public LogDestination[] LogDestinations => throw new NotImplementedException(); + + public SeverityLevel LogSeverityLevel => throw new NotImplementedException(); + + public string? ApplicationInsightsAppId => throw new NotImplementedException(); + + public string? ApplicationInsightsInstrumentationKey => throw new NotImplementedException(); + + public string? AppConfigurationEndpoint => throw new NotImplementedException(); + + public string? AppConfigurationConnectionString => throw new NotImplementedException(); + + public string? CliAppId => throw new NotImplementedException(); + + public string? Authority => throw new NotImplementedException(); + + public string? TenantDomain => throw new NotImplementedException(); + + public string? MultiTenantDomain => throw new NotImplementedException(); + + public ResourceIdentifier OneFuzzResourceGroup => throw new NotImplementedException(); + + public ResourceIdentifier OneFuzzDataStorage => throw new NotImplementedException(); + + public ResourceIdentifier OneFuzzFuncStorage => throw new NotImplementedException(); + + public Uri OneFuzzInstance => throw new NotImplementedException(); + + public string OneFuzzInstanceName => throw new NotImplementedException(); + + public Uri? OneFuzzEndpoint => throw new NotImplementedException(); + + public string OneFuzzKeyvault => throw new NotImplementedException(); + + public string? OneFuzzMonitor => throw new NotImplementedException(); + + public string? OneFuzzOwner => throw new NotImplementedException(); + + public string? OneFuzzTelemetry => throw new NotImplementedException(); + + public string OneFuzzVersion { get; } = "1.0.0"; + + public string? OneFuzzAllowOutdatedAgent => throw new NotImplementedException(); + + public string OneFuzzStoragePrefix => throw new NotImplementedException(); + } + private static Program.VersionCheckingMiddleware GetMiddleware() { + return new Program.VersionCheckingMiddleware( + new MockServiceConfiguration(), + new RequestHandling(NullLogger.Instance) + ); + } + + private static HttpHeadersCollection GetHeaders(string? cliVersion = null, string? strictVersionCheck = null) { + var headers = new HttpHeadersCollection(); + if (cliVersion != null) { + headers.Add("cli-version", cliVersion); + } + if (strictVersionCheck != null) { + headers.Add("strict-version", strictVersionCheck); + } + return headers; + } + + [Fact] + public void VersionCheck_NoHeaders_ReturnsOk() { + var middleware = GetMiddleware(); + var headers = GetHeaders(); + + var result = middleware.CheckCliVersion(headers); + + Assert.True(result.IsOk); + } + + [Theory] + [InlineData("1.0.0")] + [InlineData("0.0.1")] + [InlineData("BadVersionFormat")] + public void VersionCheck_JustCliVersion_ReturnsOk(string cliVersion) { + var middleware = GetMiddleware(); + var headers = GetHeaders(cliVersion); + + var result = middleware.CheckCliVersion(headers); + + Assert.True(result.IsOk); + } + + [Fact] + public void VersionCheck_JustStrictVersionTrue_ReturnsInvalidRequest() { + var middleware = GetMiddleware(); + var headers = GetHeaders(null, "True"); + + var result = middleware.CheckCliVersion(headers); + + Assert.False(result.IsOk); + Assert.Equal(ErrorCode.INVALID_REQUEST, result.ErrorV.Code); + Assert.Contains("is set to true without a corresponding", result.ErrorV.Errors?.First()); + } + + [Theory] + [InlineData("False")] + [InlineData("Something else")] + public void VersionCheck_JustStrictVersionNotTrue_ReturnsOk(string strictVersion) { + var middleware = GetMiddleware(); + var headers = GetHeaders(null, strictVersion); + + var result = middleware.CheckCliVersion(headers); + + Assert.True(result.IsOk); + } + + [Theory] + [InlineData("1.0.0", "False")] + [InlineData("0.0.1", "Something else")] + [InlineData("BadVersionFormat", "Not true")] + public void VersionCheck_StrictVersionNotTrue_ReturnsOk(string cliVersion, string strictVersion) { + var middleware = GetMiddleware(); + var headers = GetHeaders(cliVersion, strictVersion); + + var result = middleware.CheckCliVersion(headers); + + Assert.True(result.IsOk); + } + + [Theory] + [InlineData("1.0.0")] + [InlineData("1.0.0+90b616cc9c742ee3dd085802e713a6fd0054e624")] + [InlineData("1.1.0+meta")] + public void VersionCheck_ValidVersion_ReturnsOk(string cliVersion) { + var middleware = GetMiddleware(); + var headers = GetHeaders(cliVersion, "True"); + + var result = middleware.CheckCliVersion(headers); + + Assert.True(result.IsOk, result.ErrorV?.Errors?.FirstOrDefault()); + } + + [Theory] + [InlineData("0.9.1", ErrorCode.INVALID_CLI_VERSION, "cli is out of date")] + [InlineData("1.0.0-pre.release", ErrorCode.INVALID_CLI_VERSION, "cli is out of date")] + [InlineData("Bad Format", ErrorCode.INVALID_CLI_VERSION, "not a valid sematic version")] + public void VersionCheck_InvalidVersion_ReturnsInvalidRequest(string cliVersion, ErrorCode expectedCode, string expectedMessage) { + var middleware = GetMiddleware(); + var headers = GetHeaders(cliVersion, "True"); + + var result = middleware.CheckCliVersion(headers); + + Assert.False(result.IsOk); + Assert.Equal(expectedCode, result.ErrorV.Code); + Assert.Contains(expectedMessage, result.ErrorV.Errors?.First()); + } +} diff --git a/src/ApiService/FunctionalTests/packages.lock.json b/src/ApiService/FunctionalTests/packages.lock.json index 6a3e72e238..d138ad07cb 100644 --- a/src/ApiService/FunctionalTests/packages.lock.json +++ b/src/ApiService/FunctionalTests/packages.lock.json @@ -23,6 +23,15 @@ "resolved": "0.21.0", "contentHash": "5CprzHStF627DqPytBnjRMXT2dvmXrP4XwVK4+jRllU5JH8SC6tytyyuOOd06tzjDPHU8YbDZ7/JtgJSiMb8RA==" }, + "Microsoft.Azure.Functions.Worker.Extensions.Http": { + "type": "Direct", + "requested": "[3.0.13, )", + "resolved": "3.0.13", + "contentHash": "GX41psGbjLSPKuFnBcGGB7PAAdhfLsgxvGVsyGq/jQwgGwjAVRRx2UbSl35+imKwCPZdT5vGjq6YV1rgXIeEvA==", + "dependencies": { + "Microsoft.Azure.Functions.Worker.Extensions.Abstractions": "1.0.0" + } + }, "Microsoft.Identity.Client": { "type": "Direct", "requested": "[4.52.0, )", @@ -111,25 +120,983 @@ "resolved": "2.5.0", "contentHash": "+Gp9vuC2431yPyKB15YrOTxCuEAErBQUTIs6CquumX1F073UaPHGW0VE/XVJLMh9W4sXdz3TBkcHdFWZrRn2Hw==" }, + "Azure.Core": { + "type": "Transitive", + "resolved": "1.32.0", + "contentHash": "NmnJxaNqKjPwnHXngVg63SrkwbJXrkT0mcK8uCx9rSq0nK6Q3Q+/GZRCaTWcdcECoRP5XK0lr3Ce8PZkHkuHNg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.1", + "System.Diagnostics.DiagnosticSource": "4.6.0", + "System.Memory.Data": "1.0.2", + "System.Numerics.Vectors": "4.5.0", + "System.Text.Encodings.Web": "4.7.2", + "System.Text.Json": "4.7.2", + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "Azure.Data.AppConfiguration": { + "type": "Transitive", + "resolved": "1.2.0", + "contentHash": "KA1dAM9TuDsq0CRFd+3cJTYUAzA2z9N8t9/xKdDbP9URuReq/NDFcKYr7GW2W9xzVGDtCHlD5j5am/+zLLBdSg==", + "dependencies": { + "Azure.Core": "1.20.0", + "Microsoft.Bcl.AsyncInterfaces": "1.0.0", + "System.Text.Json": "4.6.0" + } + }, + "Azure.Data.Tables": { + "type": "Transitive", + "resolved": "12.8.0", + "contentHash": "jBNOUXoANEv66mIyR+rzC7toogo48pYciH4n5xsb8nHRz6lfjX9jwsOjC8sdR1Zl75Z6MZvaZjajqVwCt3JqVw==", + "dependencies": { + "Azure.Core": "1.27.0", + "System.Text.Json": "4.7.2" + } + }, + "Azure.Identity": { + "type": "Transitive", + "resolved": "1.8.2", + "contentHash": "ywnpn9MLhNTtBG12WOxSaomx0Dwu5HK5PyhHH/CApGrd1BCrhgEwdy4Uwy5IfAznJzVJKZRyKR9cp4aa61xYvA==", + "dependencies": { + "Azure.Core": "1.25.0", + "Microsoft.Identity.Client": "4.49.1", + "Microsoft.Identity.Client.Extensions.Msal": "2.25.3", + "System.Memory": "4.5.4", + "System.Security.Cryptography.ProtectedData": "4.7.0", + "System.Text.Json": "4.7.2", + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "Azure.Messaging.EventGrid": { + "type": "Transitive", + "resolved": "4.15.0", + "contentHash": "ydVq99LruKcWiH+BJK82sfnBPZH82BM1qr49WNUXRb4nB/jlNBnam8Ay3z010bC5v1nDdLDDW+GsVTuE6SnEmQ==", + "dependencies": { + "Azure.Core": "1.31.0", + "System.Memory.Data": "1.0.2", + "System.Text.Json": "4.7.2" + } + }, + "Azure.ResourceManager": { + "type": "Transitive", + "resolved": "1.6.0", + "contentHash": "pd7DRK7UpsQagSwgkXiWl6k5v3aXTcEwLvyjAtozd/pr86bsmaWEtcA2aa+kt82wMH2L8nw1ByfRIY0hQQSIVg==", + "dependencies": { + "Azure.Core": "1.32.0", + "System.Text.Json": "4.7.2" + } + }, + "Azure.ResourceManager.Compute": { + "type": "Transitive", + "resolved": "1.0.0-beta.8", + "contentHash": "rYYjjmEdmcOa8O4UgO/bdJ/qQclNZjuHdalxRJ0AhUHCORcM1f1BbIKR9CoN83IpfuEE+X+n5XY9QZcKvfrGVA==", + "dependencies": { + "Azure.Core": "1.24.0", + "Azure.ResourceManager": "1.0.0", + "System.Text.Json": "4.7.2" + } + }, + "Azure.ResourceManager.Monitor": { + "type": "Transitive", + "resolved": "1.0.0-beta.2", + "contentHash": "yPaVtBPI3OTxAXQ+I+lxMPalrJ/YsM6rlunqFA9NIYBzRQkVFZvn013RkHY5SZUD7icKXTbanP6Nefc8vosqMg==", + "dependencies": { + "Azure.Core": "1.24.0", + "Azure.ResourceManager": "1.0.0", + "System.Text.Json": "4.7.2" + } + }, + "Azure.ResourceManager.Network": { + "type": "Transitive", + "resolved": "1.0.0", + "contentHash": "BhN2ULPSgi7vPmllXycYbGUBF/r9fI4zklGbuCBWPCNm2hJrFRQOwUy1NYy2UmLBRHtcAK7zp376n+lylsyjAg==", + "dependencies": { + "Azure.Core": "1.25.0", + "Azure.ResourceManager": "1.2.0", + "System.Text.Json": "4.7.2" + } + }, + "Azure.ResourceManager.Resources": { + "type": "Transitive", + "resolved": "1.6.0", + "contentHash": "QC1DAa8X1pQTJRC5clCWX+mfV0DJDE4hPTrgnGmBniLxLDOv9Bd143ydUliiBEYDp5u3QsQNth3O0VXIMG/b8A==", + "dependencies": { + "Azure.Core": "1.32.0", + "Azure.ResourceManager": "1.6.0", + "System.Text.Json": "4.7.2" + } + }, + "Azure.ResourceManager.Storage": { + "type": "Transitive", + "resolved": "1.0.0-beta.11", + "contentHash": "w7hOgG4yUFTRrJ65FzHeIQH8wFPczSJG12SnFiA9HrcvoceD/8CflIk5aPHzqc6moB3A1od0lwGciluovsHMbg==", + "dependencies": { + "Azure.Core": "1.25.0", + "Azure.ResourceManager": "1.2.0", + "System.Text.Json": "4.7.2" + } + }, + "Azure.Security.KeyVault.Secrets": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "GRnmQzTXDVABry1rC8PwuVOHSDCUGn4Om1ABTCzWfHdDSOwRydtQ13ucJ1Z0YtdajklNwxEL6lhHGhFCI0diAw==", + "dependencies": { + "Azure.Core": "1.23.0", + "System.Memory": "4.5.4", + "System.Text.Json": "4.7.2", + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "Azure.Storage.Blobs": { + "type": "Transitive", + "resolved": "12.13.0", + "contentHash": "h5ZxRwmS/U1NOFwd+MuHJe4To1hEPu/yeBIKS1cbAHTDc+7RBZEjPf1VFeUZsIIuHvU/AzXtcRaph9BHuPRNMQ==", + "dependencies": { + "Azure.Storage.Common": "12.12.0", + "System.Text.Json": "4.7.2" + } + }, + "Azure.Storage.Common": { + "type": "Transitive", + "resolved": "12.12.0", + "contentHash": "Ms0XsZ/D9Pcudfbqj+rWeCkhx/ITEq8isY0jkor9JFmDAEHsItFa2XrWkzP3vmJU6EsXQrk4snH63HkW/Jksvg==", + "dependencies": { + "Azure.Core": "1.25.0", + "System.IO.Hashing": "6.0.0" + } + }, + "Azure.Storage.Queues": { + "type": "Transitive", + "resolved": "12.11.0", + "contentHash": "qpe1Gs1/2t18FoZORF3TgPTaF31RJhN5DQFgZ6ay6qKak9IztaqwKG8Lv2eZ/yhRKJNrOVnaZF4iqf7a4N57BA==", + "dependencies": { + "Azure.Storage.Common": "12.12.0", + "System.Memory.Data": "1.0.2", + "System.Text.Json": "4.7.2" + } + }, + "Faithlife.Utility": { + "type": "Transitive", + "resolved": "0.12.2", + "contentHash": "JgMAGj8ekeAzKkagubXqf1UqgfHq89GyA1UQYWbkAe441uRr2Rh2rktkx5Z0LPwmD/aOqu9cxjekD2GZjP8rbw==" + }, + "Google.Protobuf": { + "type": "Transitive", + "resolved": "3.23.3", + "contentHash": "CH/9X2w7zTYyZjGCMDlfi3ZaB1HZ3BM35XUm4WADcNWQuT5QttjE2BQ+ydSROaZ1JEJ5p7gh1LKIbf9hoWrFNA==" + }, + "Grpc.Core.Api": { + "type": "Transitive", + "resolved": "2.55.0", + "contentHash": "qtJauqAZ4jAM6A2TQyenhpZWPfJBow7/HV/KiRbxJvYHo9jVtUL7SBIs3cjvBh5DXIUaNFIFfBQ3QGyv3nLKCw==", + "dependencies": { + "System.Memory": "4.5.3" + } + }, + "Grpc.Net.Client": { + "type": "Transitive", + "resolved": "2.55.0", + "contentHash": "cQyNEAIVs/5npjSHuCKCT5kQJm3AyOnUw7h7s2lXt9rSWC/bhCGPbNAtiFGNvKiQAYgIt4zV13BS983viZP9pg==", + "dependencies": { + "Grpc.Net.Common": "2.55.0", + "Microsoft.Extensions.Logging.Abstractions": "3.0.3" + } + }, + "Grpc.Net.ClientFactory": { + "type": "Transitive", + "resolved": "2.55.0", + "contentHash": "D8yiJjFxK2mwy0LqNlT8BhZ2nyKWds+Vh44tL2Ilub8evL/98Zt2m5D/xqteO87Ml8S4vyjXrWgSVEyH00mPSw==", + "dependencies": { + "Grpc.Net.Client": "2.55.0", + "Microsoft.Extensions.Http": "3.0.3" + } + }, + "Grpc.Net.Common": { + "type": "Transitive", + "resolved": "2.55.0", + "contentHash": "s1tzY9Z3jKq+mcYGSkZSTTs8Gwi9M5zfXltSDIx7XvFIdSbh+QtfWiV/4n+vP8yDvFDQASaW+6BzkGUbHEftRA==", + "dependencies": { + "Grpc.Core.Api": "2.55.0" + } + }, + "Microsoft.ApplicationInsights": { + "type": "Transitive", + "resolved": "2.21.0", + "contentHash": "btZEDWAFNo9CoYliMCriSMTX3ruRGZTtYw4mo2XyyfLlowFicYVM2Xszi5evDG95QRYV7MbbH3D2RqVwfZlJHw==", + "dependencies": { + "System.Diagnostics.DiagnosticSource": "5.0.0" + } + }, + "Microsoft.ApplicationInsights.DependencyCollector": { + "type": "Transitive", + "resolved": "2.21.0", + "contentHash": "XArm5tBEUdWs05eDKxnsUUQBduJ45DEQOMnpL7wNWxBpgxn+dbl8nObA2jzExbQhbw6P74lc/1f+RdV4iPaOgg==", + "dependencies": { + "Microsoft.ApplicationInsights": "2.21.0", + "System.Diagnostics.DiagnosticSource": "5.0.0" + } + }, + "Microsoft.ApplicationInsights.EventCounterCollector": { + "type": "Transitive", + "resolved": "2.21.0", + "contentHash": "MfF9IKxx9UhaYHVFQ1VKw0LYvBhkjZtPNUmCTYlGws0N7D2EaupmeIj/EWalqP47sQRedR9+VzARsONcwH8OCA==", + "dependencies": { + "Microsoft.ApplicationInsights": "2.21.0" + } + }, + "Microsoft.ApplicationInsights.PerfCounterCollector": { + "type": "Transitive", + "resolved": "2.21.0", + "contentHash": "RcckSVkfu+NkDie6/HyM6AVLHmTMVZrUrYnDeJdvRByOc2a+DqTM6KXMtsTHW/5+K7DT9QK5ZrZdi0YbBW8PVA==", + "dependencies": { + "Microsoft.ApplicationInsights": "2.21.0", + "Microsoft.Extensions.Caching.Memory": "1.0.0", + "System.Diagnostics.PerformanceCounter": "4.7.0" + } + }, + "Microsoft.ApplicationInsights.WindowsServer": { + "type": "Transitive", + "resolved": "2.21.0", + "contentHash": "Xbhss7dqbKyE5PENm1lRA9oxzhKEouKGMzgNqJ9xTHPZiogDwKVMK02qdbVhvaXKf9zG8RvvIpM5tnGR5o+Onw==", + "dependencies": { + "Microsoft.ApplicationInsights": "2.21.0", + "Microsoft.ApplicationInsights.DependencyCollector": "2.21.0", + "Microsoft.ApplicationInsights.PerfCounterCollector": "2.21.0", + "Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel": "2.21.0", + "System.Diagnostics.DiagnosticSource": "5.0.0" + } + }, + "Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel": { + "type": "Transitive", + "resolved": "2.21.0", + "contentHash": "7D4oq+9YyagEPx+0kNNOXdG6c7IDM/2d+637nAYKFqdWhNN0IqHZEed0DuG28waj7hBSLM9lBO+B8qQqgfE4rw==", + "dependencies": { + "Microsoft.ApplicationInsights": "2.21.0", + "System.IO.FileSystem.AccessControl": "4.7.0" + } + }, + "Microsoft.ApplicationInsights.WorkerService": { + "type": "Transitive", + "resolved": "2.21.0", + "contentHash": "Y/KcaQf+Jy92vdHTd2P8zoaW/IIUl4VkzGkvmBqi1IFQ0JXR4f6LXB73/2GMGhWMc7+QMVHeqW0QDjbLU6Fw5g==", + "dependencies": { + "Microsoft.ApplicationInsights": "2.21.0", + "Microsoft.ApplicationInsights.DependencyCollector": "2.21.0", + "Microsoft.ApplicationInsights.EventCounterCollector": "2.21.0", + "Microsoft.ApplicationInsights.PerfCounterCollector": "2.21.0", + "Microsoft.ApplicationInsights.WindowsServer": "2.21.0", + "Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel": "2.21.0", + "Microsoft.Extensions.DependencyInjection": "2.1.1", + "Microsoft.Extensions.Logging.ApplicationInsights": "2.21.0" + } + }, + "Microsoft.AspNet.WebApi.Client": { + "type": "Transitive", + "resolved": "5.2.7", + "contentHash": "/76fAHknzvFqbznS6Uj2sOyE9rJB3PltY+f53TH8dX9RiGhk02EhuFCWljSj5nnqKaTsmma8DFR50OGyQ4yJ1g==", + "dependencies": { + "Newtonsoft.Json": "10.0.1", + "Newtonsoft.Json.Bson": "1.0.1" + } + }, + "Microsoft.AspNetCore.Cryptography.Internal": { + "type": "Transitive", + "resolved": "7.0.4", + "contentHash": "DmdKVBQCY34nO9pm1CijbT+AZc8tndD1uGXLUySaznl63i+xTe4PB0Gl5hQY+XMdEpjGN1ShER1ULYuAnOl6Fw==" + }, + "Microsoft.AspNetCore.DataProtection": { + "type": "Transitive", + "resolved": "7.0.4", + "contentHash": "Al30Iak4d469xpa90w0otzv7zj893K0+YbZe/ot4hnah82MSaHkaVw5rPi5csPlQKsc6Iwznw/bH56tI1u61zg==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.Internal": "7.0.4", + "Microsoft.AspNetCore.DataProtection.Abstractions": "7.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.1", + "System.Security.Cryptography.Xml": "7.0.1" + } + }, + "Microsoft.AspNetCore.DataProtection.Abstractions": { + "type": "Transitive", + "resolved": "7.0.4", + "contentHash": "LrTtzEkC28PBGDpohPtMOf26a8Sg5yvQyEtlG7z2YB93qloK2u8sqG6BDzj0rBiz/mpyVlkc8Nj36IJCvqWtPg==" + }, + "Microsoft.Azure.AppConfiguration.Functions.Worker": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "cwj73rhjH27VOg5pGB7mlTkX6do96u733T8m8int62RuxcQRKQVTuzh91hpQYFsf9IFAgS/RAwdO7fTAPJ7vOA==", + "dependencies": { + "Microsoft.Azure.Functions.Worker": "1.6.0", + "Microsoft.Extensions.Configuration.AzureAppConfiguration": "6.0.0" + } + }, + "Microsoft.Azure.Functions.Extensions": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "zYKtQQoS1fdzufxFApuMFiFtoi9QAGH6McXxntpylwLKgKjmCMWdgUd1dcekzTKNR9DPSDPRLiulvukqXnpWrQ==", + "dependencies": { + "Microsoft.Azure.WebJobs": "3.0.18", + "Microsoft.Extensions.DependencyInjection": "2.1.0" + } + }, + "Microsoft.Azure.Functions.Worker": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "TN7OwMjHbsEX0xejRbuA/qkz0uLCoXyuhr/XoZIAcOEbj9vzRPjXD5VuTgwhFffUygkDIkLnnaGzP4peGOThAA==", + "dependencies": { + "Azure.Core": "1.10.0", + "Microsoft.Azure.Functions.Worker.Core": "1.14.0", + "Microsoft.Azure.Functions.Worker.Grpc": "1.13.0", + "Microsoft.Extensions.Hosting": "5.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "5.0.0" + } + }, + "Microsoft.Azure.Functions.Worker.ApplicationInsights": { + "type": "Transitive", + "resolved": "1.0.0-preview4", + "contentHash": "oX3LX4gOQr8kLoWVbNrXJFldDs3m0YKW2CKu7Nt96BMBThmSx8PdGTwfNX42tDmZ71G6dghoilhXH1oZGiUJfw==", + "dependencies": { + "Microsoft.ApplicationInsights.WorkerService": "2.21.0", + "Microsoft.Azure.Functions.Worker.Core": "1.11.0", + "Microsoft.Bcl.AsyncInterfaces": "5.0.0" + } + }, + "Microsoft.Azure.Functions.Worker.Core": { + "type": "Transitive", + "resolved": "1.14.0", + "contentHash": "9vqbGwRb7mmsplbCFWH4Yf8oco4fkypAZnNU4h3ZZSL4y1Vna/XJ2J9TwCEWc4M6nkillvQkD6zq9hhHSnLtRQ==", + "dependencies": { + "Azure.Core": "1.10.0", + "Microsoft.Extensions.Hosting": "5.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "5.0.0", + "System.Collections.Immutable": "5.0.0", + "System.Diagnostics.DiagnosticSource": "7.0.0" + } + }, + "Microsoft.Azure.Functions.Worker.Extensions.Abstractions": { + "type": "Transitive", + "resolved": "1.3.0", + "contentHash": "+6+/Yb/ouWUweaSQhesbbiIVSmwYEzkSfjIHrBnNqIiCYnx2iLeoYyWjN/wHP3Fnn5COtyDXRDwHKr5A/tCL9Q==" + }, + "Microsoft.Azure.Functions.Worker.Extensions.EventGrid": { + "type": "Transitive", + "resolved": "2.1.0", + "contentHash": "8Kjhxaj2gK2Bi5K5jiNAG/e9tTlRItFNCINj+kfUDMBbf5lsiZUBChyAQCxrnITeHKkwAtgXB7GBX4W1Xcoc0A==", + "dependencies": { + "Microsoft.Azure.Functions.Worker.Extensions.Abstractions": "1.0.0" + } + }, + "Microsoft.Azure.Functions.Worker.Extensions.SignalRService": { + "type": "Transitive", + "resolved": "1.7.0", + "contentHash": "mgk7ZnrXLPCI70cYgqxi+TJMJJgRMPYzZwIFMpxP2cto3D6XSxbF8eGj46T4DwopBBqWpfJ4Y2QFB93hNb4Yxg==", + "dependencies": { + "Microsoft.Azure.Functions.Worker.Extensions.Abstractions": "1.1.0", + "Microsoft.Extensions.Primitives": "5.0.1", + "System.Text.Json": "5.0.2" + } + }, + "Microsoft.Azure.Functions.Worker.Extensions.Storage": { + "type": "Transitive", + "resolved": "5.0.1", + "contentHash": "jz2cF1BfkIrWzOUr73vPKtgTi6jnwv0hkKPcOYTO9fUbgc7Jehfo5Rny+W/f01yEIAF6j5oouqa4Bn+XsAFa6Q==", + "dependencies": { + "Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs": "5.0.1", + "Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues": "5.0.0" + } + }, + "Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs": { + "type": "Transitive", + "resolved": "5.0.1", + "contentHash": "b8+cj8YWiEGKMHyQvt3+Ynf3u8zy99uIHzOmUX8FAl+OVRfAe9k8uexih0uXXA+ZR6y+zOT8SarrVRQMxhnKtg==", + "dependencies": { + "Microsoft.Azure.Functions.Worker.Extensions.Abstractions": "1.1.0" + } + }, + "Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "cF95kiiU6PD9sptrV3GKQKzRv2DYATYNTpOtvUtbAYQ4xPFKgF4ke3fDBcu+cu2O1/C8FQ7MhzkEQv00bx552A==", + "dependencies": { + "Microsoft.Azure.Functions.Worker.Extensions.Abstractions": "1.1.0" + } + }, + "Microsoft.Azure.Functions.Worker.Extensions.Timer": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "8HvZaChaw40EKBfBew0XG132YhO6bEw0nznvey7gkhm9thUe6wkA2LXTXHXxcYefbx0rlh57WedSiJgKTG7MvQ==", + "dependencies": { + "Microsoft.Azure.Functions.Worker.Extensions.Abstractions": "1.0.0" + } + }, + "Microsoft.Azure.Functions.Worker.Grpc": { + "type": "Transitive", + "resolved": "1.13.0", + "contentHash": "ZSd916dFjEqFUJ1Rfe/T5t3MHCnPXt/cefJ2YdN3zjufMp2ImD7KBnoROTOJ0NniNMd8Ais/MX1kFGpULfPpWg==", + "dependencies": { + "Azure.Core": "1.10.0", + "Google.Protobuf": "3.23.3", + "Grpc.Net.Client": "2.55.0", + "Grpc.Net.ClientFactory": "2.55.0", + "Microsoft.Azure.Functions.Worker.Core": "1.14.0", + "Microsoft.Azure.Functions.Worker.Extensions.Abstractions": "1.3.0", + "Microsoft.Extensions.Hosting": "5.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "5.0.0" + } + }, + "Microsoft.Azure.Functions.Worker.Sdk": { + "type": "Transitive", + "resolved": "1.10.0", + "contentHash": "U5N4c87aUvwfhjkox6A97MxM/PfXn3MctegV3VnaMPlVva/gnVMna4e3p2oGaOp/XDvJ1UmnPTcgj50yaKiZpg==", + "dependencies": { + "Microsoft.Azure.Functions.Worker.Sdk.Analyzers": "1.1.2", + "Microsoft.Azure.Functions.Worker.Sdk.Generators": "1.1.0-preview2" + } + }, + "Microsoft.Azure.Functions.Worker.Sdk.Analyzers": { + "type": "Transitive", + "resolved": "1.1.2", + "contentHash": "e/7MOc5Tf40eiJgOBkg3O2LVtZZlqbh07Mldf/QKtNJ3JkFHHZNq8sMy5M/Ji6JOCOemSNpOwVtfSue7rJTp6Q==" + }, + "Microsoft.Azure.Functions.Worker.Sdk.Generators": { + "type": "Transitive", + "resolved": "1.1.0-preview2", + "contentHash": "9mbUbe5AYkj8bvx2GNl4H1CzMS01nAhE/uCsjeSvQFEJs5mREQk6FafSbpVOXAaQ7JMgEZ3aGUfmwdCI94NoOw==" + }, + "Microsoft.Azure.Management.Monitor": { + "type": "Transitive", + "resolved": "0.28.0-preview", + "contentHash": "XgWDDtop/1/uvO76GJ5vyjwvhkvnsLPgouqf7i9EU2QavWP8AL+Vu/aEL2wgPkGml6an+JSrrCKtI8eFjPCyGA==", + "dependencies": { + "Microsoft.Rest.ClientRuntime": "[2.3.20, 3.0.0)", + "Microsoft.Rest.ClientRuntime.Azure": "[3.3.19, 4.0.0)", + "Newtonsoft.Json": "10.0.3", + "System.Net.Http": "4.3.0" + } + }, + "Microsoft.Azure.Management.OperationalInsights": { + "type": "Transitive", + "resolved": "0.24.0-preview", + "contentHash": "wPDI5PLv/whYHPArcmDOaemdhNBEgDfCUZbJcmuXy7TjNujp4ibwyCpbnyA6uwoeyhmsW/1tp9LnTQ5WnT4HuQ==", + "dependencies": { + "Microsoft.Rest.ClientRuntime": "[2.3.20, 3.0.0)", + "Microsoft.Rest.ClientRuntime.Azure": "[3.3.19, 4.0.0)", + "Newtonsoft.Json": "10.0.3", + "System.Net.Http": "4.3.0" + } + }, + "Microsoft.Azure.WebJobs": { + "type": "Transitive", + "resolved": "3.0.18", + "contentHash": "aYJ76yjPkIpsafqFp1Xz1sA06RvhUwqJnk4AqX4I0teuRjPyig9Sv7LTzxUMAppKXc4JyR/Asos2At/LMiblqg==", + "dependencies": { + "Microsoft.Azure.WebJobs.Core": "3.0.18", + "Microsoft.Extensions.Configuration": "2.1.0", + "Microsoft.Extensions.Configuration.Abstractions": "2.1.0", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "2.1.0", + "Microsoft.Extensions.Configuration.Json": "2.1.0", + "Microsoft.Extensions.Hosting": "2.1.0", + "Microsoft.Extensions.Logging": "2.1.0", + "Microsoft.Extensions.Logging.Abstractions": "2.1.0", + "Microsoft.Extensions.Logging.Configuration": "2.1.0", + "Newtonsoft.Json": "11.0.2", + "System.Threading.Tasks.Dataflow": "4.8.0" + } + }, + "Microsoft.Azure.WebJobs.Core": { + "type": "Transitive", + "resolved": "3.0.18", + "contentHash": "ajYI8pPzPn4qq7FL8C2tz9WmFEG5PorUlkw8W9CF5M+5egnFJaF7yH48WYC+zBoQIzv2vHmFq0zhQpnv+O8v5Q==", + "dependencies": { + "System.ComponentModel.Annotations": "4.4.0", + "System.Diagnostics.TraceSource": "4.3.0" + } + }, + "Microsoft.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==" + }, "Microsoft.CodeCoverage": { "type": "Transitive", "resolved": "17.6.2", "contentHash": "t+DjPlq7GIxIkOK/jiTmNeiEMVkfVCynBEZyV+IMg2ro43NugKExng+7a04R1fBLi+d6voxjeDxL2ozdl+XyVg==" }, - "Microsoft.IdentityModel.Abstractions": { + "Microsoft.CSharp": { + "type": "Transitive", + "resolved": "4.5.0", + "contentHash": "kaj6Wb4qoMuH3HySFJhxwQfe8R/sJsNJnANrvv8WdFPMoNbKY5htfNscv+LHCu5ipz+49m2e+WQXpLXr9XYemQ==" + }, + "Microsoft.Extensions.Caching.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "IeimUd0TNbhB4ded3AbgBLQv2SnsiVugDyGV1MvspQFVlA07nDC7Zul7kcwH5jWN3JiTcp/ySE83AIJo8yfKjg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "xpidBs2KCE2gw1JrD0quHE72kvCaI3xFql5/Peb2GRtUuZX+dYPoK/NTdVMiM67Svym0M0Df9A3xyU0FbMQhHw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "LN322qEKHjuVEhhXueTUe7RNePooZmS8aGid5aK2woX3NPjSnONFyKUc6+JknOS6ce6h2tCLfKPTBXE3mN/6Ag==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "5.0.0", + "Microsoft.Extensions.Primitives": "5.0.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "f34u2eaqIjNO9YLHBz8rozVZ+TcFiFs0F3r7nUJd7FRkVSxk8u4OpoK226mi49MwexHOR2ibP9MFvRUaLilcQQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Configuration.AzureAppConfiguration": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "oRCr8qqBp/37CXttfgbEWnPznHy0/ZCkgNVFFQ5cnXGvG8TBWicnAK032opyrbGIH3n2jYSg/PvIw7aLoOTy3Q==", + "dependencies": { + "Azure.Data.AppConfiguration": "1.2.0", + "Azure.Messaging.EventGrid": "4.7.0", + "Azure.Security.KeyVault.Secrets": "4.3.0", + "Microsoft.Extensions.Configuration": "3.1.18", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.18", + "Microsoft.Extensions.Logging": "3.1.18", + "System.Text.Json": "4.7.2" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "Of1Irt1+NzWO+yEYkuDh5TpT4On7LKl98Q9iLqCdOZps6XXEWDj3AKtmyvzJPVXZe4apmkJJIiDL7rR1yC+hjQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "5.0.0" + } + }, + "Microsoft.Extensions.Configuration.CommandLine": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "OelM+VQdhZ0XMXsEQBq/bt3kFzD+EBGqR4TAgFDRAye0JfvHAaRi+3BxCRcwqUAwDhV0U0HieljBGHlTgYseRA==", + "dependencies": { + "Microsoft.Extensions.Configuration": "5.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "5.0.0" + } + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "fqh6y6hAi0Z0fRsb4B/mP9OkKkSlifh5osa+N/YSQ+/S2a//+zYApZMUC1XeP9fdjlgZoPQoZ72Q2eLHyKLddQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "5.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "5.0.0" + } + }, + "Microsoft.Extensions.Configuration.FileExtensions": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "rRdspYKA18ViPOISwAihhCMbusHsARCOtDMwa23f+BGEdIjpKPlhs3LLjmKlxfhpGXBjIsS0JpXcChjRUN+PAw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "5.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "5.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0", + "Microsoft.Extensions.FileProviders.Physical": "5.0.0", + "Microsoft.Extensions.Primitives": "5.0.0" + } + }, + "Microsoft.Extensions.Configuration.Json": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "Pak8ymSUfdzPfBTLHxeOwcR32YDbuVfhnH2hkfOLnJNQd19ItlBdpMjIDY9C5O/nS2Sn9bzDMai0ZrvF7KyY/Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "5.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "5.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "5.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0" + } + }, + "Microsoft.Extensions.Configuration.UserSecrets": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "+tK3seG68106lN277YWQvqmfyI/89w0uTu/5Gz5VYSUu5TI4mqwsaWLlSmT9Bl1yW/i1Nr06gHJxqaqB5NU9Tw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "5.0.0", + "Microsoft.Extensions.Configuration.Json": "5.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0", + "Microsoft.Extensions.FileProviders.Physical": "5.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "elNeOmkeX3eDVG6pYVeV82p29hr+UKDaBhrZyWvWLw/EVZSYEkZlQdkp0V39k/Xehs2Qa0mvoCvkVj3eQxNQ1Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "h3j/QfmFN4S0w4C2A6X7arXij/M/OVw3uQHSOFxnND4DyAzO1F9eMX7Eti7lU/OkSthEE0WzRsfT/Dmx86jzCw==" + }, + "Microsoft.Extensions.FileProviders.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "NyawiW9ZT/liQb34k9YqBSNPLuuPkrjMgQZ24Y/xXX1RoiBkLUdPMaQTmxhZ5TYu8ZKZ9qayzil75JX95vGQUg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.FileProviders.Physical": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "1rkd8UO2qf21biwO7X0hL9uHP7vtfmdv/NLvKgCRHkdz1XnW8zVQJXyEYiN68WYpExgtVWn55QF0qBzgfh1mGg==", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "5.0.0", + "Microsoft.Extensions.Primitives": "5.0.0" + } + }, + "Microsoft.Extensions.FileSystemGlobbing": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ArliS8lGk8sWRtrWpqI8yUVYJpRruPjCDT+EIjrgkA/AAPRctlAkRISVZ334chAKktTLzD1+PK8F5IZpGedSqA==" + }, + "Microsoft.Extensions.Hosting": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "hiokSU1TOVfcqpQAnpiOzP2rE9p+niq92g5yeAnwlbSrUlIdIS6M8emCknZvhdOagQA9x5YWNwe1n0kFUwE0NQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "5.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "5.0.0", + "Microsoft.Extensions.Configuration.Binder": "5.0.0", + "Microsoft.Extensions.Configuration.CommandLine": "5.0.0", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "5.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "5.0.0", + "Microsoft.Extensions.Configuration.Json": "5.0.0", + "Microsoft.Extensions.Configuration.UserSecrets": "5.0.0", + "Microsoft.Extensions.DependencyInjection": "5.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0", + "Microsoft.Extensions.FileProviders.Physical": "5.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "5.0.0", + "Microsoft.Extensions.Logging": "5.0.0", + "Microsoft.Extensions.Logging.Abstractions": "5.0.0", + "Microsoft.Extensions.Logging.Configuration": "5.0.0", + "Microsoft.Extensions.Logging.Console": "5.0.0", + "Microsoft.Extensions.Logging.Debug": "5.0.0", + "Microsoft.Extensions.Logging.EventLog": "5.0.0", + "Microsoft.Extensions.Logging.EventSource": "5.0.0", + "Microsoft.Extensions.Options": "5.0.0" + } + }, + "Microsoft.Extensions.Hosting.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "43n9Je09z0p/7ViPxfRqs5BUItRLNVh5b6JH40F2Agkh2NBsY/jpNYTtbCcxrHCsA3oRmbR6RJBzUutB4VZvNQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0" + } + }, + "Microsoft.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.3", + "contentHash": "dcyB8szIcSynjVZRuFgqkZpPgTc5zeRSj1HMXSmNqWbHYKiPYJl8ZQgBHz6wmZNSUUNGpCs5uxUg8DZHHDC1Ew==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.0.3", + "Microsoft.Extensions.Logging": "3.0.3", + "Microsoft.Extensions.Options": "3.0.3" + } + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "Nw2muoNrOG5U5qa2ZekXwudUn2BJcD41e65zwmDHb1fQegTX66UokLWZkJRpqSSHXDOWZ5V0iqhbxOEky91atA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "7.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + }, + "Microsoft.Extensions.Logging.ApplicationInsights": { + "type": "Transitive", + "resolved": "2.21.0", + "contentHash": "tjzErt5oaLs1caaThu6AbtJuHH0oIGDG/rYCXDruHVGig3m8MyCDuwDsGQwzimY7g4aFyLOKfHc3unBN2G96gw==", + "dependencies": { + "Microsoft.ApplicationInsights": "2.21.0", + "Microsoft.Extensions.Logging": "2.1.1" + } + }, + "Microsoft.Extensions.Logging.Configuration": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "N3/d0HeMRnBekadbZlmbp+In8EvNNkQHSdbtRzjrGVckdZWpYs5GNrAfaYqVplDFW0WUedSaFJ3khB50BWYGsw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "5.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "5.0.0", + "Microsoft.Extensions.Configuration.Binder": "5.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0", + "Microsoft.Extensions.Logging": "5.0.0", + "Microsoft.Extensions.Logging.Abstractions": "5.0.0", + "Microsoft.Extensions.Options": "5.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "5.0.0" + } + }, + "Microsoft.Extensions.Logging.Console": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "jH0wbWhfvXjOVmCkbra4vbiovDtTUIWLQjCeJ7Xun3h4AHvwfzm7V7wlsXKs3tNnPrsCxZ9oaV0vUAgGY1JxOA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "5.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0", + "Microsoft.Extensions.Logging": "5.0.0", + "Microsoft.Extensions.Logging.Abstractions": "5.0.0", + "Microsoft.Extensions.Logging.Configuration": "5.0.0", + "Microsoft.Extensions.Options": "5.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "5.0.0" + } + }, + "Microsoft.Extensions.Logging.Debug": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "9dvt0xqRrClvhaPNpfyS39WxnW9G55l5lrV5ZX7IrEgwo4VwtmJKtoPiKVYKbhAuOBGUI5WY3hWLvF+PSbJp5A==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0", + "Microsoft.Extensions.Logging": "5.0.0", + "Microsoft.Extensions.Logging.Abstractions": "5.0.0" + } + }, + "Microsoft.Extensions.Logging.EventLog": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "CYzsgF2lqgahGl/HuErsIDaZZ9ueN+MBjGfO/0jVDLPaXLaywxlGKFpDgXMaB053DRYZwD1H2Lb1I60mTXS3jg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0", + "Microsoft.Extensions.Logging": "5.0.0", + "Microsoft.Extensions.Logging.Abstractions": "5.0.0", + "Microsoft.Extensions.Options": "5.0.0", + "System.Diagnostics.EventLog": "5.0.0" + } + }, + "Microsoft.Extensions.Logging.EventSource": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "hF+D6PJkrM0qXcSEGs1BwZwgP8c0BRkj26P/5wmYTcHKOp52GRey/Z/YKRmRIHIrXxj9tz/JgIjU9oWmiJ5HMw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0", + "Microsoft.Extensions.Logging": "5.0.0", + "Microsoft.Extensions.Logging.Abstractions": "5.0.0", + "Microsoft.Extensions.Options": "5.0.0", + "Microsoft.Extensions.Primitives": "5.0.0" + } + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "7.0.1", + "contentHash": "pZRDYdN1FpepOIfHU62QoBQ6zdAoTvnjxFfqAzEd9Jhb2dfhA5i6jeTdgGgcgTWFRC7oT0+3XrbQu4LjvgX1Nw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" + } + }, + "Microsoft.Extensions.Options.ConfigurationExtensions": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "280RxNJqOeQqq47aJLy5D9LN61CAWeuRA83gPToQ8B9jl9SNdQ5EXjlfvF66zQI5AXMl+C/3hGnbtIEN+X3mqA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "5.0.0", + "Microsoft.Extensions.Configuration.Binder": "5.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0", + "Microsoft.Extensions.Options": "5.0.0", + "Microsoft.Extensions.Primitives": "5.0.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "um1KU5kxcRp3CNuI8o/GrZtD4AIOXDk+RLsytjZ9QPok3ttLUelLKpilVPuaFT3TFjOhSibUAso0odbOaCDj3Q==" + }, + "Microsoft.FeatureManagement": { + "type": "Transitive", + "resolved": "2.5.1", + "contentHash": "ERbRjk0etZs4d5Pv17unfogO4iBwV2c/HoBt4jqIJmfbKbmTLV+GbjBPYzidIg2RgYIFi8yA+EoEapSAIOp19g==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "2.1.10", + "Microsoft.Extensions.Logging": "2.1.1" + } + }, + "Microsoft.Graph": { + "type": "Transitive", + "resolved": "4.37.0", + "contentHash": "XfbRLmmyJkNcNFbjC+FP+LgeFiOk2cNn7TeLh9A2T24UXCwy8Kz4rKTvfmdgYUAO8fcSe4kkGNOmfG1H6Myktg==", + "dependencies": { + "Microsoft.Graph.Core": "2.0.12" + } + }, + "Microsoft.Graph.Core": { + "type": "Transitive", + "resolved": "2.0.12", + "contentHash": "3a6vQADJMDJX0ZrU+lVYjlJxpsDAJNUmgB8vXodwrlGHkHJP7TqsQZ43MeU35XkoPfWtEj06+Hed3SLFlkoqAg==", + "dependencies": { + "Azure.Core": "1.25.0", + "Microsoft.Identity.Client": "4.46.1", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.22.0", + "System.Diagnostics.DiagnosticSource": "4.7.1", + "System.Net.Http": "4.3.4", + "System.Security.Claims": "4.3.0", + "System.Text.Json": "6.0.5" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "2.25.3", + "contentHash": "I6/Od0d3OMD9b7RPxW1l25A8oA94H+r9ZtrOe4Ogk49Ftxhs9RS+pbzPE5dLe0i7nQy+1aob7mR22YsNcc0BiQ==", + "dependencies": { + "Microsoft.Identity.Client": "4.49.1", + "System.IO.FileSystem.AccessControl": "5.0.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.Identity.Web.Diagnostics": { + "type": "Transitive", + "resolved": "2.7.0", + "contentHash": "SOY9upekrafFvrVToTXMX8hLUtvJM/OSIXTirq4/LkU6I7IlNRmZ7ULddD4D/r4mS6JoV3lWcLYAkcfnS2JGQg==" + }, + "Microsoft.Identity.Web.TokenCache": { + "type": "Transitive", + "resolved": "2.7.0", + "contentHash": "lyPG8/zAfMETuynAGX3xC3ZlSfs8BoFoJ+3aqOxl8CdGYsHkB+faSHo/m1Qi5Snq08MQ8Ld6tx6rY8h7Pf31xQ==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "7.0.4", + "Microsoft.Extensions.Caching.Memory": "7.0.0", + "Microsoft.Extensions.Logging": "7.0.0", + "Microsoft.Identity.Client": "4.51.0", + "Microsoft.Identity.Web.Diagnostics": "2.7.0", + "System.Drawing.Common": "4.7.2", + "System.Security.Cryptography.Xml": "7.0.1", + "System.Text.Encodings.Web": "7.0.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "6.29.0", + "contentHash": "qBEGruUGU5YkqV58ykpbtT5oUWzChe+xVy/siPFPzB4KydqDv6r91ElbiifIn9ncAceFtuEkIUQWav76lg7e0A==" + }, + "Microsoft.IdentityModel.JsonWebTokens": { + "type": "Transitive", + "resolved": "6.29.0", + "contentHash": "lJRNpOKsPqCSf1DRDlWUsM272DQKhfLtU7dKAVOnJBsN5z1wP5lncdY1RqC5uAMdGspsyjSLe0qs1aWl+lIGZQ==", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "6.29.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encodings.Web": "4.7.2", + "System.Text.Json": "4.7.2" + } + }, + "Microsoft.IdentityModel.Logging": { + "type": "Transitive", + "resolved": "6.29.0", + "contentHash": "71GkXXyBNnIzs2Ybgi7FamQSrieVNPo+FLKECnFQOOgfIZdJ4jz5O3kBY7wIj4l8GbD+nKZkWYvcl6/Yk5up5g==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "6.29.0" + } + }, + "Microsoft.IdentityModel.Protocols": { + "type": "Transitive", + "resolved": "6.22.0", + "contentHash": "DZ9yTL2xSk2C3i6QjOgQvNhfSnQ3ZnmOEVlmL2i4ZQHw3jigZmioE8XGv59Ba7rnk6xAl+Oo8DxlkZv4qU/4rQ==", + "dependencies": { + "Microsoft.IdentityModel.Logging": "6.22.0", + "Microsoft.IdentityModel.Tokens": "6.22.0" + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect": { + "type": "Transitive", + "resolved": "6.22.0", + "contentHash": "Ig+zgdXT5rbzhN71TkjeHd7HMWO+wq89V5KecXWgJvNrWKTp2xVerDsWqM5SUz7UU3d1m6aotq4ABKZuNn71qA==", + "dependencies": { + "Microsoft.IdentityModel.Protocols": "6.22.0", + "System.IdentityModel.Tokens.Jwt": "6.22.0" + } + }, + "Microsoft.IdentityModel.Tokens": { + "type": "Transitive", + "resolved": "6.29.0", + "contentHash": "llkQIhO3E/+7iXjGywJmBUe+kdyygsFo2RGlzFEGxPQRN7sgZDGk9pM6aJ/aFM3oQeugKWfM30wPFMgT69FXeQ==", + "dependencies": { + "Microsoft.CSharp": "4.5.0", + "Microsoft.IdentityModel.Logging": "6.29.0", + "System.Security.Cryptography.Cng": "4.5.0" + } + }, + "Microsoft.NETCore.Platforms": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==" + }, + "Microsoft.NETCore.Targets": { + "type": "Transitive", + "resolved": "1.1.3", + "contentHash": "3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ==" + }, + "Microsoft.Rest.ClientRuntime": { + "type": "Transitive", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", + "dependencies": { + "Newtonsoft.Json": "10.0.3" + } + }, + "Microsoft.Rest.ClientRuntime.Azure": { "type": "Transitive", - "resolved": "6.22.0", - "contentHash": "iI+9V+2ciCrbheeLjpmjcqCnhy+r6yCoEcid3nkoFWerHgjVuT6CPM4HODUTtUPe1uwks4wcnAujJ8u+IKogHQ==" + "resolved": "3.3.19", + "contentHash": "+NVBWvRXNwaAPTZUxjUlQggsrf3X0GbiRoxYfgc3kG9E55ZxZxvZPT3nIfC4DNqzGSXUEvmLbckdXgBBzGdUaA==", + "dependencies": { + "Microsoft.Rest.ClientRuntime": "[2.3.19, 3.0.0)", + "Newtonsoft.Json": "10.0.3" + } }, - "Microsoft.NETCore.Platforms": { + "Microsoft.TeamFoundation.DistributedTask.Common.Contracts": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "TMBuzAHpTenGbGgk0SMTwyEkyijY/Eae4ZGsFNYJvAr/LDn1ku3Etp3FPxChmDp5HHF3kzJuoaa08N0xjqAJfQ==" + "resolved": "19.219.0-preview", + "contentHash": "+LYJnc0rlPNJg2T5TgVkjPOypJxslwxbD/ALl3DM7c3UB0Ttmqx546A1VXJeab9ofxgHnaxzElNIOlmJEPY6rQ==", + "dependencies": { + "Microsoft.VisualStudio.Services.Client": "[19.219.0-preview]" + } }, - "Microsoft.NETCore.Targets": { + "Microsoft.TeamFoundationServer.Client": { "type": "Transitive", - "resolved": "1.1.3", - "contentHash": "3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ==" + "resolved": "19.219.0-preview", + "contentHash": "0Jkm+SOVEW7W9ym/C4v3P1CUJ0E50/dFXjOeRyAYwnKqxG22VliDZgpAlnQ0M7vDk2M2Tldo6mKsKWZebX9d0g==", + "dependencies": { + "Microsoft.AspNet.WebApi.Client": "5.2.7", + "Microsoft.TeamFoundation.DistributedTask.Common.Contracts": "[19.219.0-preview]", + "Microsoft.VisualStudio.Services.Client": "[19.219.0-preview]", + "Newtonsoft.Json": "13.0.2", + "System.ComponentModel.Annotations": "5.0.0" + } }, "Microsoft.TestPlatform.ObjectModel": { "type": "Transitive", @@ -149,6 +1116,22 @@ "Newtonsoft.Json": "13.0.1" } }, + "Microsoft.VisualStudio.Services.Client": { + "type": "Transitive", + "resolved": "19.219.0-preview", + "contentHash": "RGtUL3Q/qSxJZtcRZApB91W2vAGTNwaO7nzAyN86vtAzm8u/pEVlBvoEZ1wx6HF4JRvFlyWvUHN+Z6kAj6nk8w==", + "dependencies": { + "Microsoft.AspNet.WebApi.Client": "5.2.7", + "Newtonsoft.Json": "13.0.2", + "System.Configuration.ConfigurationManager": "6.0.1", + "System.Data.SqlClient": "4.8.5", + "System.Security.Cryptography.Cng": "5.0.0", + "System.Security.Cryptography.OpenSsl": "5.0.0", + "System.Security.Cryptography.ProtectedData": "6.0.0", + "System.Security.Principal.Windows": "5.0.0", + "System.Xml.XPath.XmlDocument": "4.3.0" + } + }, "Microsoft.Win32.Primitives": { "type": "Transitive", "resolved": "4.3.0", @@ -159,6 +1142,20 @@ "System.Runtime": "4.3.0" } }, + "Microsoft.Win32.Registry": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==", + "dependencies": { + "System.Security.AccessControl": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, + "Microsoft.Win32.SystemEvents": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "hqTM5628jSsQiv+HGpiq3WKBl2c8v1KZfby2J6Pr7pEPlK9waPdgEO6b8A/+/xn/yZ9ulv8HuqK71ONy2tg67A==" + }, "NETStandard.Library": { "type": "Transitive", "resolved": "1.6.1", @@ -212,14 +1209,57 @@ }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.1", - "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" + "resolved": "13.0.2", + "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + }, + "Newtonsoft.Json.Bson": { + "type": "Transitive", + "resolved": "1.0.1", + "contentHash": "5PYT/IqQ+UK31AmZiSS102R6EsTo+LGTSI8bp7WAUqDKaF4wHXD8U9u4WxTI1vc64tYi++8p3dk3WWNqPFgldw==", + "dependencies": { + "NETStandard.Library": "1.6.1", + "Newtonsoft.Json": "10.0.1" + } }, "NuGet.Frameworks": { "type": "Transitive", "resolved": "6.5.0", "contentHash": "QWINE2x3MbTODsWT1Gh71GaGb5icBz4chS8VYvTgsBnsi8esgN6wtHhydd7fvToWECYGq7T4cgBBDiKD/363fg==" }, + "Octokit": { + "type": "Transitive", + "resolved": "2.0.1", + "contentHash": "JVlfUY+sfItl6RSyVKDJTutuy28cDydUwKKfzcelwNMor2Sa18pYVKna6phO8lug1b+ep+pcuFh/FPayuImsQw==" + }, + "OpenTelemetry.Api": { + "type": "Transitive", + "resolved": "1.5.0-rc.1", + "contentHash": "KQYeO/UgV1WoaxOh9l4qV15T1FVow7Aflz1yplSgdnJPqji62hD9+hCe2tQ001iJ9l/mv1/x0xfVEZlRfwDaUA==", + "dependencies": { + "System.Diagnostics.DiagnosticSource": "7.0.0" + } + }, + "Polly": { + "type": "Transitive", + "resolved": "8.0.0-alpha.2", + "contentHash": "CrZqfioV2FG4ip7622CKk7B0Jey6fttRzVGu7Md6MVcIotQxZqR/zy8FW8dUL0B15whoCW5U0t1JBd27Pm1GXw==", + "dependencies": { + "Polly.Core": "8.0.0-alpha.2" + } + }, + "Polly.Core": { + "type": "Transitive", + "resolved": "8.0.0-alpha.2", + "contentHash": "X58/YFxm15uRJyA1Bo1ZPNSYOXmu1MD4CQD4BJr/a0qVOGPkqJOucSQVP6bcQSGgrZXLgPEGZbgSHtJx9qE0VQ==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", "resolved": "4.3.2", @@ -244,6 +1284,16 @@ "Microsoft.NETCore.Targets": "1.1.0" } }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "9kyFSIdN3T0qjDQ2R0HRXYIhS3l5psBzQi6qqhdLz+SzFyEy4sVxNOke+yyYv8Cu8rPER12c3RDjLT8wF3WBYQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, "runtime.native.System.IO.Compression": { "type": "Transitive", "resolved": "4.3.0", @@ -327,6 +1377,36 @@ "resolved": "4.3.2", "contentHash": "leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "Scriban": { + "type": "Transitive", + "resolved": "5.5.0", + "contentHash": "e6n2qpSPlOx43+y1PeEukwu5n4i0slIUIMaFSndiIydfNuVqRbqL2QLd4y+BzFWDfN349YT71N/J38CH2IYb+w==" + }, + "Semver": { + "type": "Transitive", + "resolved": "2.3.0", + "contentHash": "4vYo1zqn6pJ1YrhjuhuOSbIIm0CpM47grbpTJ5ABjOlfGt/EhMEM9ed4MRK5Jr6gVnntWDqOUzGeUJp68PZGjw==" + }, + "SmartAnalyzers.CSharpExtensions.Annotations": { + "type": "Transitive", + "resolved": "4.2.7", + "contentHash": "9fRFxTUwPmH7lukckwEvvKawMcP8ObwnOngN8kx5Bx773WHSku1EGa5BIteV07th5553il76fPX7U1xz2bFmuQ==" + }, "System.AppContext": { "type": "Transitive", "resolved": "4.3.0", @@ -374,12 +1454,23 @@ "System.Threading.Tasks": "4.3.0" } }, + "System.Collections.Immutable": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==" + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==" + }, "System.Configuration.ConfigurationManager": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "gWwQv/Ug1qWJmHCmN17nAbxJYmQBM/E94QxKLksvUiiKB1Ld3Sc/eK1lgmbSjDFxkQhVuayI/cGFZhpBSodLrg==", + "resolved": "6.0.1", + "contentHash": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==", "dependencies": { - "System.Security.Cryptography.ProtectedData": "4.4.0" + "System.Security.Cryptography.ProtectedData": "6.0.0", + "System.Security.Permissions": "6.0.0" } }, "System.Console": { @@ -394,6 +1485,16 @@ "System.Text.Encoding": "4.3.0" } }, + "System.Data.SqlClient": { + "type": "Transitive", + "resolved": "4.8.5", + "contentHash": "fRqxut4lrndPHrXD+ht1XRmCL3obuKldm4XjCRYS9p5f7FSR7shBxAwTkDrpFMsHC9BhNgjjmUtiIjvehn5zkg==", + "dependencies": { + "Microsoft.Win32.Registry": "4.7.0", + "System.Security.Principal.Windows": "4.7.0", + "runtime.native.System.Data.SqlClient.sni": "4.7.0" + } + }, "System.Diagnostics.Debug": { "type": "Transitive", "resolved": "4.3.0", @@ -406,14 +1507,28 @@ }, "System.Diagnostics.DiagnosticSource": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==", + "resolved": "8.0.0-preview.4.23259.5", + "contentHash": "p7bkTixVHLOALaNlqX+8uBMT68Fbo0yoEigLQ6ya9wNRPThGx5V14et7kf9pVQbR9gN1H2zqSPbX0y8nrXTq+g==" + }, + "System.Diagnostics.EventLog": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "FHkCwUfsTs+/5tsK+c0egLfacUgbhvcwi3wUFWSEEArSXao343mYqcpOVVFMlcCkdNtjU4YwAWaKYwal6f02og==", "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0" + "Microsoft.NETCore.Platforms": "5.0.0", + "Microsoft.Win32.Registry": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, + "System.Diagnostics.PerformanceCounter": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "kE9szT4i3TYT9bDE/BPfzg9/BL6enMiZlcUmnUEBrhRtxWvurKoa8qhXkLTRhrxMzBqaDleWlRfIPE02tulU+w==", + "dependencies": { + "Microsoft.NETCore.Platforms": "3.1.0", + "Microsoft.Win32.Registry": "4.7.0", + "System.Configuration.ConfigurationManager": "4.7.0", + "System.Security.Principal.Windows": "4.7.0" } }, "System.Diagnostics.Tools": { @@ -426,6 +1541,22 @@ "System.Runtime": "4.3.0" } }, + "System.Diagnostics.TraceSource": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "VnYp1NxGx8Ww731y2LJ1vpfb/DKVNKEZ8Jsh5SgQTZREL/YpWRArgh9pI8CDLmgHspZmLL697CaLvH85qQpRiw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "runtime.native.System": "4.3.0" + } + }, "System.Diagnostics.Tracing": { "type": "Transitive", "resolved": "4.3.0", @@ -436,6 +1567,14 @@ "System.Runtime": "4.3.0" } }, + "System.Drawing.Common": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "NfuoKUiP2nUWwKZN6twGqXioIe1zVD0RIj2t976A+czLHr2nY454RwwXs6JU9Htc6mwqL6Dn/nEL3dpVf2jOhg==", + "dependencies": { + "Microsoft.Win32.SystemEvents": "6.0.0" + } + }, "System.Formats.Asn1": { "type": "Transitive", "resolved": "7.0.0", @@ -475,6 +1614,15 @@ "System.Runtime.InteropServices": "4.3.0" } }, + "System.IdentityModel.Tokens.Jwt": { + "type": "Transitive", + "resolved": "6.29.0", + "contentHash": "2WwptlYJQffT6z7V0WVoChznOBjacAIByLSoXp5fZ8kK33heAAqn/aX50xB+cQNfKFYRGVbqiVrzz+m80Q2zcA==", + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "6.29.0", + "Microsoft.IdentityModel.Tokens": "6.29.0" + } + }, "System.IO": { "type": "Transitive", "resolved": "4.3.0", @@ -540,6 +1688,15 @@ "System.Threading.Tasks": "4.3.0" } }, + "System.IO.FileSystem.AccessControl": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==", + "dependencies": { + "System.Security.AccessControl": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, "System.IO.FileSystem.Primitives": { "type": "Transitive", "resolved": "4.3.0", @@ -548,6 +1705,11 @@ "System.Runtime": "4.3.0" } }, + "System.IO.Hashing": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "Rfm2jYCaUeGysFEZjDe7j1R4x6Z6BzumS/vUT5a1AA/AWJuGX71PoGB0RmpyX3VmrGqVnAwtfMn39OHR8Y/5+g==" + }, "System.Linq": { "type": "Transitive", "resolved": "4.3.0", @@ -560,6 +1722,14 @@ "System.Runtime.Extensions": "4.3.0" } }, + "System.Linq.Async": { + "type": "Transitive", + "resolved": "6.0.1", + "contentHash": "0YhHcaroWpQ9UCot3Pizah7ryAzQhNvobLMSxeDIGmnXfkQn8u5owvpOH0K6EVB+z9L7u6Cc4W17Br/+jyttEQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "6.0.0" + } + }, "System.Linq.Expressions": { "type": "Transitive", "resolved": "4.3.0", @@ -584,6 +1754,20 @@ "System.Threading": "4.3.0" } }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==" + }, + "System.Memory.Data": { + "type": "Transitive", + "resolved": "1.0.2", + "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", + "dependencies": { + "System.Text.Encodings.Web": "4.7.2", + "System.Text.Json": "4.6.0" + } + }, "System.Net.Primitives": { "type": "Transitive", "resolved": "4.3.0", @@ -608,6 +1792,11 @@ "System.Threading.Tasks": "4.3.0" } }, + "System.Numerics.Vectors": { + "type": "Transitive", + "resolved": "4.5.0", + "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" + }, "System.ObjectModel": { "type": "Transitive", "resolved": "4.3.0", @@ -721,6 +1910,11 @@ "Microsoft.NETCore.Targets": "1.1.3" } }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" + }, "System.Runtime.Extensions": { "type": "Transitive", "resolved": "4.3.0", @@ -779,6 +1973,25 @@ "System.Runtime.Extensions": "4.3.0" } }, + "System.Security.AccessControl": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "AUADIc0LIEQe7MzC+I0cl0rAT8RrTAKFHl53yHjEUzNVIaUlhFY11vc2ebiVJzVBuOzun6F7FBA+8KAbGTTedQ==" + }, + "System.Security.Claims": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "P/+BR/2lnc4PNDHt/TPBAWHVMLMRHsyYZbU1NphW4HIWzCggz8mJbTQQ3MKljFE7LS3WagmVFuBgoLcFzYXlkA==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Security.Principal": "4.3.0" + } + }, "System.Security.Cryptography.Algorithms": { "type": "Transitive", "resolved": "4.3.0", @@ -802,20 +2015,10 @@ }, "System.Security.Cryptography.Cng": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==", + "resolved": "5.0.0", + "contentHash": "jIMXsKn94T9JY7PvPq/tMfqa6GAaHpElRDpmG+SuL+D3+sTw2M8VhnibKnN8Tq+4JqbPJ/f+BwtLeDMEnzAvRg==", "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0" + "System.Formats.Asn1": "5.0.0" } }, "System.Security.Cryptography.Csp": { @@ -859,22 +2062,10 @@ }, "System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", + "resolved": "5.0.0", + "contentHash": "D3aDrPOPBORUl6V/WJ2AtN3Ae48aSH0W7yChBIecvu1lyoAhopPORmMpNTjv5/Kay7Z+h3KXpfbvteIm7x7miA==", "dependencies": { - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + "System.Formats.Asn1": "5.0.0" } }, "System.Security.Cryptography.Primitives": { @@ -893,8 +2084,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" + "resolved": "6.0.0", + "contentHash": "rp1gMNEZpvx9vP0JW0oHLxlf8oSiQgtno77Y4PLUBjSiDYoD77Y8uXHr1Ea5XG4/pIKhqAdxZ8v8OTUtqo9PeQ==" }, "System.Security.Cryptography.X509Certificates": { "type": "Transitive", @@ -928,6 +2119,36 @@ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" } }, + "System.Security.Cryptography.Xml": { + "type": "Transitive", + "resolved": "7.0.1", + "contentHash": "MCxBCtH0GrDuvU63ZODwQHQZPchb24pUAX3MfZ6b13qg246ZD10PRdOvay8C9HBPfCXkymUNwFPEegud7ax2zg==", + "dependencies": { + "System.Security.Cryptography.Pkcs": "7.0.0" + } + }, + "System.Security.Permissions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "T/uuc7AklkDoxmcJ7LGkyX1CcSviZuLCa4jg3PekfJ7SU0niF0IVTXwUiNVP9DSpzou2PpxJ+eNY2IfDM90ZCg==", + "dependencies": { + "System.Security.AccessControl": "6.0.0", + "System.Windows.Extensions": "6.0.0" + } + }, + "System.Security.Principal": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "I1tkfQlAoMM2URscUtpcRo/hX0jinXx6a/KUtEQoz3owaYwl3qwsO8cbzYVVnjxrzxjHo3nJC+62uolgeGIS9A==", + "dependencies": { + "System.Runtime": "4.3.0" + } + }, + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" + }, "System.Text.Encoding": { "type": "Transitive", "resolved": "4.3.0", @@ -949,6 +2170,20 @@ "System.Text.Encoding": "4.3.0" } }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "OP6umVGxc0Z0MvZQBVigj4/U31Pw72ITihDWP9WiWDm+q5aoe0GaJivsfYGq53o6dxH7DcXWiCTl7+0o2CGdmg==" + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "6.0.5", + "contentHash": "SSH+YYrMpvLcy7Orzb5K1tSyffnFacWahyxCCjYH1PbSHdAF4dekmIetBurFKgtTHDmwEe/J2Csi/7niRH6d/g==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encodings.Web": "6.0.0" + } + }, "System.Threading": { "type": "Transitive", "resolved": "4.3.0", @@ -968,15 +2203,15 @@ "System.Runtime": "4.3.0" } }, + "System.Threading.Tasks.Dataflow": { + "type": "Transitive", + "resolved": "4.8.0", + "contentHash": "PSIdcgbyNv7FZvZ1I9Mqy6XZOwstYYMdZiXuHvIyc0gDyPjEhrrP9OvTGDHp+LAHp1RNSLjPYssyqox9+Kt9Ug==" + }, "System.Threading.Tasks.Extensions": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } + "resolved": "4.5.4", + "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" }, "System.Threading.Timer": { "type": "Transitive", @@ -988,6 +2223,14 @@ "System.Runtime": "4.3.0" } }, + "System.Windows.Extensions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "IXoJOXIqc39AIe+CIR7koBtRGMiCt/LPM3lI+PELtDIy9XdyeSrwXFdWV9dzJ2Awl0paLWUaknLxFQ5HpHZUog==", + "dependencies": { + "System.Drawing.Common": "6.0.0" + } + }, "System.Xml.ReaderWriter": { "type": "Transitive", "resolved": "4.3.0", @@ -1029,6 +2272,61 @@ "System.Xml.ReaderWriter": "4.3.0" } }, + "System.Xml.XmlDocument": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0" + } + }, + "System.Xml.XPath": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "v1JQ5SETnQusqmS3RwStF7vwQ3L02imIzl++sewmt23VGygix04pEH+FCj1yWb+z4GDzKiljr1W7Wfvrx0YwgA==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0" + } + }, + "System.Xml.XPath.XmlDocument": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "A/uxsWi/Ifzkmd4ArTLISMbfFs6XpRPsXZonrIqyTY70xi8t+mDtvSM5Os0RqyRDobjMBwIDHDL4NOIbkDwf7A==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XPath": "4.3.0", + "System.Xml.XmlDocument": "4.3.0" + } + }, + "TaskTupleAwaiter": { + "type": "Transitive", + "resolved": "2.0.3", + "contentHash": "RUdwpeaZpj98w1dQw295V950qGGtoVdPbhxU1UBazR9pOAX6YpK9qc17u9swRhlKTDY2PvHIXODrNwFXGC/jvw==" + }, "xunit.abstractions": { "type": "Transitive", "resolved": "2.0.3", @@ -1073,6 +2371,56 @@ "NETStandard.Library": "1.6.1", "xunit.extensibility.core": "[2.5.0]" } + }, + "apiservice": { + "type": "Project", + "dependencies": { + "Azure.Data.Tables": "[12.8.0, )", + "Azure.Identity": "[1.8.2, )", + "Azure.Messaging.EventGrid": "[4.15.0, )", + "Azure.ResourceManager": "[1.6.0, )", + "Azure.ResourceManager.Compute": "[1.0.0-beta.8, )", + "Azure.ResourceManager.Monitor": "[1.0.0-beta.2, )", + "Azure.ResourceManager.Network": "[1.0.0, )", + "Azure.ResourceManager.Resources": "[1.6.0, )", + "Azure.ResourceManager.Storage": "[1.0.0-beta.11, )", + "Azure.Security.KeyVault.Secrets": "[4.3.0, )", + "Azure.Storage.Blobs": "[12.13.0, )", + "Azure.Storage.Queues": "[12.11.0, )", + "Faithlife.Utility": "[0.12.2, )", + "Microsoft.Azure.AppConfiguration.Functions.Worker": "[6.0.0, )", + "Microsoft.Azure.Functions.Extensions": "[1.1.0, )", + "Microsoft.Azure.Functions.Worker": "[1.18.0, )", + "Microsoft.Azure.Functions.Worker.ApplicationInsights": "[1.0.0-preview4, )", + "Microsoft.Azure.Functions.Worker.Extensions.EventGrid": "[2.1.0, )", + "Microsoft.Azure.Functions.Worker.Extensions.Http": "[3.0.13, )", + "Microsoft.Azure.Functions.Worker.Extensions.SignalRService": "[1.7.0, )", + "Microsoft.Azure.Functions.Worker.Extensions.Storage": "[5.0.1, )", + "Microsoft.Azure.Functions.Worker.Extensions.Timer": "[4.1.0, )", + "Microsoft.Azure.Functions.Worker.Sdk": "[1.10.0, )", + "Microsoft.Azure.Management.Monitor": "[0.28.0-preview, )", + "Microsoft.Azure.Management.OperationalInsights": "[0.24.0-preview, )", + "Microsoft.Extensions.Logging.ApplicationInsights": "[2.21.0, )", + "Microsoft.FeatureManagement": "[2.5.1, )", + "Microsoft.Graph": "[4.37.0, )", + "Microsoft.Identity.Client": "[4.52.0, )", + "Microsoft.Identity.Web.TokenCache": "[2.7.0, )", + "Microsoft.Rest.ClientRuntime": "[2.3.24, )", + "Microsoft.TeamFoundationServer.Client": "[19.219.0-preview, )", + "Octokit": "[2.0.1, )", + "OpenTelemetry.Api": "[1.5.0-rc.1, )", + "Polly": "[8.0.0-alpha.2, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Scriban": "[5.5.0, )", + "Semver": "[2.3.0, )", + "SmartAnalyzers.CSharpExtensions.Annotations": "[4.2.7, )", + "System.Diagnostics.DiagnosticSource": "[8.0.0-preview.4.23259.5, )", + "System.IdentityModel.Tokens.Jwt": "[6.29.0, )", + "System.Linq.Async": "[6.0.1, )", + "System.Security.Cryptography.Pkcs": "[7.0.2, )", + "System.Text.RegularExpressions": "[4.3.1, )", + "TaskTupleAwaiter": "[2.0.3, )" + } } } } diff --git a/src/ApiService/IntegrationTests/packages.lock.json b/src/ApiService/IntegrationTests/packages.lock.json index 37fd1215bf..497cf663a0 100644 --- a/src/ApiService/IntegrationTests/packages.lock.json +++ b/src/ApiService/IntegrationTests/packages.lock.json @@ -1417,8 +1417,8 @@ }, "Semver": { "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "1jUT0PwgKO9d9F/X2n762qLp7v/30OpMtJPFRtmjPXUX2/J0lnqiGiSJNNsW3yYTj5StF0Z1yE36TrvtGpcbrg==" + "resolved": "2.3.0", + "contentHash": "4vYo1zqn6pJ1YrhjuhuOSbIIm0CpM47grbpTJ5ABjOlfGt/EhMEM9ed4MRK5Jr6gVnntWDqOUzGeUJp68PZGjw==" }, "SmartAnalyzers.CSharpExtensions.Annotations": { "type": "Transitive", @@ -2544,7 +2544,7 @@ "Polly": "[8.0.0-alpha.2, )", "Polly.Extensions.Http": "[3.0.0, )", "Scriban": "[5.5.0, )", - "Semver": "[2.1.0, )", + "Semver": "[2.3.0, )", "SmartAnalyzers.CSharpExtensions.Annotations": "[4.2.7, )", "System.Diagnostics.DiagnosticSource": "[8.0.0-preview.4.23259.5, )", "System.IdentityModel.Tokens.Jwt": "[6.29.0, )", diff --git a/src/ApiService/Tests/packages.lock.json b/src/ApiService/Tests/packages.lock.json index 1c8392cb4a..d3ad57006a 100644 --- a/src/ApiService/Tests/packages.lock.json +++ b/src/ApiService/Tests/packages.lock.json @@ -1420,8 +1420,8 @@ }, "Semver": { "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "1jUT0PwgKO9d9F/X2n762qLp7v/30OpMtJPFRtmjPXUX2/J0lnqiGiSJNNsW3yYTj5StF0Z1yE36TrvtGpcbrg==" + "resolved": "2.3.0", + "contentHash": "4vYo1zqn6pJ1YrhjuhuOSbIIm0CpM47grbpTJ5ABjOlfGt/EhMEM9ed4MRK5Jr6gVnntWDqOUzGeUJp68PZGjw==" }, "SmartAnalyzers.CSharpExtensions.Annotations": { "type": "Transitive", @@ -2547,7 +2547,7 @@ "Polly": "[8.0.0-alpha.2, )", "Polly.Extensions.Http": "[3.0.0, )", "Scriban": "[5.5.0, )", - "Semver": "[2.1.0, )", + "Semver": "[2.3.0, )", "SmartAnalyzers.CSharpExtensions.Annotations": "[4.2.7, )", "System.Diagnostics.DiagnosticSource": "[8.0.0-preview.4.23259.5, )", "System.IdentityModel.Tokens.Jwt": "[6.29.0, )", diff --git a/src/cli/onefuzz/backend.py b/src/cli/onefuzz/backend.py index 4d3af2371b..7f23e7de03 100644 --- a/src/cli/onefuzz/backend.py +++ b/src/cli/onefuzz/backend.py @@ -41,6 +41,7 @@ from tenacity.stop import stop_after_attempt from tenacity.wait import wait_random +from .__version__ import __version__ from .azcopy import azcopy_copy, azcopy_sync _ACCESSTOKENCACHE_UMASK = 0o077 @@ -191,7 +192,9 @@ def logout(self) -> None: os.unlink(self.token_path) def headers(self) -> Dict[str, str]: - value = {} + value = { + "Cli-Version": __version__, + } if self.config.client_id is not None: access_token = self.get_access_token() value["Authorization"] = "%s %s" % ( @@ -371,6 +374,8 @@ def request( ): self.config_params() headers = self.headers() + if str.lower(os.environ.get("ONEFUZZ_STRICT_VERSIONING") or "") == "true": + headers["Strict-Version"] = "true" json_data = serialize(json_data) # 401 errors with IDX10501: Signature validation failed occur diff --git a/src/pytypes/onefuzztypes/enums.py b/src/pytypes/onefuzztypes/enums.py index 317325de0b..9bf03d9663 100644 --- a/src/pytypes/onefuzztypes/enums.py +++ b/src/pytypes/onefuzztypes/enums.py @@ -305,6 +305,7 @@ class ErrorCode(Enum): ADO_VALIDATION_INVALID_PATH = 495 ADO_VALIDATION_INVALID_PROJECT = 496 INVALID_RETENTION_PERIOD = 497 + INVALID_CLI_VERSION = 498 # NB: if you update this enum, also update Enums.cs From d792b3b8959ada6a06f4f90ce1cd8f71de86bf82 Mon Sep 17 00:00:00 2001 From: Noah McGregor Harper <74685766+nharper285@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:47:09 -0700 Subject: [PATCH 3/4] Removing additional repro test step (#3568) * add * Removing repro. * Removing more repro steps. --- src/integration-tests/integration-test.py | 34 -- src/proxy-manager/Cargo.lock | 382 +++++++++++----------- 2 files changed, 197 insertions(+), 219 deletions(-) diff --git a/src/integration-tests/integration-test.py b/src/integration-tests/integration-test.py index b71b0b7378..5d2e6809a9 100755 --- a/src/integration-tests/integration-test.py +++ b/src/integration-tests/integration-test.py @@ -1313,28 +1313,6 @@ def check_jobs( if not result: raise Exception("jobs failed") - def check_repros( - self, - test_id: UUID, - *, - endpoint: Optional[str], - client_id: Optional[str], - client_secret: Optional[str], - authority: Optional[str] = None, - job_ids: List[UUID] = [], - ) -> None: - self.onefuzz.__setup__( - endpoint=endpoint, - client_id=client_id, - client_secret=client_secret, - authority=authority, - ) - tester = TestOnefuzz(self.onefuzz, self.logger, test_id) - launch_result, repros = tester.launch_repro(job_ids=job_ids) - result = tester.check_repro(repros) - if not (result and launch_result): - raise Exception("repros failed") - def setup( self, *, @@ -1465,18 +1443,6 @@ def check_results( job_ids=job_ids, ) - if skip_repro: - self.logger.warning("not testing crash repro") - else: - self.check_repros( - test_id, - endpoint=endpoint, - authority=authority, - client_id=client_id, - client_secret=client_secret, - job_ids=job_ids, - ) - def test_unmanaged( self, samples: Directory, diff --git a/src/proxy-manager/Cargo.lock b/src/proxy-manager/Cargo.lock index a9a7b85c6d..98e66a2468 100644 --- a/src/proxy-manager/Cargo.lock +++ b/src/proxy-manager/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -19,9 +19,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -43,9 +43,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.5.0" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" dependencies = [ "anstyle", "anstyle-parse", @@ -57,15 +57,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" dependencies = [ "utf8parse", ] @@ -81,9 +81,9 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "2.1.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" dependencies = [ "anstyle", "windows-sys", @@ -91,9 +91,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.72" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "appinsights" @@ -120,13 +120,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.72" +version = "0.1.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09" +checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.38", ] [[package]] @@ -151,9 +151,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -166,9 +166,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.2" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" [[package]] name = "bincode" @@ -187,15 +187,15 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "bytes" @@ -208,9 +208,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.82" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "libc", ] @@ -223,30 +223,30 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", - "winapi", + "windows-targets", ] [[package]] name = "clap" -version = "4.4.2" +version = "4.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a13b88d2c62ff462f88e4a121f17a82c1af05693a2f192b5c38d14de73c19f6" +checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.4.2" +version = "4.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb9faaa7c2ef94b2743a21f5a29e6f0010dff4caa69ac8e9d6cf8b6fa74da08" +checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45" dependencies = [ "anstream", "anstyle", @@ -256,9 +256,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" [[package]] name = "colorchoice" @@ -307,8 +307,8 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -320,9 +320,9 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] @@ -342,30 +342,19 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.2" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" dependencies = [ - "errno-dragonfly", "libc", "windows-sys", ] -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "fastrand" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "flume" @@ -464,9 +453,9 @@ version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.38", ] [[package]] @@ -514,15 +503,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "h2" -version = "0.3.20" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ "bytes", "fnv", @@ -551,9 +540,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hostname" @@ -596,9 +585,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" @@ -735,15 +724,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" [[package]] name = "linux-raw-sys" -version = "0.4.5" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" [[package]] name = "lock_api" @@ -757,9 +746,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "match_cfg" @@ -769,9 +758,9 @@ checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "mime" @@ -828,9 +817,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] @@ -847,9 +836,9 @@ dependencies = [ [[package]] name = "object" -version = "0.31.1" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] @@ -898,11 +887,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.56" +version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "729b745ad4a5575dd06a3e1af1414bd330ee561c01b3899eb584baeaa8def17e" +checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "cfg-if", "foreign-types", "libc", @@ -917,9 +906,9 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.38", ] [[package]] @@ -930,18 +919,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "111.27.0+1.1.1v" +version = "300.1.5+3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e8f197c82d7511c5b014030c9b1efeda40d7d5f99d23b4ceed3524a5e63f02" +checksum = "559068e4c12950d7dcaa1857a61725c0d38d4fc03ff8e070ab31a75d6e316491" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.91" +version = "0.9.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "866b5f16f90776b9bb8dc1e1802ac6f0513de3a7a7465867bfbc563dc737faac" +checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" dependencies = [ "cc", "libc", @@ -1000,16 +989,16 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.38", ] [[package]] name = "pin-project-lite" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -1040,9 +1029,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] @@ -1078,11 +1067,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", ] [[package]] @@ -1126,9 +1115,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.3" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" +checksum = "d119d7c7ca818f8a53c300863d4f87566aac09943aef5b355bb83969dae75d87" dependencies = [ "aho-corasick", "memchr", @@ -1138,9 +1127,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.6" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" +checksum = "465c6fc0621e4abc4187a2bda0937bfd4f722c2730b29562e19689ea796c9a4b" dependencies = [ "aho-corasick", "memchr", @@ -1149,15 +1138,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "56d84fdd47036b038fc80dd333d10b6aab10d5d31f4a366e20014def75328d33" [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ "base64", "bytes", @@ -1180,6 +1169,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-native-tls", "tokio-util", @@ -1213,11 +1203,11 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustix" -version = "0.38.7" +version = "0.38.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "172891ebdceb05aa0005f533a6cbfca599ddd7d966f6f5d4d9b2e70478e70399" +checksum = "5a74ee2d7c2581cd139b42447d7d9389b889bdaad3a73f1ebb16f2a3237bb19c" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.0", "errno", "libc", "linux-raw-sys", @@ -1270,29 +1260,29 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.183" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.183" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.38", ] [[package]] name = "serde_json" -version = "1.0.104" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ "itoa", "ryu", @@ -1322,9 +1312,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] @@ -1351,9 +1341,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" [[package]] name = "snafu" @@ -1372,8 +1362,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf" dependencies = [ "heck", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -1389,9 +1379,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" dependencies = [ "libc", "windows-sys", @@ -1454,22 +1444,43 @@ version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.28" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.69", + "quote 1.0.33", "unicode-ident", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tempfile" version = "3.8.0" @@ -1485,31 +1496,31 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] [[package]] name = "thiserror" -version = "1.0.44" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.44" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.38", ] [[package]] @@ -1529,9 +1540,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.32.0" +version = "1.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" dependencies = [ "backtrace", "bytes", @@ -1541,7 +1552,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.3", + "socket2 0.5.4", "tokio-macros", "windows-sys", ] @@ -1552,9 +1563,9 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.38", ] [[package]] @@ -1569,9 +1580,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" dependencies = [ "bytes", "futures-core", @@ -1621,9 +1632,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -1642,9 +1653,9 @@ checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" [[package]] name = "url" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", @@ -1708,9 +1719,9 @@ dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.38", "wasm-bindgen-shared", ] @@ -1732,7 +1743,7 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ - "quote 1.0.32", + "quote 1.0.33", "wasm-bindgen-macro-support", ] @@ -1742,9 +1753,9 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.38", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1757,9 +1768,9 @@ checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "wasm-streams" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bbae3363c08332cadccd13b67db371814cd214c2524020932f0804b8cf7c078" +checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" dependencies = [ "futures-util", "js-sys", @@ -1796,9 +1807,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -1829,9 +1840,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -1844,51 +1855,52 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys", ] From 0e4a3326ad22f56c9d9a30e9eb6b972462a94762 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Oct 2023 21:49:40 +0000 Subject: [PATCH 4/4] Bump memmap2 from 0.7.1 to 0.9.0 in /src/agent Bumps [memmap2](https://github.com/RazrFalcon/memmap2-rs) from 0.7.1 to 0.9.0. - [Changelog](https://github.com/RazrFalcon/memmap2-rs/blob/master/CHANGELOG.md) - [Commits](https://github.com/RazrFalcon/memmap2-rs/compare/v0.7.1...v0.9.0) --- updated-dependencies: - dependency-name: memmap2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> --- src/agent/Cargo.lock | 6 +++--- src/agent/debugger/Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/agent/Cargo.lock b/src/agent/Cargo.lock index eb35241201..70e3a17557 100644 --- a/src/agent/Cargo.lock +++ b/src/agent/Cargo.lock @@ -766,7 +766,7 @@ dependencies = [ "goblin", "iced-x86", "log", - "memmap2 0.7.1", + "memmap2 0.9.0", "rand 0.8.5", "serde", "win-util", @@ -1859,9 +1859,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6" +checksum = "deaba38d7abf1d4cca21cc89e932e542ba2b9258664d2a9ef0e61512039c9375" dependencies = [ "libc", ] diff --git a/src/agent/debugger/Cargo.toml b/src/agent/debugger/Cargo.toml index a218b4905d..b82a370f46 100644 --- a/src/agent/debugger/Cargo.toml +++ b/src/agent/debugger/Cargo.toml @@ -11,7 +11,7 @@ fnv = "1.0" goblin = "0.6" iced-x86 = "1.20" log = "0.4" -memmap2 = "0.7" +memmap2 = "0.9" rand = "0.8" serde = { version = "1.0", features = ["derive"] } win-util = { path = "../win-util" }