public override void Initialize() { var builder = new ContainerBuilder(); ConversationState = new ConversationState(new MemoryStorage()); UserState = new UserState(new MemoryStorage()); TelemetryClient = new NullBotTelemetryClient(); Services = new MockSkillConfiguration(); builder.RegisterInstance(new BotStateSet(UserState, ConversationState)); var fakeServiceManager = new MockServiceManager(); builder.RegisterInstance <IServiceManager>(fakeServiceManager); this.Container = builder.Build(); this.ServiceManager = fakeServiceManager; this.EndpointService = new EndpointService(); this.BackgroundTaskQueue = new BackgroundTaskQueue(); this.ProactiveState = new ProactiveState(new MemoryStorage()); ResponseManager = new ResponseManager( responseTemplates: new IResponseIdCollection[] { new POISharedResponses(), new RouteResponses(), new CancelRouteResponses() }, locales: new string[] { "en-us", "de-de", "es-es", "fr-fr", "it-it", "zh-cn" }); }
public new void Initialize() { var builder = new ContainerBuilder(); ConversationState = new ConversationState(new MemoryStorage()); DialogState = ConversationState.CreateProperty <DialogState>(nameof(DialogState)); UserState = new UserState(new MemoryStorage()); TelemetryClient = new NullBotTelemetryClient(); SkillConfigurations = new Dictionary <string, SkillConfigurationBase>(); // Add the LUIS model fakes used by the Skill Services = new MockSkillConfiguration(); Services.LocaleConfigurations.Add("en", new LocaleConfiguration() { Locale = "en-us", LuisServices = new Dictionary <string, ITelemetryLuisRecognizer> { { "general", GeneralTestUtil.CreateRecognizer() }, { "FakeSkill", FakeSkillTestUtil.CreateRecognizer() } } }); Services.LocaleConfigurations.Add("es", new LocaleConfiguration() { Locale = "es-mx", LuisServices = new Dictionary <string, ITelemetryLuisRecognizer> { { "general", GeneralTestUtil.CreateRecognizer() }, { "FakeSkill", FakeSkillTestUtil.CreateRecognizer() } } }); // Dummy Authentication connection for Auth testing Services.AuthenticationConnections = new Dictionary <string, string> { { "DummyAuth", "DummyAuthConnection" } }; builder.RegisterInstance(new BotStateSet(UserState, ConversationState)); Container = builder.Build(); BotResponseBuilder = new BotResponseBuilder(); BotResponseBuilder.AddFormatter(new TextBotResponseFormatter()); Dialogs = new DialogSet(DialogState); // Manually mange the conversation metadata when we need finer grained control ConversationReference = new ConversationReference { ChannelId = "test", ServiceUrl = "https://test.com", }; ConversationReference.User = new ChannelAccount("user1", "User1"); ConversationReference.Bot = new ChannelAccount("bot", "Bot"); ConversationReference.Conversation = new ConversationAccount(false, "convo1", "Conversation1"); }
public async Task AdaptiveDialogBotExceptionWhenNoResource() { // Arrange var logger = NullLogger <AdaptiveDialogBot> .Instance; var storage = new MemoryStorage(); var conversationState = new ConversationState(storage); var userState = new UserState(storage); var skillConversationIdFactory = new SkillConversationIdFactory(storage); var languagePolicy = new LanguagePolicy("en-US"); var resourceExplorer = new ResourceExplorer(); var resourceProvider = new MockResourceProvider(resourceExplorer); resourceExplorer.AddResourceProvider(resourceProvider); var botFrameworkClientMock = new Mock <BotFrameworkClient>(); var botFrameworkAuthenticationMock = new Mock <BotFrameworkAuthentication>(); botFrameworkAuthenticationMock.Setup(bfa => bfa.CreateBotFrameworkClient()).Returns(botFrameworkClientMock.Object); // The test dialog being used here happens to not send anything so we only need to mock the type. var adapterMock = new Mock <BotAdapter>(); // ChannelId and Conversation.Id are required for ConversationState and // ChannelId and From.Id are required for UserState. var activity = new Activity { ChannelId = "test-channel", Conversation = new ConversationAccount { Id = "test-conversation-id" }, From = new ChannelAccount { Id = "test-id" } }; var turnContext = new TurnContext(adapterMock.Object, activity); var telemetryClient = new NullBotTelemetryClient(); // Act var bot = new AdaptiveDialogBot( "main.dialog", "main.lg", resourceExplorer, conversationState, userState, skillConversationIdFactory, languagePolicy, botFrameworkAuthenticationMock.Object, telemetryClient, logger: logger); await Assert.ThrowsAsync <InvalidOperationException>(() => ((IBot)bot).OnTurnAsync(turnContext, CancellationToken.None)); }
public void AdaptiveDialogBot_ShouldNotThrowOnNullDialog() { // Arrange var logger = NullLogger <AdaptiveDialogBot> .Instance; var storage = new MemoryStorage(); var conversationState = new ConversationState(storage); var userState = new UserState(storage); var skillConversationIdFactory = new SkillConversationIdFactory(storage); var languagePolicy = new LanguagePolicy("en-US"); var resourceExplorer = new ResourceExplorer(); var resourceProvider = new MockResourceProvider(resourceExplorer); resourceExplorer.AddResourceProvider(resourceProvider); var botFrameworkClientMock = new Mock <BotFrameworkClient>(); var botFrameworkAuthenticationMock = new Mock <BotFrameworkAuthentication>(); botFrameworkAuthenticationMock.Setup(bfa => bfa.CreateBotFrameworkClient()).Returns(botFrameworkClientMock.Object); // The test dialog being used here happens to not send anything so we only need to mock the type. var adapterMock = new Mock <BotAdapter>(); // ChannelId and Conversation.Id are required for ConversationState and // ChannelId and From.Id are required for UserState. var activity = new Activity { ChannelId = "test-channel", Conversation = new ConversationAccount { Id = "test-conversation-id" }, From = new ChannelAccount { Id = "test-id" } }; var turnContext = new TurnContext(adapterMock.Object, activity); var telemetryClient = new NullBotTelemetryClient(); new AdaptiveDialogBot( "main.dialog", "main.lg", resourceExplorer, conversationState, userState, skillConversationIdFactory, languagePolicy, botFrameworkAuthenticationMock.Object, telemetryClient, dialogs: null); }
public override void Initialize() { var builder = new ContainerBuilder(); ConversationState = new ConversationState(new MemoryStorage()); UserState = new UserState(new MemoryStorage()); TelemetryClient = new NullBotTelemetryClient(); Services = new MockSkillConfiguration(); Services.LocaleConfigurations.Add("en", new LocaleConfiguration() { Locale = "en-us", LuisServices = new Dictionary <string, ITelemetryLuisRecognizer> { { "general", GeneralTestUtil.CreateRecognizer() },
public override void Initialize() { var builder = new ContainerBuilder(); ConversationState = new ConversationState(new MemoryStorage()); UserState = new UserState(new MemoryStorage()); ProactiveState = new ProactiveState(new MemoryStorage()); AutomotiveSkillStateAccessor = ConversationState.CreateProperty <AutomotiveSkillState>(nameof(AutomotiveSkillState)); Services = new MockSkillConfiguration(); BackgroundTaskQueue = new BackgroundTaskQueue(); EndpointService = new EndpointService(); ResponseManager = new ResponseManager( responseTemplates: new IResponseIdCollection[] { new AutomotiveSkillMainResponses(), new AutomotiveSkillSharedResponses(), new VehicleSettingsResponses() }, locales: new string[] { "en-us", "de-de", "es-es", "fr-fr", "it-it", "zh-cn" }); ImageAssetLocation = "https://localhost"; this.Services.Properties.Add("ImageAssetLocation", ImageAssetLocation); builder.RegisterInstance(new BotStateSet(this.UserState, this.ConversationState)); builder.RegisterInstance(new BotStateSet(UserState, ConversationState)); Container = builder.Build(); TelemetryClient = new NullBotTelemetryClient(); // Mock HttpContext for image path resolution MockHttpContext = new DefaultHttpContext(); MockHttpContext.Request.Scheme = "http"; MockHttpContext.Request.Host = new HostString("localhost", 3980); MockHttpContextAcessor = new HttpContextAccessor { HttpContext = MockHttpContext }; }
public new void Initialize() { var builder = new ContainerBuilder(); ConversationState = new ConversationState(new MemoryStorage()); DialogState = ConversationState.CreateProperty <DialogState>(nameof(DialogState)); UserState = new UserState(new MemoryStorage()); ProactiveState = new ProactiveState(new MemoryStorage()); TelemetryClient = new NullBotTelemetryClient(); BackgroundTaskQueue = new BackgroundTaskQueue(); EndpointService = new EndpointService(); SkillConfigurations = new Dictionary <string, SkillConfigurationBase>(); // Add the LUIS model fakes used by the Skill Services = new MockSkillConfiguration(); Services.LocaleConfigurations.Add("en", new LocaleConfiguration() { Locale = "en-us", LuisServices = new Dictionary <string, ITelemetryLuisRecognizer> { { "general", GeneralTestUtil.CreateRecognizer() }, { "FakeSkill", FakeSkillTestUtil.CreateRecognizer() } } }); Services.LocaleConfigurations.Add("es", new LocaleConfiguration() { Locale = "es-mx", LuisServices = new Dictionary <string, ITelemetryLuisRecognizer> { { "general", GeneralTestUtil.CreateRecognizer() }, { "FakeSkill", FakeSkillTestUtil.CreateRecognizer() } } }); // Dummy Authentication connection for Auth testing Services.AuthenticationConnections = new Dictionary <string, string> { { "DummyAuth", "DummyAuthConnection" } }; builder.RegisterInstance(new BotStateSet(UserState, ConversationState)); Container = builder.Build(); Dialogs = new DialogSet(DialogState); ResponseManager = new ResponseManager( new IResponseIdCollection[] { new SampleAuthResponses(), new MainResponses(), new SharedResponses(), new SampleResponses() }, new string[] { "en-us", "de-de", "es-es", "fr-fr", "it-it", "zh-cn" }); // Manually mange the conversation metadata when we need finer grained control ConversationReference = new ConversationReference { ChannelId = "test", ServiceUrl = "https://test.com", }; ConversationReference.User = new ChannelAccount("user1", "User1"); ConversationReference.Bot = new ChannelAccount("bot", "Bot"); ConversationReference.Conversation = new ConversationAccount(false, "convo1", "Conversation1"); }
public async Task AdaptiveDialogBotTurnState() { // Arrange var logger = NullLogger <AdaptiveDialogBot> .Instance; var storage = new MemoryStorage(); var conversationState = new ConversationState(storage); var userState = new UserState(storage); var skillConversationIdFactory = new SkillConversationIdFactory(storage); var languagePolicy = new LanguagePolicy("en-US"); var resourceExplorer = new ResourceExplorer(); var resourceProvider = new MockResourceProvider(resourceExplorer); resourceProvider.Add("main.dialog", new MockResource("{ \"$kind\": \"Microsoft.AdaptiveDialog\" }")); resourceExplorer.AddResourceProvider(resourceProvider); var botFrameworkClientMock = new Mock <BotFrameworkClient>(); var botFrameworkAuthenticationMock = new Mock <BotFrameworkAuthentication>(); botFrameworkAuthenticationMock.Setup(bfa => bfa.CreateBotFrameworkClient()).Returns(botFrameworkClientMock.Object); // The test dialog being used here happens to not send anything so we only need to mock the type. var adapterMock = new Mock <BotAdapter>(); // ChannelId and Conversation.Id are required for ConversationState and // ChannelId and From.Id are required for UserState. var activity = new Activity { ChannelId = "test-channel", Conversation = new ConversationAccount { Id = "test-conversation-id" }, From = new ChannelAccount { Id = "test-id" } }; var turnContext = new TurnContext(adapterMock.Object, activity); var telemetryClient = new NullBotTelemetryClient(); // Act var bot = new AdaptiveDialogBot( "main.dialog", "main.lg", resourceExplorer, conversationState, userState, skillConversationIdFactory, languagePolicy, botFrameworkAuthenticationMock.Object, telemetryClient, logger: logger); await bot.OnTurnAsync(turnContext, CancellationToken.None); // Assert Assert.NotNull(turnContext.TurnState.Get <BotFrameworkClient>()); Assert.NotNull(turnContext.TurnState.Get <SkillConversationIdFactoryBase>()); Assert.NotNull(turnContext.TurnState.Get <ConversationState>()); Assert.NotNull(turnContext.TurnState.Get <UserState>()); Assert.NotNull(turnContext.TurnState.Get <ResourceExplorer>()); Assert.NotNull(turnContext.TurnState.Get <LanguageGenerator>()); Assert.NotNull(turnContext.TurnState.Get <LanguageGeneratorManager>()); Assert.NotNull(turnContext.TurnState.Get <LanguagePolicy>()); Assert.NotNull(turnContext.TurnState.Get <IBotTelemetryClient>()); Assert.Null(turnContext.TurnState.Get <MemoryScope>()); Assert.Null(turnContext.TurnState.Get <Memory.IPathResolver>()); Assert.Null(turnContext.TurnState.Get <Dialog>()); // Assert no TestOptions var testOptionsAccessor = conversationState.CreateProperty <JObject>("TestOptions"); Assert.Null(await testOptionsAccessor.GetAsync(turnContext)); }
public async Task AdaptiveDialogBotSetTestOptions() { // Arrange var logger = NullLogger <AdaptiveDialogBot> .Instance; var storage = new MemoryStorage(); var conversationState = new ConversationState(storage); var userState = new UserState(storage); var skillConversationIdFactory = new SkillConversationIdFactory(storage); var languagePolicy = new LanguagePolicy("en-US"); var resourceExplorer = new ResourceExplorer(); var resourceProvider = new MockResourceProvider(resourceExplorer); resourceProvider.Add("main.dialog", new MockResource("{ \"$kind\": \"Microsoft.AdaptiveDialog\" }")); resourceExplorer.AddResourceProvider(resourceProvider); var botFrameworkClientMock = new Mock <BotFrameworkClient>(); var botFrameworkAuthenticationMock = new Mock <BotFrameworkAuthentication>(); botFrameworkAuthenticationMock.Setup(bfa => bfa.CreateBotFrameworkClient()).Returns(botFrameworkClientMock.Object); // The test dialog being used here happens to not send anything so we only need to mock the type. var adapterMock = new Mock <BotAdapter>(); // Type "event" and Name of "SetTestOptions" should store Value in ConversationState. // ChannelId and Conversation.Id are required for ConversationState and // ChannelId and From.Id are required for UserState. var activity = new Activity { Type = "event", Name = "SetTestOptions", ChannelId = "test-channel", Conversation = new ConversationAccount { Id = "test-conversation-id" }, From = new ChannelAccount { Id = "test-id" }, Value = new JObject { { "randomSeed", new JValue(123) }, { "randomValue", new JValue(456) } } }; var turnContext = new TurnContext(adapterMock.Object, activity); var telemetryClient = new NullBotTelemetryClient(); // Act var bot = new AdaptiveDialogBot( "main.dialog", "main.lg", resourceExplorer, conversationState, userState, skillConversationIdFactory, languagePolicy, botFrameworkAuthenticationMock.Object, telemetryClient, logger: logger); await bot.OnTurnAsync(turnContext, CancellationToken.None); // Assert TestOptions are in Conversation var testOptionsAccessor = conversationState.CreateProperty <JObject>("TestOptions"); Assert.Equal(123, (await testOptionsAccessor.GetAsync(turnContext)).GetValue("randomSeed")); Assert.Equal(456, (await testOptionsAccessor.GetAsync(turnContext)).GetValue("randomValue")); }