From e4940383fb15da7e7ed54268a4e7ea2f925e2f43 Mon Sep 17 00:00:00 2001 From: dbuechel Date: Fri, 16 Mar 2018 09:28:33 +0100 Subject: [PATCH] SEBWIN-219: Implemented unit tests for proxies in core library. --- .../Communication/ClientHost.cs | 2 +- SafeExamBrowser.Client/CompositionRoot.cs | 2 +- .../{ => Proxies}/BaseProxyImpl.cs | 4 +- .../{ => Proxies}/BaseProxyTests.cs | 2 +- .../Communication/Proxies/ClientProxyTests.cs | 90 ++++++++++ .../Proxies/RuntimeProxyTests.cs | 161 ++++++++++++++++++ .../Proxies/ServiceProxyTests.cs | 85 +++++++++ .../SafeExamBrowser.Core.UnitTests.csproj | 7 +- .../Communication/{ => Hosts}/BaseHost.cs | 2 +- .../Communication/{ => Proxies}/BaseProxy.cs | 2 +- .../{ => Proxies}/ClientProxy.cs | 2 +- .../{ => Proxies}/ProxyObjectFactory.cs | 2 +- .../{ => Proxies}/RuntimeProxy.cs | 2 +- .../{ => Proxies}/ServiceProxy.cs | 2 +- .../SafeExamBrowser.Core.csproj | 12 +- .../Communication/ProxyFactory.cs | 2 +- .../Communication/RuntimeHost.cs | 2 +- SafeExamBrowser.Runtime/CompositionRoot.cs | 2 +- 18 files changed, 361 insertions(+), 22 deletions(-) rename SafeExamBrowser.Core.UnitTests/Communication/{ => Proxies}/BaseProxyImpl.cs (92%) rename SafeExamBrowser.Core.UnitTests/Communication/{ => Proxies}/BaseProxyTests.cs (99%) create mode 100644 SafeExamBrowser.Core.UnitTests/Communication/Proxies/ClientProxyTests.cs create mode 100644 SafeExamBrowser.Core.UnitTests/Communication/Proxies/RuntimeProxyTests.cs create mode 100644 SafeExamBrowser.Core.UnitTests/Communication/Proxies/ServiceProxyTests.cs rename SafeExamBrowser.Core/Communication/{ => Hosts}/BaseHost.cs (99%) rename SafeExamBrowser.Core/Communication/{ => Proxies}/BaseProxy.cs (99%) rename SafeExamBrowser.Core/Communication/{ => Proxies}/ClientProxy.cs (96%) rename SafeExamBrowser.Core/Communication/{ => Proxies}/ProxyObjectFactory.cs (94%) rename SafeExamBrowser.Core/Communication/{ => Proxies}/RuntimeProxy.cs (97%) rename SafeExamBrowser.Core/Communication/{ => Proxies}/ServiceProxy.cs (97%) diff --git a/SafeExamBrowser.Client/Communication/ClientHost.cs b/SafeExamBrowser.Client/Communication/ClientHost.cs index 2a9d4446..47f5395c 100644 --- a/SafeExamBrowser.Client/Communication/ClientHost.cs +++ b/SafeExamBrowser.Client/Communication/ClientHost.cs @@ -11,7 +11,7 @@ using SafeExamBrowser.Contracts.Communication; using SafeExamBrowser.Contracts.Communication.Data; using SafeExamBrowser.Contracts.Communication.Hosts; using SafeExamBrowser.Contracts.Logging; -using SafeExamBrowser.Core.Communication; +using SafeExamBrowser.Core.Communication.Hosts; namespace SafeExamBrowser.Client.Communication { diff --git a/SafeExamBrowser.Client/CompositionRoot.cs b/SafeExamBrowser.Client/CompositionRoot.cs index 82d5000c..9279a868 100644 --- a/SafeExamBrowser.Client/CompositionRoot.cs +++ b/SafeExamBrowser.Client/CompositionRoot.cs @@ -26,7 +26,7 @@ using SafeExamBrowser.Contracts.UserInterface; using SafeExamBrowser.Contracts.UserInterface.MessageBox; using SafeExamBrowser.Contracts.WindowsApi; using SafeExamBrowser.Core.Behaviour.OperationModel; -using SafeExamBrowser.Core.Communication; +using SafeExamBrowser.Core.Communication.Proxies; using SafeExamBrowser.Core.I18n; using SafeExamBrowser.Core.Logging; using SafeExamBrowser.Monitoring.Display; diff --git a/SafeExamBrowser.Core.UnitTests/Communication/BaseProxyImpl.cs b/SafeExamBrowser.Core.UnitTests/Communication/Proxies/BaseProxyImpl.cs similarity index 92% rename from SafeExamBrowser.Core.UnitTests/Communication/BaseProxyImpl.cs rename to SafeExamBrowser.Core.UnitTests/Communication/Proxies/BaseProxyImpl.cs index 4bcaf3a8..acf01418 100644 --- a/SafeExamBrowser.Core.UnitTests/Communication/BaseProxyImpl.cs +++ b/SafeExamBrowser.Core.UnitTests/Communication/Proxies/BaseProxyImpl.cs @@ -10,9 +10,9 @@ using System; using SafeExamBrowser.Contracts.Communication.Data; using SafeExamBrowser.Contracts.Communication.Proxies; using SafeExamBrowser.Contracts.Logging; -using SafeExamBrowser.Core.Communication; +using SafeExamBrowser.Core.Communication.Proxies; -namespace SafeExamBrowser.Core.UnitTests.Communication +namespace SafeExamBrowser.Core.UnitTests.Communication.Proxies { internal class BaseProxyImpl : BaseProxy { diff --git a/SafeExamBrowser.Core.UnitTests/Communication/BaseProxyTests.cs b/SafeExamBrowser.Core.UnitTests/Communication/Proxies/BaseProxyTests.cs similarity index 99% rename from SafeExamBrowser.Core.UnitTests/Communication/BaseProxyTests.cs rename to SafeExamBrowser.Core.UnitTests/Communication/Proxies/BaseProxyTests.cs index d4e594fe..96c5b8e7 100644 --- a/SafeExamBrowser.Core.UnitTests/Communication/BaseProxyTests.cs +++ b/SafeExamBrowser.Core.UnitTests/Communication/Proxies/BaseProxyTests.cs @@ -15,7 +15,7 @@ using SafeExamBrowser.Contracts.Communication.Data; using SafeExamBrowser.Contracts.Communication.Proxies; using SafeExamBrowser.Contracts.Logging; -namespace SafeExamBrowser.Core.UnitTests.Communication +namespace SafeExamBrowser.Core.UnitTests.Communication.Proxies { [TestClass] public class BaseProxyTests diff --git a/SafeExamBrowser.Core.UnitTests/Communication/Proxies/ClientProxyTests.cs b/SafeExamBrowser.Core.UnitTests/Communication/Proxies/ClientProxyTests.cs new file mode 100644 index 00000000..97205118 --- /dev/null +++ b/SafeExamBrowser.Core.UnitTests/Communication/Proxies/ClientProxyTests.cs @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2018 ETH Zürich, Educational Development and Technology (LET) + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +using System; +using System.ServiceModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; +using SafeExamBrowser.Contracts.Communication; +using SafeExamBrowser.Contracts.Communication.Data; +using SafeExamBrowser.Contracts.Communication.Proxies; +using SafeExamBrowser.Contracts.Logging; +using SafeExamBrowser.Core.Communication.Proxies; + +namespace SafeExamBrowser.Core.UnitTests.Communication.Proxies +{ + [TestClass] + public class ClientProxyTests + { + private Mock logger; + private Mock proxyObjectFactory; + private Mock proxy; + private ClientProxy sut; + + [TestInitialize] + public void Initialize() + { + var response = new ConnectionResponse + { + CommunicationToken = Guid.NewGuid(), + ConnectionEstablished = true + }; + + logger = new Mock(); + proxyObjectFactory = new Mock(); + proxy = new Mock(); + + proxy.Setup(p => p.Connect(It.IsAny())).Returns(response); + proxy.As().Setup(o => o.State).Returns(CommunicationState.Opened); + proxyObjectFactory.Setup(f => f.CreateObject(It.IsAny())).Returns(proxy.Object); + + sut = new ClientProxy("net.pipe://random/address/here", proxyObjectFactory.Object, logger.Object); + sut.Connect(Guid.NewGuid()); + } + + [TestMethod] + public void MustCorrectlyInitiateShutdown() + { + proxy.Setup(p => p.Send(It.Is(m => m.Purport == SimpleMessagePurport.Shutdown))).Returns(new SimpleResponse(SimpleResponsePurport.Acknowledged)); + + sut.InitiateShutdown(); + + proxy.Verify(p => p.Send(It.Is(m => m.Purport == SimpleMessagePurport.Shutdown)), Times.Once); + } + + [TestMethod] + [ExpectedException(typeof(CommunicationException))] + public void MustFailIfShutdownCommandNotAcknowledged() + { + proxy.Setup(p => p.Send(It.Is(m => m.Purport == SimpleMessagePurport.Shutdown))).Returns(null); + + sut.InitiateShutdown(); + } + + [TestMethod] + public void MustCorrectlyRequestAuthentication() + { + proxy.Setup(p => p.Send(It.Is(m => m.Purport == SimpleMessagePurport.Authenticate))).Returns(new AuthenticationResponse()); + + var response = sut.RequestAuthentication(); + + proxy.Verify(p => p.Send(It.Is(m => m.Purport == SimpleMessagePurport.Authenticate)), Times.Once); + + Assert.IsInstanceOfType(response, typeof(AuthenticationResponse)); + } + + [TestMethod] + [ExpectedException(typeof(CommunicationException))] + public void MustFailIfAuthenticationCommandNotFollowed() + { + proxy.Setup(p => p.Send(It.Is(m => m.Purport == SimpleMessagePurport.Authenticate))).Returns(null); + + sut.RequestAuthentication(); + } + } +} diff --git a/SafeExamBrowser.Core.UnitTests/Communication/Proxies/RuntimeProxyTests.cs b/SafeExamBrowser.Core.UnitTests/Communication/Proxies/RuntimeProxyTests.cs new file mode 100644 index 00000000..7a22d067 --- /dev/null +++ b/SafeExamBrowser.Core.UnitTests/Communication/Proxies/RuntimeProxyTests.cs @@ -0,0 +1,161 @@ +/* + * Copyright (c) 2018 ETH Zürich, Educational Development and Technology (LET) + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +using System; +using System.ServiceModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; +using SafeExamBrowser.Contracts.Communication; +using SafeExamBrowser.Contracts.Communication.Data; +using SafeExamBrowser.Contracts.Communication.Proxies; +using SafeExamBrowser.Contracts.Configuration; +using SafeExamBrowser.Contracts.Logging; +using SafeExamBrowser.Core.Communication.Proxies; + +namespace SafeExamBrowser.Core.UnitTests.Communication.Proxies +{ + [TestClass] + public class RuntimeProxyTests + { + private Mock logger; + private Mock proxyObjectFactory; + private Mock proxy; + private RuntimeProxy sut; + + [TestInitialize] + public void Initialize() + { + var response = new ConnectionResponse + { + CommunicationToken = Guid.NewGuid(), + ConnectionEstablished = true + }; + + logger = new Mock(); + proxyObjectFactory = new Mock(); + proxy = new Mock(); + + proxy.Setup(p => p.Connect(It.IsAny())).Returns(response); + proxy.As().Setup(o => o.State).Returns(CommunicationState.Opened); + proxyObjectFactory.Setup(f => f.CreateObject(It.IsAny())).Returns(proxy.Object); + + sut = new RuntimeProxy("net.pipe://random/address/here", proxyObjectFactory.Object, logger.Object); + sut.Connect(Guid.NewGuid()); + } + + [TestMethod] + public void MustCorrectlyRetrieveConfiguration() + { + var response = new ConfigurationResponse + { + Configuration = new ClientConfiguration() + }; + + proxy.Setup(p => p.Send(It.Is(m => m.Purport == SimpleMessagePurport.ConfigurationNeeded))).Returns(response); + + var configuration = sut.GetConfiguration(); + + proxy.Verify(p => p.Send(It.Is(m => m.Purport == SimpleMessagePurport.ConfigurationNeeded)), Times.Once); + + Assert.IsInstanceOfType(configuration, typeof(ClientConfiguration)); + } + + [TestMethod] + [ExpectedException(typeof(CommunicationException))] + public void MustFailIfConfigurationNotRetrieved() + { + proxy.Setup(p => p.Send(It.Is(m => m.Purport == SimpleMessagePurport.ConfigurationNeeded))).Returns(null); + + sut.GetConfiguration(); + } + + [TestMethod] + public void MustCorrectlyInformClientReady() + { + proxy.Setup(p => p.Send(It.Is(m => m.Purport == SimpleMessagePurport.ClientIsReady))).Returns(new SimpleResponse(SimpleResponsePurport.Acknowledged)); + + sut.InformClientReady(); + + proxy.Verify(p => p.Send(It.Is(m => m.Purport == SimpleMessagePurport.ClientIsReady)), Times.Once); + } + + [TestMethod] + [ExpectedException(typeof(CommunicationException))] + public void MustFailIfClientReadyNotAcknowledged() + { + proxy.Setup(p => p.Send(It.Is(m => m.Purport == SimpleMessagePurport.ClientIsReady))).Returns(null); + + sut.InformClientReady(); + } + + [TestMethod] + public void MustCorrectlyRequestReconfiguration() + { + var url = "sebs://some/url.seb"; + var response = new ReconfigurationResponse + { + Accepted = true + }; + + proxy.Setup(p => p.Send(It.Is(m => m.ConfigurationUrl == url))).Returns(response); + + var accepted = sut.RequestReconfiguration(url); + + proxy.Verify(p => p.Send(It.Is(m => m.ConfigurationUrl == url)), Times.Once); + + Assert.IsTrue(accepted); + } + + [TestMethod] + public void MustCorrectlyHandleDeniedReconfigurationRequest() + { + var url = "sebs://some/url.seb"; + var response = new ReconfigurationResponse + { + Accepted = false + }; + + proxy.Setup(p => p.Send(It.Is(m => m.ConfigurationUrl == url))).Returns(response); + + var accepted = sut.RequestReconfiguration(url); + + Assert.IsFalse(accepted); + } + + [TestMethod] + public void MustNotFailIfIncorrectResponseToReconfigurationRequest() + { + var url = "sebs://some/url.seb"; + + proxy.Setup(p => p.Send(It.Is(m => m.ConfigurationUrl == url))).Returns(null); + + var accepted = sut.RequestReconfiguration(url); + + Assert.IsFalse(accepted); + } + + [TestMethod] + public void MustCorrectlyRequestShutdown() + { + proxy.Setup(p => p.Send(It.Is(m => m.Purport == SimpleMessagePurport.RequestShutdown))).Returns(new SimpleResponse(SimpleResponsePurport.Acknowledged)); + + sut.RequestShutdown(); + + proxy.Verify(p => p.Send(It.Is(m => m.Purport == SimpleMessagePurport.RequestShutdown)), Times.Once); + } + + [TestMethod] + [ExpectedException(typeof(CommunicationException))] + public void MustFailIfShutdownRequestNotAcknowledged() + { + proxy.Setup(p => p.Send(It.Is(m => m.Purport == SimpleMessagePurport.RequestShutdown))).Returns(null); + + sut.RequestShutdown(); + } + } +} diff --git a/SafeExamBrowser.Core.UnitTests/Communication/Proxies/ServiceProxyTests.cs b/SafeExamBrowser.Core.UnitTests/Communication/Proxies/ServiceProxyTests.cs new file mode 100644 index 00000000..b610838f --- /dev/null +++ b/SafeExamBrowser.Core.UnitTests/Communication/Proxies/ServiceProxyTests.cs @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2018 ETH Zürich, Educational Development and Technology (LET) + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +using System; +using System.ServiceModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; +using SafeExamBrowser.Contracts.Communication; +using SafeExamBrowser.Contracts.Communication.Data; +using SafeExamBrowser.Contracts.Communication.Proxies; +using SafeExamBrowser.Contracts.Logging; +using SafeExamBrowser.Core.Communication.Proxies; + +namespace SafeExamBrowser.Core.UnitTests.Communication.Proxies +{ + [TestClass] + public class ServiceProxyTests + { + private Mock logger; + private Mock proxyObjectFactory; + private Mock proxy; + private ServiceProxy sut; + + [TestInitialize] + public void Initialize() + { + var response = new ConnectionResponse + { + CommunicationToken = Guid.NewGuid(), + ConnectionEstablished = true + }; + + logger = new Mock(); + proxyObjectFactory = new Mock(); + proxy = new Mock(); + + proxy.Setup(p => p.Connect(It.IsAny())).Returns(response); + proxy.As().Setup(o => o.State).Returns(CommunicationState.Opened); + proxyObjectFactory.Setup(f => f.CreateObject(It.IsAny())).Returns(proxy.Object); + + sut = new ServiceProxy("net.pipe://random/address/here", proxyObjectFactory.Object, logger.Object); + } + + [TestMethod] + public void MustIgnoreConnectIfUnavailable() + { + sut.Ignore = true; + sut.Connect(Guid.NewGuid()); + + proxy.Verify(p => p.Connect(It.IsAny()), Times.Never); + } + + [TestMethod] + public void MustIgnoreDisconnectIfUnavailable() + { + sut.Ignore = true; + sut.Disconnect(); + + proxy.Verify(p => p.Disconnect(It.IsAny()), Times.Never); + } + + [TestMethod] + public void MustIgnoreStartSessionIfUnavaiable() + { + sut.Ignore = true; + sut.StartSession(Guid.Empty, null); + + proxy.Verify(p => p.Send(It.IsAny()), Times.Never); + } + + [TestMethod] + public void MustIgnoreStopSessionIfUnavaiable() + { + sut.Ignore = true; + sut.StopSession(Guid.Empty); + + proxy.Verify(p => p.Send(It.IsAny()), Times.Never); + } + } +} diff --git a/SafeExamBrowser.Core.UnitTests/SafeExamBrowser.Core.UnitTests.csproj b/SafeExamBrowser.Core.UnitTests/SafeExamBrowser.Core.UnitTests.csproj index 85b3e7de..dc7fb843 100644 --- a/SafeExamBrowser.Core.UnitTests/SafeExamBrowser.Core.UnitTests.csproj +++ b/SafeExamBrowser.Core.UnitTests/SafeExamBrowser.Core.UnitTests.csproj @@ -84,8 +84,11 @@ - - + + + + + diff --git a/SafeExamBrowser.Core/Communication/BaseHost.cs b/SafeExamBrowser.Core/Communication/Hosts/BaseHost.cs similarity index 99% rename from SafeExamBrowser.Core/Communication/BaseHost.cs rename to SafeExamBrowser.Core/Communication/Hosts/BaseHost.cs index 55e028e4..93540c09 100644 --- a/SafeExamBrowser.Core/Communication/BaseHost.cs +++ b/SafeExamBrowser.Core/Communication/Hosts/BaseHost.cs @@ -13,7 +13,7 @@ using SafeExamBrowser.Contracts.Communication; using SafeExamBrowser.Contracts.Communication.Data; using SafeExamBrowser.Contracts.Logging; -namespace SafeExamBrowser.Core.Communication +namespace SafeExamBrowser.Core.Communication.Hosts { /// /// The base implementation of an . Runs the host on a new, separate thread. diff --git a/SafeExamBrowser.Core/Communication/BaseProxy.cs b/SafeExamBrowser.Core/Communication/Proxies/BaseProxy.cs similarity index 99% rename from SafeExamBrowser.Core/Communication/BaseProxy.cs rename to SafeExamBrowser.Core/Communication/Proxies/BaseProxy.cs index dd4ae85f..cca1ad89 100644 --- a/SafeExamBrowser.Core/Communication/BaseProxy.cs +++ b/SafeExamBrowser.Core/Communication/Proxies/BaseProxy.cs @@ -14,7 +14,7 @@ using SafeExamBrowser.Contracts.Communication.Data; using SafeExamBrowser.Contracts.Communication.Proxies; using SafeExamBrowser.Contracts.Logging; -namespace SafeExamBrowser.Core.Communication +namespace SafeExamBrowser.Core.Communication.Proxies { /// /// Base implementation of an . diff --git a/SafeExamBrowser.Core/Communication/ClientProxy.cs b/SafeExamBrowser.Core/Communication/Proxies/ClientProxy.cs similarity index 96% rename from SafeExamBrowser.Core/Communication/ClientProxy.cs rename to SafeExamBrowser.Core/Communication/Proxies/ClientProxy.cs index 0cc47a01..71f243d2 100644 --- a/SafeExamBrowser.Core/Communication/ClientProxy.cs +++ b/SafeExamBrowser.Core/Communication/Proxies/ClientProxy.cs @@ -11,7 +11,7 @@ using SafeExamBrowser.Contracts.Communication.Data; using SafeExamBrowser.Contracts.Communication.Proxies; using SafeExamBrowser.Contracts.Logging; -namespace SafeExamBrowser.Core.Communication +namespace SafeExamBrowser.Core.Communication.Proxies { /// /// Default implementation of the , to be used for communication with the client application component. diff --git a/SafeExamBrowser.Core/Communication/ProxyObjectFactory.cs b/SafeExamBrowser.Core/Communication/Proxies/ProxyObjectFactory.cs similarity index 94% rename from SafeExamBrowser.Core/Communication/ProxyObjectFactory.cs rename to SafeExamBrowser.Core/Communication/Proxies/ProxyObjectFactory.cs index 1c4313b3..b816f8d2 100644 --- a/SafeExamBrowser.Core/Communication/ProxyObjectFactory.cs +++ b/SafeExamBrowser.Core/Communication/Proxies/ProxyObjectFactory.cs @@ -10,7 +10,7 @@ using System.ServiceModel; using SafeExamBrowser.Contracts.Communication; using SafeExamBrowser.Contracts.Communication.Proxies; -namespace SafeExamBrowser.Core.Communication +namespace SafeExamBrowser.Core.Communication.Proxies { /// /// Default implementation of the utilizing WCF (). diff --git a/SafeExamBrowser.Core/Communication/RuntimeProxy.cs b/SafeExamBrowser.Core/Communication/Proxies/RuntimeProxy.cs similarity index 97% rename from SafeExamBrowser.Core/Communication/RuntimeProxy.cs rename to SafeExamBrowser.Core/Communication/Proxies/RuntimeProxy.cs index b1f4ce1a..cb4afaaa 100644 --- a/SafeExamBrowser.Core/Communication/RuntimeProxy.cs +++ b/SafeExamBrowser.Core/Communication/Proxies/RuntimeProxy.cs @@ -12,7 +12,7 @@ using SafeExamBrowser.Contracts.Communication.Proxies; using SafeExamBrowser.Contracts.Configuration; using SafeExamBrowser.Contracts.Logging; -namespace SafeExamBrowser.Core.Communication +namespace SafeExamBrowser.Core.Communication.Proxies { /// /// Default implementation of the , to be used for communication with the runtime application component. diff --git a/SafeExamBrowser.Core/Communication/ServiceProxy.cs b/SafeExamBrowser.Core/Communication/Proxies/ServiceProxy.cs similarity index 97% rename from SafeExamBrowser.Core/Communication/ServiceProxy.cs rename to SafeExamBrowser.Core/Communication/Proxies/ServiceProxy.cs index 9756ff34..2a4740e8 100644 --- a/SafeExamBrowser.Core/Communication/ServiceProxy.cs +++ b/SafeExamBrowser.Core/Communication/Proxies/ServiceProxy.cs @@ -11,7 +11,7 @@ using SafeExamBrowser.Contracts.Communication.Proxies; using SafeExamBrowser.Contracts.Configuration.Settings; using SafeExamBrowser.Contracts.Logging; -namespace SafeExamBrowser.Core.Communication +namespace SafeExamBrowser.Core.Communication.Proxies { /// /// Default implementation of the , to be used for communication with the service application component. diff --git a/SafeExamBrowser.Core/SafeExamBrowser.Core.csproj b/SafeExamBrowser.Core/SafeExamBrowser.Core.csproj index 77384578..7f22750b 100644 --- a/SafeExamBrowser.Core/SafeExamBrowser.Core.csproj +++ b/SafeExamBrowser.Core/SafeExamBrowser.Core.csproj @@ -60,12 +60,12 @@ - - - - - - + + + + + + diff --git a/SafeExamBrowser.Runtime/Communication/ProxyFactory.cs b/SafeExamBrowser.Runtime/Communication/ProxyFactory.cs index 72957b31..56d50504 100644 --- a/SafeExamBrowser.Runtime/Communication/ProxyFactory.cs +++ b/SafeExamBrowser.Runtime/Communication/ProxyFactory.cs @@ -8,7 +8,7 @@ using SafeExamBrowser.Contracts.Communication.Proxies; using SafeExamBrowser.Contracts.Logging; -using SafeExamBrowser.Core.Communication; +using SafeExamBrowser.Core.Communication.Proxies; using SafeExamBrowser.Core.Logging; namespace SafeExamBrowser.Runtime.Communication diff --git a/SafeExamBrowser.Runtime/Communication/RuntimeHost.cs b/SafeExamBrowser.Runtime/Communication/RuntimeHost.cs index b8e7d935..c2876f3b 100644 --- a/SafeExamBrowser.Runtime/Communication/RuntimeHost.cs +++ b/SafeExamBrowser.Runtime/Communication/RuntimeHost.cs @@ -14,7 +14,7 @@ using SafeExamBrowser.Contracts.Communication.Hosts; using SafeExamBrowser.Contracts.Configuration; using SafeExamBrowser.Contracts.Configuration.Settings; using SafeExamBrowser.Contracts.Logging; -using SafeExamBrowser.Core.Communication; +using SafeExamBrowser.Core.Communication.Hosts; namespace SafeExamBrowser.Runtime.Communication { diff --git a/SafeExamBrowser.Runtime/CompositionRoot.cs b/SafeExamBrowser.Runtime/CompositionRoot.cs index e62741a9..1f3de615 100644 --- a/SafeExamBrowser.Runtime/CompositionRoot.cs +++ b/SafeExamBrowser.Runtime/CompositionRoot.cs @@ -14,7 +14,7 @@ using SafeExamBrowser.Contracts.Behaviour.OperationModel; using SafeExamBrowser.Contracts.Configuration; using SafeExamBrowser.Contracts.Logging; using SafeExamBrowser.Core.Behaviour.OperationModel; -using SafeExamBrowser.Core.Communication; +using SafeExamBrowser.Core.Communication.Proxies; using SafeExamBrowser.Core.I18n; using SafeExamBrowser.Core.Logging; using SafeExamBrowser.Runtime.Behaviour;