Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
 public Task <IActionResult> Put(int id, [FromBody] ExtensionPackageReference package) => InstallExtension(package);