示例#1
0
            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);
        }