public async Task GetOrCreateAsync_SuccessfullyHandshakes() { using (var test = await PluginTest.CreateAsync()) { Assert.Equal(PluginProtocolConstants.CurrentVersion, test.Plugin.Connection.ProtocolVersion); } }
public async Task SendRequestAndReceiveResponseAsync_TimesOut() { using (var test = await PluginTest.CreateAsync()) { Assert.Equal(PluginProtocolConstants.CurrentVersion, test.Plugin.Connection.ProtocolVersion); var serviceIndex = JObject.Parse("{}"); var payload = new GetOperationClaimsRequest(packageSourceRepository: "a", serviceIndex: serviceIndex); var stopwatch = Stopwatch.StartNew(); await Assert.ThrowsAsync <TaskCanceledException>( () => test.Plugin.Connection.SendRequestAndReceiveResponseAsync <GetOperationClaimsRequest, GetOperationClaimsResponse>( MessageMethod.GetOperationClaims, payload, test.CancellationToken)); var requestTimeout = test.Plugin.Connection.Options.RequestTimeout; var low = requestTimeout.Add(TimeSpan.FromSeconds(-2)); var high = TimeSpan.FromSeconds(requestTimeout.TotalSeconds * 2); Assert.InRange(stopwatch.Elapsed, low, high); } }
public async Task GetOperationClaims_ReturnsSupportedClaims() { using (var test = await PluginTest.CreateAsync()) { Assert.Equal(PluginProtocolConstants.CurrentVersion, test.Plugin.Connection.ProtocolVersion); // Send canned response var responseSenderTask = Task.Run(() => test.ResponseSender.StartSendingAsync(test.CancellationToken)); await test.ResponseSender.SendAsync( MessageType.Response, MessageMethod.GetOperationClaims, new GetOperationClaimsResponse(new OperationClaim[] { OperationClaim.DownloadPackage })); var serviceIndex = JObject.Parse("{}"); var payload = new GetOperationClaimsRequest(packageSourceRepository: "a", serviceIndex: serviceIndex); var response = await test.Plugin.Connection.SendRequestAndReceiveResponseAsync <GetOperationClaimsRequest, GetOperationClaimsResponse>( MessageMethod.GetOperationClaims, payload, test.CancellationToken); Assert.NotNull(response); Assert.Equal(1, response.Claims.Count); Assert.Equal(OperationClaim.DownloadPackage, response.Claims[0]); } }
public async Task Initialize_Succeeds() { using (var test = await PluginTest.CreateAsync()) { Assert.Equal(PluginProtocolConstants.CurrentVersion, test.Plugin.Connection.ProtocolVersion); // Send canned response var responseSenderTask = Task.Run(() => test.ResponseSender.StartSendingAsync(test.CancellationToken)); await test.ResponseSender.SendAsync( MessageType.Response, MessageMethod.Initialize, new InitializeResponse(MessageResponseCode.Success)); var clientVersion = MinClientVersionUtility.GetNuGetClientVersion().ToNormalizedString(); var culture = CultureInfo.CurrentCulture.Name; var payload = new InitializeRequest( clientVersion, culture, PluginConstants.RequestTimeout); var response = await test.Plugin.Connection.SendRequestAndReceiveResponseAsync <InitializeRequest, InitializeResponse>( MessageMethod.Initialize, payload, test.CancellationToken); Assert.NotNull(response); Assert.Equal(MessageResponseCode.Success, response.ResponseCode); } }
public void Test_GetPluginInfo() { Assert.Throws(typeof(ArgumentNullException), () => { PluginInfo.GetPluginInfo(null); }); var plugin = new PluginTest(); Assert.IsNotNull(plugin); var pluginInfo = PluginInfo.GetPluginInfo(plugin); Assert.AreEqual("GKTests", pluginInfo.Title); Assert.AreEqual("", pluginInfo.Description); Assert.AreEqual("Copyright © 2013-2017 by Sergey V. Zhdanovskih", pluginInfo.Copyright); Assert.AreEqual("1.0.0.0", pluginInfo.Version); }
public async Task Fault_WritesExceptionToConsole() { using (var test = await PluginTest.CreateAsync()) using (var closedEvent = new ManualResetEventSlim(initialState: false)) { Assert.Equal(PluginProtocolConstants.CurrentVersion, test.Plugin.Connection.ProtocolVersion); test.Plugin.Closed += (object sender, EventArgs e) => { closedEvent.Set(); }; // Send canned response // This response is unexpected and will generate a protocol error. var responseSenderTask = Task.Run(() => test.ResponseSender.StartSendingAsync(test.CancellationToken)); await test.ResponseSender.SendAsync( MessageType.Response, MessageMethod.Initialize, new InitializeResponse(MessageResponseCode.Success)); var serviceIndex = JObject.Parse("{}"); var payload = new GetOperationClaimsRequest(packageSourceRepository: "a", serviceIndex: serviceIndex); string consoleOutput; using (var spy = new ConsoleOutputSpy()) { var requestTask = Task.Run( () => test.Plugin.Connection.SendRequestAndReceiveResponseAsync <GetOperationClaimsRequest, GetOperationClaimsResponse>( MessageMethod.GetOperationClaims, payload, test.CancellationToken)); closedEvent.Wait(); consoleOutput = spy.GetOutput(); } Assert.Contains( $"Terminating plugin '{test.Plugin.Name}' due to an unrecoverable fault: NuGet.Protocol.Plugins.ProtocolException: A plugin protocol exception occurred.", consoleOutput); } }
PluginTest pt; //Si. void Start() { pt = GetComponent <PluginTest>(); }
private void Update() { PluginTest p = new PluginTest();; p.doTask(); }