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);
            }
        }
 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 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 FetchShuldReturnNullForUnknownAssembly()
 {
     AssemblyContainer tested = new AssemblyContainer();
       byte[] returned = tested.Fetch(Assembly.GetAssembly(typeof(MockPlugin1)).FullName);
       Assert.IsNull(returned);
 }
        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);
              }
        }
 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 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);
       }
 }