public async Task GetExtensions_ReturnsPackages() { using (var testDir = new TempDirectory()) { var manager = GetExtensionsManager(testDir.Path); var extension = new ExtensionPackageReference { Id = "Microsoft.Azure.WebJobs.Extensions.Test", Version = "1.0.0" }; await manager.AddExtensions(extension); Assert.True(File.Exists(manager.ProjectPath)); // Create a new manager pointing to the same path: manager = GetExtensionsManager(testDir.Path); var extensions = await manager.GetExtensions(); Assert.Equal(1, extensions.Count()); var reference = extensions.FirstOrDefault(p => string.Equals(p.Id, extensions.First().Id)); Assert.NotNull(reference); Assert.Equal(extension.Version, reference.Version); } }
public async Task <IActionResult> InstallExtension(ExtensionPackageReference package, bool verifyConflict = true) { if (package == null) { return(BadRequest()); } if (verifyConflict) { // If a different version of this extension is already installed, conflict: var extensions = await _extensionsManager.GetExtensions(); if (extensions.Any(e => e.Id.Equals(package.Id) && !e.Version.Equals(package.Version))) { return(StatusCode(StatusCodes.Status409Conflict)); } } ExtensionsRestoreJob job = await CreateJob(package); string jobId = job.Id; var addTask = _extensionsManager.AddExtensions(package) .ContinueWith(t => ProcessJobTaskResult(t, jobId)); var apiModel = ApiModelUtility.CreateApiModel(job, Request, $"jobs/{job.Id}"); string action = $"{Request.Scheme}://{Request.Host.ToUriComponent()}{Url.Action(nameof(GetJobs), "Extensions", new { id = job.Id })}{Request.QueryString}"; return(Accepted(action, apiModel)); }
public async Task GetExtensions_ExtensionBundleEnabled_ReturnsExtensionsFromBundle() { using (var testDir = new TempDirectory()) { var manager = GetExtensionsManager(testDir.Path); var extension = new ExtensionPackageReference { Id = "Microsoft.Azure.WebJobs.Extensions.Test", Version = "1.0.0" }; await manager.AddExtensions(extension); Assert.True(File.Exists(manager.DefaultExtensionsProjectPath)); var bundlePath = Path.GetDirectoryName(manager.DefaultExtensionsProjectPath); // Create a new manager using extension bundle with same csproj manager = GetExtensionsManager(testDir.Path, new TestExtensionBundleManager(bundlePath, true)); var extensions = await manager.GetExtensions(); Assert.Equal(1, extensions.Count()); var reference = extensions.FirstOrDefault(p => string.Equals(p.Id, extensions.First().Id)); Assert.NotNull(reference); Assert.Equal(extension.Version, reference.Version); } }
private async Task <ExtensionsRestoreJob> CreateJob(ExtensionPackageReference package) { var job = new ExtensionsRestoreJob() { Properties = new Dictionary <string, string>() { { "id", package.Id }, { "version", package.Version } } }; await SaveJob(job); return(job); }
public async Task GetExtensions_ReturnsNewlyAddedExtension() { using (var testDir = new TempDirectory()) { var manager = GetExtensionsManager(testDir.Path); var extension = new ExtensionPackageReference { Id = "Microsoft.Azure.WebJobs.Samples.Extension", Version = "1.0.0" }; await manager.AddExtensions(extension); IEnumerable <ExtensionPackageReference> extensions = await manager.GetExtensions(); Assert.Equal(1, extensions.Count()); var reference = extensions.FirstOrDefault(p => string.Equals(p.Id, extensions.First().Id)); Assert.NotNull(reference); Assert.Equal(extension.Version, reference.Version); } }
public Task <IActionResult> Put(int id, [FromBody] ExtensionPackageReference package) => InstallExtension(package);