Пример #1
0
        public async Task It_does_not_track_extensions_that_are_not_file_providers(Language language)
        {
            var kernel   = CreateKernel(language);
            var provider = new FileProvider(kernel);

            var projectDir = DirectoryUtility.CreateDirectory();

            var packageName    = $"MyTestExtension.{Path.GetRandomFileName()}";
            var packageVersion = "2.0.0-" + Guid.NewGuid().ToString("N");
            var guid           = Guid.NewGuid().ToString();

            var nupkg = await KernelExtensionTestHelper.CreateExtensionNupkg(
                projectDir,
                $"await kernel.SendAsync(new SubmitCode(\"\\\"{guid}\\\"\"));",
                packageName,
                packageVersion);



            await kernel.SubmitCodeAsync($@"
#i ""nuget:{nupkg.Directory.FullName}""
#r ""nuget:{packageName},{packageVersion}""            ");

            Action action = () => provider.GetFileInfo("extensions/TestKernelExtension/resources/file.txt");

            action.Should().Throw <StaticContentSourceNotFoundException>();
        }
Пример #2
0
        public async Task It_tracks_extensions_that_are_not_file_providers(Language language)
        {
            var kernel   = CreateKernel(language);
            var provider = new FileProvider(kernel);

            var projectDir  = DirectoryUtility.CreateDirectory();
            var fileToEmbed = new FileInfo(Path.Combine(projectDir.FullName, "file.txt"));

            File.WriteAllText(fileToEmbed.FullName, "for testing only");
            var packageName    = $"MyTestExtension.{Path.GetRandomFileName()}";
            var packageVersion = "2.0.0-" + Guid.NewGuid().ToString("N");
            var guid           = Guid.NewGuid().ToString();

            var nupkg = await KernelExtensionTestHelper.CreateExtensionNupkg(
                projectDir,
                $"await kernel.SendAsync(new SubmitCode(\"\\\"{guid}\\\"\"));",
                packageName,
                packageVersion,
                fileToEmbed);



            await kernel.SubmitCodeAsync($@"
#i ""nuget:{nupkg.Directory.FullName}""
#r ""nuget:{packageName},{packageVersion}""            ");

            var file = provider.GetFileInfo("extensions/TestKernelExtension/resources/file.txt");

            file.Should()
            .NotBeNull();
        }
Пример #3
0
        public async Task can_get_static_content_from_extensions()
        {
            var server      = GetServer();
            var kernel      = server.Kernel;
            var projectDir  = DirectoryUtility.CreateDirectory();
            var fileToEmbed = new FileInfo(Path.Combine(projectDir.FullName, "file.txt"));

            File.WriteAllText(fileToEmbed.FullName, "for testing only");
            var packageName    = $"MyTestExtension.{Path.GetRandomFileName()}";
            var packageVersion = "2.0.0-" + Guid.NewGuid().ToString("N");
            var guid           = Guid.NewGuid().ToString();

            var nupkg = await KernelExtensionTestHelper.CreateExtensionNupkg(
                projectDir,
                $"await kernel.SendAsync(new SubmitCode(\"\\\"{guid}\\\"\"));",
                packageName,
                packageVersion,
                fileToEmbed);



            await kernel.SubmitCodeAsync($@"
#i ""nuget:{nupkg.Directory.FullName}""
#r ""nuget:{packageName},{packageVersion}""            ");

            var response = await server.HttpClient.GetAsync("extensions/TestKernelExtension/resources/file.txt");

            await response.ShouldSucceed();

            response.Content.Headers.ContentType.MediaType.Should().Be("text/plain");
        }
Пример #4
0
        public async Task Gives_kernel_extension_load_exception_event_when_extension_throws_exception_during_load()
        {
            var directory    = Create.EmptyWorkspace().Directory;
            var extensionDll = await KernelExtensionTestHelper.CreateExtension(directory, @"throw new Exception();");

            var kernel = CreateKernel();
            var extensionLoadEvents = new List <IKernelEvent>();

            await new KernelExtensionLoader().LoadFromAssembly(extensionDll, kernel, (kernelEvent) => extensionLoadEvents.Add(kernelEvent));

            extensionLoadEvents.Should()
            .ContainSingle(e => e is KernelExtensionLoadException);
        }
Пример #5
0
        public async Task It_does_not_track_extensions_that_are_not_file_providers(Language language)
        {
            var kernel   = CreateKernel(language);
            var provider = new FileProvider(kernel, typeof(Program).Assembly);

            var extensionPackage = KernelExtensionTestHelper.GetOrCreateSimpleExtension();

            await kernel.SubmitCodeAsync($@"
#i ""nuget:{extensionPackage.PackageLocation}""
#r ""nuget:{extensionPackage.Name},{extensionPackage.Version}""            ");

            Action action = () => provider.GetFileInfo("extensions/TestKernelExtension/resources/file.txt");

            action.Should().Throw <StaticContentSourceNotFoundException>();
        }
Пример #6
0
        public async Task It_tracks_extensions_that_are_not_file_providers(Language language)
        {
            var kernel   = CreateKernel(language);
            var provider = new FileProvider(kernel, typeof(Program).Assembly);

            var extensionPackage = KernelExtensionTestHelper.GetOrCreateFileProviderExtension();

            await kernel.SubmitCodeAsync($@"
#i ""nuget:{extensionPackage.PackageLocation}""
#r ""nuget:{extensionPackage.Name},{extensionPackage.Version}""            ");

            var file = provider.GetFileInfo("extensions/TestKernelExtension/resources/file.txt");

            file.Should()
            .NotBeNull();
        }
Пример #7
0
        public async Task Can_load_from_assembly()
        {
            var directory    = Create.EmptyWorkspace().Directory;
            var extensionDll = await KernelExtensionTestHelper.CreateExtension(directory, @"await kernel.SendAsync(new SubmitCode(""using System.Reflection;""));");

            var kernel = CreateKernel();
            var extensionLoadEvents = new List <IKernelEvent>();

            await new KernelExtensionLoader().LoadFromAssembly(extensionDll, kernel, (kernelEvent) => extensionLoadEvents.Add(kernelEvent));

            KernelEvents.Should()
            .ContainSingle(e => e.Value is CommandHandled &&
                           e.Value
                           .As <CommandHandled>()
                           .Command
                           .As <SubmitCode>()
                           .Code
                           .Contains("using System.Reflection;"));
        }