public void FetchShuldReturnNullForUnknownAssembly() { AssemblyContainer tested = new AssemblyContainer(); byte[] returned = tested.Fetch(Assembly.GetAssembly(typeof(MockPlugin1)).FullName); Assert.IsNull(returned); }
public void FetchShouldReturnExistingAssembly() { AssemblyContainer tested = new AssemblyContainer(); Assembly assembly = Assembly.GetAssembly(typeof(MockPlugin1)); tested.Add(assembly.Location); byte[] returned = tested.Fetch(assembly.FullName); Assert.IsNotNull(returned); }
public void ShouldLogToWarnWhenTryingToFetchUnknownAssembly() { var assemblyname = GetType().Assembly.FullName; var pattern = new Regex(@"^Unable to fetch .+, assembly not known.$"); AssemblyContainer tested = new AssemblyContainer(); MockLog log = new MockLog(tested); tested.Fetch(GetType().Assembly.FullName); Assert.IsTrue(log.Any(x => x.Level == MockLog.Level.Warn && pattern.IsMatch(x.Message) && x.Message.Contains(assemblyname))); }
public void ShouldLogToDebugWhenAssemblyIsFetched() { var assemblyname = GetType().Assembly.FullName; var path = GetType().Assembly.Location; var pattern = new Regex(@"^Assembly fetched .+ \(\d+ bytes read from .*\)$"); AssemblyContainer tested = new AssemblyContainer(); MockLog log = new MockLog(tested); tested.Add(path); tested.Fetch(assemblyname); Assert.IsTrue(log.Any(x => x.Level == MockLog.Level.Debug && pattern.IsMatch(x.Message) && x.Message.Contains(path) && x.Message.Contains(assemblyname))); }
public void ShouldLogToErrorWhenAllKnownPathsToAssemblyDoesNotExist() { var assemblyname = GetType().Assembly.FullName; var path = Guid.NewGuid().ToString() + ".dll"; var pattern = new Regex(@"^Unable to fetch .+, file not found in these locations:$"); try { File.Copy(GetType().Assembly.Location, path); AssemblyContainer tested = new AssemblyContainer(); MockLog log = new MockLog(tested); tested.Add(path); File.Delete(path); tested.Fetch(assemblyname); Assert.IsTrue(log.Any(x => x.Level == MockLog.Level.Error && pattern.IsMatch(x.Message) && x.Message.Contains(assemblyname))); Assert.IsTrue(log.Any(x => x.Level == MockLog.Level.Error && x.Message.StartsWith(" --> ") && x.Message.EndsWith(path))); } finally { File.Delete(path); } }
public void FetchShouldLogExceptionsAsErrors() { var assemblyname = GetType().Assembly.FullName; var path = Guid.NewGuid().ToString() + ".dll"; var pattern = new Regex(@"^Exception while fetching .+ (.+) .*$"); try { File.Copy(GetType().Assembly.Location, path); AssemblyContainer tested = new AssemblyContainer(); MockLog log = new MockLog(tested); tested.Add(path); using (var file = File.Open(path, FileMode.Open, FileAccess.Write, FileShare.None)) { tested.Fetch(assemblyname); Assert.IsTrue(log.Any(x => x.Level == MockLog.Level.Error && pattern.IsMatch(x.Message) && x.Message.Contains(assemblyname) && x.Message.Contains(path))); } } finally { File.Delete(path); } }
public void FetchShouldReturnNullForUnreadableAssembly() { AssemblyContainer tested = new AssemblyContainer(); Assembly assembly = Assembly.GetAssembly(typeof(MockPlugin1)); string location = assembly.Location.Replace(".dll", ".mock.dll"); File.Copy(assembly.Location, location, true); try { tested.Add(location); using (Stream locking = FileExtension.WaitAndOpen(location, FileMode.Open, FileAccess.Read, FileShare.None, TimeSpan.FromSeconds(5))) { byte[] returned = tested.Fetch(Assembly.GetAssembly(typeof(MockPlugin1)).FullName); Assert.IsNull(returned); } } finally { File.Delete(location); } }