// NAnt - A .NET build tool // Copyright (C) 2001-2002 Gerry Shaw // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Gerry Shaw (gerry_shaw@yahoo.com) // Jay Turpin (JayTurpin@Hotmail.Com) using System; using System.IO; using System.Net; using NUnit.Framework; using NAnt.Core.Tasks; using NAnt.Core.Types; namespace Tests.NAnt.Core.Tasks { [TestFixture] [Category("InetAccess")] public class GetTaskTest : BuildTestBase { string _proxy = null; /// /// Fetch a page from a FTP site. /// /// /// /// [Test] public void Test_GetFtpFile() { GetTask getTask = new GetTask(); getTask.Project = CreateEmptyProject(); getTask.HttpProxy = _proxy; string source = "ftp://ftp.info-zip.org/pub/infozip/zlib/zlib.html"; string destination = Path.GetTempFileName() + ".html"; if (File.Exists(destination)) { File.Delete(destination); } Assert.IsFalse(File.Exists(destination), destination + " exists, but shouldn't."); getTask.Source = source; getTask.DestinationFile = new FileInfo(destination); getTask.UseTimeStamp = false; getTask.IgnoreErrors = true; getTask.Verbose = true;; try { getTask.Execute(); } catch { // error is expected until FTP support is added } // after FTP support is added, do the assert //Assertion.Assert(destination + " should exist, but doesn't.", File.Exists(destination)); } /// /// Fetch a small binary file from a web site. /// File will have same timestamp as on remote server. /// /// /// /// [Test] public void Test_GetLittleFile() { string source = "http://nant.sourceforge.net/arrow.gif"; string destination = Path.GetTempFileName() + ".gif"; { GetTask getTask = new GetTask(); getTask.Project = CreateEmptyProject(); getTask.HttpProxy = _proxy; if (File.Exists(destination)) { File.Delete(destination); } Assert.IsFalse(File.Exists(destination), destination + " exists, but shouldn't"); getTask.Source = source; getTask.DestinationFile = new FileInfo(destination); getTask.UseTimeStamp = true; getTask.IgnoreErrors = true; getTask.Verbose = true;; getTask.Execute(); Assert.IsTrue(File.Exists(destination), destination + " doesn't exist, but should"); } // check for file exists using TimeStampEqual { GetTask getTask = new GetTask(); getTask.Project = CreateEmptyProject(); getTask.HttpProxy = _proxy; Assert.IsTrue(File.Exists(destination), destination + " does not exist, but should"); DateTime fileDateTime = File.GetLastWriteTime(destination); getTask.Source = source; getTask.DestinationFile = new FileInfo(destination); getTask.UseTimeStamp = true; getTask.IgnoreErrors = true; getTask.Verbose = true;; getTask.Execute(); Assert.IsTrue(fileDateTime.Equals(File.GetLastWriteTime(destination)), destination + " lastModified times are different"); } // Test_FileExists_UseTimeStamp { GetTask getTask = new GetTask(); getTask.Project = CreateEmptyProject(); getTask.HttpProxy = _proxy; Assert.IsTrue(File.Exists(destination), destination + " doesn't exist"); File.SetLastWriteTime(destination, DateTime.Parse("01/01/2000 00:00")); DateTime fileDateTime = File.GetLastWriteTime(destination); getTask.Source = source; getTask.DestinationFile = new FileInfo(destination); getTask.UseTimeStamp = true; getTask.IgnoreErrors = true; getTask.Verbose = true;; getTask.Execute(); Assert.IsFalse(fileDateTime.Equals(File.GetLastWriteTime(destination)), destination + " was not fetched"); } // cleanup if (File.Exists(destination)) { File.Delete(destination); } } /// /// Fetch a large binary file from a web site. /// /// /// /// [Test] public void Test_GetBigFile() { GetTask getTask = new GetTask(); getTask.Project = CreateEmptyProject(); string source = "http://www.tolvanen.com/eraser/eraser52.zip"; string destination = Path.GetTempFileName() + ".zip"; if (File.Exists(destination)) { File.Delete(destination); } Assert.IsTrue(!File.Exists(destination), destination + " exists, but shouldn't"); getTask.Source = source; getTask.DestinationFile = new FileInfo(destination); getTask.UseTimeStamp = true; getTask.Verbose = true; getTask.Execute(); Assert.IsTrue(File.Exists(destination), destination + " doesn't exist."); // cleanup if (File.Exists(destination)) { File.Delete(destination); } Assert.IsTrue(!File.Exists(destination), destination + " exists, but shouldn't."); } /// /// Fetch a HTML page from a web site. /// /// /// /// [Test] public void Test_GetHtmlFile() { GetTask getTask = new GetTask(); getTask.Project = CreateEmptyProject(); getTask.HttpProxy = _proxy; string source = "http://nant.sourceforge.net/index.html"; string destination = Path.GetTempFileName() + ".gif"; if (File.Exists(destination)) { File.Delete(destination); } Assert.IsFalse(File.Exists(destination), destination + " exists, but shouldn't."); getTask.Source = source; getTask.DestinationFile = new FileInfo(destination); getTask.UseTimeStamp = false; getTask.IgnoreErrors = true; getTask.Verbose = true;; getTask.Execute(); Assert.IsTrue(File.Exists(destination), destination + " should exist, but doesn't."); // cleanup if (File.Exists(destination)) { File.Delete(destination); } Assert.IsFalse(File.Exists(destination), destination + " exists, but shouldn't."); } /// /// Test Object Accessors /// [Test] public void Test_Accessors() { GetTask getTask = new GetTask(); getTask.Project = CreateEmptyProject(); string proxy = _proxy; getTask.HttpProxy = proxy; Assert.IsTrue(getTask.HttpProxy == proxy, "Proxy accessor bug"); string source = "http://nant.sourceforge.net/arrow.gif"; getTask.Source = source; Assert.IsTrue(getTask.Source == source, "Source accessor bug"); string destination = Path.GetTempFileName(); getTask.DestinationFile = new FileInfo(destination); bool ignoreErrors = true; getTask.IgnoreErrors = ignoreErrors; Assert.IsTrue(getTask.IgnoreErrors == ignoreErrors, "ignoreErrors=true accessor bug"); ignoreErrors = false; getTask.IgnoreErrors = ignoreErrors; Assert.IsTrue(getTask.IgnoreErrors == ignoreErrors, "ignoreErrors=false accessor bug"); bool useTimeStamp = true; getTask.UseTimeStamp = useTimeStamp; Assert.IsTrue(getTask.UseTimeStamp == useTimeStamp, "useTimeStamp=true accessor bug"); useTimeStamp = false; getTask.UseTimeStamp = useTimeStamp; Assert.IsTrue(getTask.UseTimeStamp == useTimeStamp, "useTimeStamp=false accessor bug"); bool verbose = true; getTask.Verbose = verbose; Assert.IsTrue(getTask.Verbose == verbose, "Verbose=true accessor bug"); verbose = false; getTask.Verbose = verbose; Assert.IsTrue(getTask.Verbose == verbose, "Verbose=false accessor bug"); } } }