public async Task TryCreate_ReturnsPluginResource() { var expectations = new[] { new PositiveTestExpectation("{}", "https://unit.test", new [] { OperationClaim.DownloadPackage }) }; using (var test = new PluginResourceProviderPositiveTest( pluginFilePath: "a", pluginFileState: PluginFileState.Valid, expectations: expectations)) { var result = await test.Provider.TryCreate(expectations[0].SourceRepository, CancellationToken.None); Assert.True(result.Item1); Assert.IsType <PluginResource>(result.Item2); var pluginResource = (PluginResource)result.Item2; var pluginResult = await pluginResource.GetPluginAsync( OperationClaim.DownloadPackage, CancellationToken.None); Assert.NotNull(pluginResult); Assert.NotNull(pluginResult.Plugin); Assert.NotNull(pluginResult.PluginMulticlientUtilities); } }
public async Task TryCreate_QueriesPluginForEachPackageSourceRepository() { var expectations = new[] { new PositiveTestExpectation("{\"serviceIndex\":1}", "https://1.unit.test", new [] { OperationClaim.DownloadPackage }), new PositiveTestExpectation("{\"serviceIndex\":2}", "https://2.unit.test", Enumerable.Empty <OperationClaim>()), new PositiveTestExpectation("{\"serviceIndex\":3}", "https://3.unit.test", new [] { OperationClaim.DownloadPackage }) }; using (var test = new PluginResourceProviderPositiveTest( pluginFilePath: "a", pluginFileState: PluginFileState.Valid, expectations: expectations)) { IPlugin firstPluginResult = null; IPlugin thirdPluginResult = null; for (var i = 0; i < expectations.Length; ++i) { var expectation = expectations[i]; var result = await test.Provider.TryCreate(expectation.SourceRepository, CancellationToken.None); Assert.True(result.Item1); Assert.IsType <PluginResource>(result.Item2); var pluginResource = (PluginResource)result.Item2; var pluginResult = await pluginResource.GetPluginAsync( OperationClaim.DownloadPackage, CancellationToken.None); switch (i) { case 0: firstPluginResult = pluginResult.Plugin; break; case 1: Assert.Null(pluginResult); break; case 2: thirdPluginResult = pluginResult.Plugin; break; } } Assert.NotNull(firstPluginResult); Assert.Same(firstPluginResult, thirdPluginResult); } }