public void EmptySaveTest() { var key = new Mock<IRegistryKey>(); var subkey = new Mock<IRegistryKey>(); key.Setup(k => k.CreateSubKey(It.IsAny<string>())).Returns(subkey.Object); var package = new Mock<IReAttachPackage>(); package.Setup(p => p.OpenUserRegistryRoot()).Returns(key.Object); var repository = new ReAttachRegistryRepository(package.Object); var targets = new ReAttachTargetList(ReAttachConstants.ReAttachHistorySize); Assert.IsTrue(repository.SaveTargets(targets)); key.Verify(k => k.CreateSubKey(It.IsAny<string>()), Times.Once()); subkey.Verify(k => k.SetValue(It.IsAny<string>(), It.IsAny<string>()), Times.Never()); subkey.Verify(k => k.Close(), Times.Once()); }
public void SaveTest() { var key = new Mock<IRegistryKey>(); var subkey = new Mock<IRegistryKey>(); key.Setup(k => k.CreateSubKey(It.IsAny<string>())).Returns(subkey.Object); var package = new Mock<IReAttachPackage>(); package.Setup(p => p.OpenUserRegistryRoot()).Returns(key.Object); var repository = new ReAttachRegistryRepository(package.Object); var targets = new ReAttachTargetList(ReAttachConstants.ReAttachHistorySize); for (var i = 1; i <= 3; i++) targets.AddFirst(new ReAttachTarget(i, "path" + i, "user" + i)); Assert.IsTrue(repository.SaveTargets(targets)); key.Verify(k => k.CreateSubKey(It.IsAny<string>()), Times.Once()); for (var i = 1; i <= 3; i++) { subkey.Verify(k => k.SetValue( ReAttachConstants.ReAttachRegistryHistoryKeyPrefix + i, It.IsAny<string>()), Times.Once()); } subkey.Verify(k => k.Close(), Times.Once()); }
public void NullKeysTest() { var package = new Mock<IReAttachPackage>(MockBehavior.Strict); package.Setup(p => p.OpenUserRegistryRoot()).Returns<IRegistryKey>(null); package.Setup(p => p.Reporter).Returns(new ReAttachTraceReporter()); var repository = new ReAttachRegistryRepository(package.Object); Assert.IsNull(repository.LoadTargets(), "Null key should have resulted in empty result from load method."); Assert.IsFalse(repository.SaveTargets(new ReAttachTargetList(ReAttachConstants.ReAttachHistorySize)), "Null key should have resulted in false result from save method."); var key = new Mock<IRegistryKey>(MockBehavior.Strict); key.Setup(k => k.OpenSubKey(It.IsAny<string>())).Returns<IRegistryKey>(null); key.Setup(k => k.CreateSubKey(It.IsAny<string>())).Returns<IRegistryKey>(null); key.Setup(k => k.Close()); package.Setup(p => p.OpenUserRegistryRoot()).Returns(key.Object); Assert.IsNull(repository.LoadTargets(), "Null subkey should have resulted in empty result from load method."); Assert.IsFalse(repository.SaveTargets(new ReAttachTargetList(ReAttachConstants.ReAttachHistorySize)), "Null subkey should have resulted in false result from save method."); }
public void SaveErrorTest() { var key = new Mock<IRegistryKey>(MockBehavior.Strict); var subkey = new Mock<IRegistryKey>(MockBehavior.Strict); key.Setup(k => k.CreateSubKey(It.IsAny<string>())).Returns(subkey.Object); subkey.Setup(k => k.SetValue(It.IsAny<string>(), It.IsAny<string>())).Throws (new SecurityException("Simulating no access when setting value. :)")); subkey.Setup(k => k.DeleteValue(It.IsAny<string>(), It.IsAny<bool>())).Throws (new SecurityException("Simulating no access when deleting value. :)")); var package = new Mock<IReAttachPackage>(); package.Setup(p => p.OpenUserRegistryRoot()).Returns(key.Object); package.Setup(p => p.Reporter).Returns(new ReAttachTraceReporter()); var repository = new ReAttachRegistryRepository(package.Object); var targets = new ReAttachTargetList(ReAttachConstants.ReAttachHistorySize); Assert.IsFalse(repository.SaveTargets(targets)); for (var i = 1; i <= 3; i++) targets.AddFirst(new ReAttachTarget(i, "path" + i, "user" + i)); Assert.IsFalse(repository.SaveTargets(targets)); }
public void SaveTest() { var key = new Mock<IRegistryKey>(); var subkey = new Mock<IRegistryKey>(); key.Setup(k => k.CreateSubKey(It.IsAny<string>())).Returns(subkey.Object); var package = new Mock<IReAttachPackage>(); package.Setup(p => p.OpenUserRegistryRoot()).Returns(key.Object); var repository = new ReAttachRegistryRepository(package.Object); var targets = new ReAttachTargetList(ReAttachConstants.ReAttachHistorySize); for (var i = 1; i <= 3; i++) targets.AddFirst(new ReAttachTarget(i, "path" + i, "user" + i)); Assert.IsTrue(repository.SaveTargets(targets)); key.Verify(k => k.CreateSubKey(It.IsAny<string>()), Times.Once()); for (var i = 1; i <= 3; i++) { var expected = string.Format("{0}{1}{2}{3}{4}{5}{6}", targets[i - 1].ProcessPath, ReAttachConstants.ReAttachRegistrySplitChar, targets[i - 1].ProcessUser, ReAttachConstants.ReAttachRegistrySplitChar, targets[i - 1].ProcessId, ReAttachConstants.ReAttachRegistrySplitChar, targets[i - 1].ServerName); subkey.Verify(k => k.SetValue(ReAttachConstants.ReAttachRegistryHistoryKeyPrefix + i, expected), Times.Once()); } subkey.Verify(k => k.Close(), Times.Once()); }