internal PluginResourceProviderNegativeTest(string serviceIndexJson, string sourceUri, string pluginsPath = "a") { var serviceIndex = string.IsNullOrEmpty(serviceIndexJson) ? null : new ServiceIndexResourceV3(JObject.Parse(serviceIndexJson), DateTime.UtcNow); SourceRepository = CreateSourceRepository(serviceIndex, sourceUri); var reader = new Mock <IEnvironmentVariableReader>(MockBehavior.Strict); reader.Setup(x => x.GetEnvironmentVariable( It.Is <string>(value => value == _pluginPathsEnvironmentVariable))) .Returns(pluginsPath); reader.Setup(x => x.GetEnvironmentVariable( It.Is <string>(value => value == _pluginRequestTimeoutEnvironmentVariable))) .Returns("b"); reader.Setup(x => x.GetEnvironmentVariable( It.Is <string>(value => value == _pluginIdleTimeoutEnvironmentVariable))) .Returns("c"); reader.Setup(x => x.GetEnvironmentVariable( It.Is <string>(value => value == _pluginHandshakeTimeoutEnvironmentVariable))) .Returns("d"); var pluginDiscoverer = new Mock <IPluginDiscoverer>(MockBehavior.Strict); var pluginDiscoveryResults = GetPluginDiscoveryResults(pluginsPath); pluginDiscoverer.Setup(x => x.DiscoverAsync(It.IsAny <CancellationToken>())) .ReturnsAsync(pluginDiscoveryResults); var pluginManager = new PluginManager( reader.Object, new Lazy <IPluginDiscoverer>(() => pluginDiscoverer.Object), (TimeSpan idleTimeout) => Mock.Of <IPluginFactory>()); Provider = new PluginResourceProvider(pluginManager); }
public void ResourceType_IsPluginResource() { var provider = new PluginResourceProvider(); Assert.Equal(typeof(PluginResource), provider.ResourceType); }
public void Name_IsPluginResourceProvider() { var provider = new PluginResourceProvider(); Assert.Equal(nameof(PluginResourceProvider), provider.Name); }
internal PluginResourceProviderPositiveTest( string pluginFilePath, PluginFileState pluginFileState, IEnumerable <PositiveTestExpectation> expectations) { _expectations = expectations; _pluginFilePath = pluginFilePath; _reader = new Mock <IEnvironmentVariableReader>(MockBehavior.Strict); _reader.Setup(x => x.GetEnvironmentVariable( It.Is <string>(value => value == EnvironmentVariableConstants.PluginPaths))) .Returns(pluginFilePath); _reader.Setup(x => x.GetEnvironmentVariable( It.Is <string>(value => value == EnvironmentVariableConstants.DesktopPluginPaths))) .Returns((string)null); _reader.Setup(x => x.GetEnvironmentVariable( It.Is <string>(value => value == EnvironmentVariableConstants.CorePluginPaths))) .Returns((string)null); _reader.Setup(x => x.GetEnvironmentVariable( It.Is <string>(value => value == EnvironmentVariableConstants.RequestTimeout))) .Returns("RequestTimeout"); _reader.Setup(x => x.GetEnvironmentVariable( It.Is <string>(value => value == EnvironmentVariableConstants.IdleTimeout))) .Returns("IdleTimeout"); _reader.Setup(x => x.GetEnvironmentVariable( It.Is <string>(value => value == EnvironmentVariableConstants.HandshakeTimeout))) .Returns("HandshakeTimeout"); _pluginDiscoverer = new Mock <IPluginDiscoverer>(MockBehavior.Strict); _pluginDiscoverer.Setup(x => x.Dispose()); _pluginDiscoverer.Setup(x => x.DiscoverAsync(It.IsAny <CancellationToken>())) .ReturnsAsync(new[] { new PluginDiscoveryResult(new PluginFile(pluginFilePath, new Lazy <PluginFileState>(() => pluginFileState))) }); _connection = new Mock <IConnection>(MockBehavior.Strict); _connection.Setup(x => x.Dispose()); _connection.SetupGet(x => x.Options) .Returns(ConnectionOptions.CreateDefault()); _connection.SetupGet(x => x.ProtocolVersion) .Returns(ProtocolConstants.Version100); _connection.Setup(x => x.SendRequestAndReceiveResponseAsync <MonitorNuGetProcessExitRequest, MonitorNuGetProcessExitResponse>( It.Is <MessageMethod>(m => m == MessageMethod.MonitorNuGetProcessExit), It.IsNotNull <MonitorNuGetProcessExitRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new MonitorNuGetProcessExitResponse(MessageResponseCode.Success)); _connection.Setup(x => x.SendRequestAndReceiveResponseAsync <InitializeRequest, InitializeResponse>( It.Is <MessageMethod>(m => m == MessageMethod.Initialize), It.IsNotNull <InitializeRequest>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new InitializeResponse(MessageResponseCode.Success)); foreach (var expectation in expectations) { _connection.Setup(x => x.SendRequestAndReceiveResponseAsync <GetOperationClaimsRequest, GetOperationClaimsResponse>( It.Is <MessageMethod>(m => m == MessageMethod.GetOperationClaims), It.Is <GetOperationClaimsRequest>( g => g.PackageSourceRepository == expectation.SourceRepository.PackageSource.Source), It.IsAny <CancellationToken>())) .ReturnsAsync(new GetOperationClaimsResponse(expectation.OperationClaims.ToArray())); if (expectation.OperationClaims.Any()) { _connection.Setup(x => x.SendRequestAndReceiveResponseAsync <SetCredentialsRequest, SetCredentialsResponse>( It.Is <MessageMethod>(m => m == MessageMethod.SetCredentials), It.Is <SetCredentialsRequest>( g => g.PackageSourceRepository == expectation.SourceRepository.PackageSource.Source), It.IsAny <CancellationToken>())) .ReturnsAsync(new SetCredentialsResponse(MessageResponseCode.Success)); } } _plugin = new Mock <IPlugin>(MockBehavior.Strict); _plugin.Setup(x => x.Dispose()); _plugin.SetupGet(x => x.Connection) .Returns(_connection.Object); _plugin.SetupGet(x => x.Id) .Returns("id"); _factory = new Mock <IPluginFactory>(MockBehavior.Strict); _factory.Setup(x => x.Dispose()); _factory.Setup(x => x.GetOrCreateAsync( It.Is <string>(p => p == pluginFilePath), It.IsNotNull <IEnumerable <string> >(), It.IsNotNull <IRequestHandlers>(), It.IsNotNull <ConnectionOptions>(), It.IsAny <CancellationToken>())) .ReturnsAsync(_plugin.Object); _testDirectory = TestDirectory.Create(); PluginManager = new PluginManager( _reader.Object, new Lazy <IPluginDiscoverer>(() => _pluginDiscoverer.Object), (TimeSpan idleTimeout) => _factory.Object, new Lazy <string>(() => _testDirectory.Path)); Provider = new PluginResourceProvider(PluginManager); }
public void After_IsEmpty() { var provider = new PluginResourceProvider(); Assert.Empty(provider.After); }
public void Before_IsEmpty() { var provider = new PluginResourceProvider(); Assert.Empty(provider.Before); }