public static void TestExceptionDuringVersionCallButRecentlyChecked() { FakeWebCaller webCaller = new FakeWebCaller(@"{""U"":""http://localhost/AxCrypt/Downloads.html"",""V"":""2.0.400.0"",""R"":300,""S"":0,""M"":""OK""}"); webCaller.Calling += (object sender, EventArgs e) => { throw new InvalidOperationException("Oops - a forced exception during the call."); }; SetupAssembly.FakeRuntimeEnvironment.WebCallerCreator = () => { return(webCaller); }; DateTime utcNow = DateTime.UtcNow; SetupAssembly.FakeRuntimeEnvironment.TimeFunction = () => { return(utcNow); }; Version thisVersion = new Version(2, 0, 300, 0); Uri restApiUrl = new Uri("http://localhost/RestApi.asxh/axcrypt2version"); Uri updateWebPageUrl = new Uri("http://www.axantum.com/"); VersionEventArgs eventArgs = null; using (UpdateCheck updateCheck = new UpdateCheck(thisVersion)) { updateCheck.VersionUpdate += (object sender, VersionEventArgs e) => { eventArgs = e; }; updateCheck.CheckInBackground(utcNow.AddDays(-2), UpdateCheck.VersionUnknown.ToString(), restApiUrl, updateWebPageUrl); updateCheck.WaitForBackgroundCheckComplete(); } Assert.That(eventArgs, Is.Not.Null, "The VersionUpdate event should be called with non-null VersionEventArgs."); Assert.That(eventArgs.VersionUpdateStatus, Is.EqualTo(VersionUpdateStatus.ShortTimeSinceLastSuccessfulCheck), "Although the check failed, a check was recently made a short time ago."); Assert.That(eventArgs.UpdateWebpageUrl, Is.EqualTo(updateWebPageUrl), "The original URL should be passed since the call failed."); Assert.That(eventArgs.Version, Is.EqualTo(UpdateCheck.VersionUnknown), "An unknown version should be returned, since the call failed."); }
public static void TestOnlyOneCallMadeWhenCheckIsMadeWithCheckPending() { int calls = 0; ManualResetEvent wait = new ManualResetEvent(false); FakeWebCaller webCaller = new FakeWebCaller(@"{""U"":""http://localhost/AxCrypt/Downloads.html"",""V"":""2.0.400.0"",""R"":300,""S"":0,""M"":""OK""}"); webCaller.Calling += (object sender, EventArgs e) => { wait.WaitOne(); ++calls; }; SetupAssembly.FakeRuntimeEnvironment.WebCallerCreator = () => { return(webCaller); }; DateTime utcNow = DateTime.UtcNow; SetupAssembly.FakeRuntimeEnvironment.TimeFunction = () => { return(utcNow); }; Version thisVersion = new Version(2, 0, 300, 0); Version newVersion = new Version(2, 0, 400, 0); Uri restApiUrl = new Uri("http://localhost/RestApi.asxh/axcrypt2version"); Uri updateWebPageUrl = new Uri("http://www.axantum.com/"); VersionEventArgs eventArgs = null; using (UpdateCheck updateCheck = new UpdateCheck(thisVersion)) { updateCheck.VersionUpdate += (object sender, VersionEventArgs e) => { eventArgs = e; }; updateCheck.CheckInBackground(DateTime.MinValue, UpdateCheck.VersionUnknown.ToString(), restApiUrl, updateWebPageUrl); updateCheck.CheckInBackground(DateTime.MinValue, UpdateCheck.VersionUnknown.ToString(), restApiUrl, updateWebPageUrl); wait.Set(); updateCheck.WaitForBackgroundCheckComplete(); } Assert.That(eventArgs, Is.Not.Null, "The VersionUpdate event should be called with non-null VersionEventArgs."); Assert.That(eventArgs.VersionUpdateStatus, Is.EqualTo(VersionUpdateStatus.NewerVersionIsAvailable), "One check should be made, indicating a newer version is available."); Assert.That(eventArgs.UpdateWebpageUrl, Is.EqualTo(new Uri("http://localhost/AxCrypt/Downloads.html")), "The new URL should be passed since a call is made."); Assert.That(calls, Is.EqualTo(1), "The web caller should only be called once."); Assert.That(eventArgs.Version, Is.EqualTo(newVersion), "The new version should be passed back, since one call should be made."); }
public static void TestVersionAlreadyCheckedRecently() { bool wasCalled = false; FakeWebCaller webCaller = new FakeWebCaller(@"{""U"":""http://localhost/AxCrypt/Downloads.html"",""V"":""2.0.400.0"",""R"":300,""S"":0,""M"":""OK""}"); webCaller.Calling += (object sender, EventArgs e) => { wasCalled = true; }; SetupAssembly.FakeRuntimeEnvironment.WebCallerCreator = () => { return(webCaller); }; DateTime utcNow = DateTime.UtcNow; SetupAssembly.FakeRuntimeEnvironment.TimeFunction = () => { return(utcNow); }; Version thisVersion = new Version(2, 0, 300, 0); Uri restApiUrl = new Uri("http://localhost/RestApi.asxh/axcrypt2version"); Uri updateWebPageUrl = new Uri("http://www.axantum.com/"); VersionEventArgs eventArgs = null; using (UpdateCheck updateCheck = new UpdateCheck(thisVersion)) { updateCheck.VersionUpdate += (object sender, VersionEventArgs e) => { eventArgs = e; }; updateCheck.CheckInBackground(utcNow.AddHours(-1), thisVersion.ToString(), restApiUrl, updateWebPageUrl); updateCheck.WaitForBackgroundCheckComplete(); } Assert.That(eventArgs, Is.Not.Null, "The VersionUpdate event should be called with non-null VersionEventArgs."); Assert.That(eventArgs.VersionUpdateStatus, Is.EqualTo(VersionUpdateStatus.IsUpToDateOrRecentlyChecked), "No check should be made, and it is assumed this version is up to date."); Assert.That(eventArgs.UpdateWebpageUrl, Is.EqualTo(updateWebPageUrl), "The original URL should be passed in the event args since no call is made."); Assert.That(wasCalled, Is.False, "The web caller should never be called."); Assert.That(eventArgs.Version, Is.EqualTo(thisVersion), "The new version should not be passed back, since no call should be made."); }
public static void TestVersionAlreadyCheckedRecently() { bool wasCalled = false; FakeWebCaller webCaller = new FakeWebCaller(@"{""U"":""http://localhost/AxCrypt/Downloads.html"",""V"":""2.0.400.0"",""R"":300,""S"":0,""M"":""OK""}"); webCaller.Calling += (object sender, EventArgs e) => { wasCalled = true; }; SetupAssembly.FakeRuntimeEnvironment.WebCallerCreator = () => { return webCaller; }; DateTime utcNow = DateTime.UtcNow; SetupAssembly.FakeRuntimeEnvironment.TimeFunction = () => { return utcNow; }; Version thisVersion = new Version(2, 0, 300, 0); Uri restApiUrl = new Uri("http://localhost/RestApi.asxh/axcrypt2version"); Uri updateWebPageUrl = new Uri("http://www.axantum.com/"); VersionEventArgs eventArgs = null; using (UpdateCheck updateCheck = new UpdateCheck(thisVersion)) { updateCheck.VersionUpdate += (object sender, VersionEventArgs e) => { eventArgs = e; }; updateCheck.CheckInBackground(utcNow.AddHours(-1), thisVersion.ToString(), restApiUrl, updateWebPageUrl); updateCheck.WaitForBackgroundCheckComplete(); } Assert.That(eventArgs, Is.Not.Null, "The VersionUpdate event should be called with non-null VersionEventArgs."); Assert.That(eventArgs.VersionUpdateStatus, Is.EqualTo(VersionUpdateStatus.IsUpToDateOrRecentlyChecked), "No check should be made, and it is assumed this version is up to date."); Assert.That(eventArgs.UpdateWebpageUrl, Is.EqualTo(updateWebPageUrl), "The original URL should be passed in the event args since no call is made."); Assert.That(wasCalled, Is.False, "The web caller should never be called."); Assert.That(eventArgs.Version, Is.EqualTo(thisVersion), "The new version should not be passed back, since no call should be made."); }
public static void TestOnlyOneCallMadeWhenCheckIsMadeWithCheckPending() { int calls = 0; ManualResetEvent wait = new ManualResetEvent(false); FakeWebCaller webCaller = new FakeWebCaller(@"{""U"":""http://localhost/AxCrypt/Downloads.html"",""V"":""2.0.400.0"",""R"":300,""S"":0,""M"":""OK""}"); webCaller.Calling += (object sender, EventArgs e) => { wait.WaitOne(); ++calls; }; SetupAssembly.FakeRuntimeEnvironment.WebCallerCreator = () => { return webCaller; }; DateTime utcNow = DateTime.UtcNow; SetupAssembly.FakeRuntimeEnvironment.TimeFunction = () => { return utcNow; }; Version thisVersion = new Version(2, 0, 300, 0); Version newVersion = new Version(2, 0, 400, 0); Uri restApiUrl = new Uri("http://localhost/RestApi.asxh/axcrypt2version"); Uri updateWebPageUrl = new Uri("http://www.axantum.com/"); VersionEventArgs eventArgs = null; using (UpdateCheck updateCheck = new UpdateCheck(thisVersion)) { updateCheck.VersionUpdate += (object sender, VersionEventArgs e) => { eventArgs = e; }; updateCheck.CheckInBackground(DateTime.MinValue, UpdateCheck.VersionUnknown.ToString(), restApiUrl, updateWebPageUrl); updateCheck.CheckInBackground(DateTime.MinValue, UpdateCheck.VersionUnknown.ToString(), restApiUrl, updateWebPageUrl); wait.Set(); updateCheck.WaitForBackgroundCheckComplete(); } Assert.That(eventArgs, Is.Not.Null, "The VersionUpdate event should be called with non-null VersionEventArgs."); Assert.That(eventArgs.VersionUpdateStatus, Is.EqualTo(VersionUpdateStatus.NewerVersionIsAvailable), "One check should be made, indicating a newer version is available."); Assert.That(eventArgs.UpdateWebpageUrl, Is.EqualTo(new Uri("http://localhost/AxCrypt/Downloads.html")), "The new URL should be passed since a call is made."); Assert.That(calls, Is.EqualTo(1), "The web caller should only be called once."); Assert.That(eventArgs.Version, Is.EqualTo(newVersion), "The new version should be passed back, since one call should be made."); }
public static void TestExceptionDuringVersionCallButRecentlyChecked() { FakeWebCaller webCaller = new FakeWebCaller(@"{""U"":""http://localhost/AxCrypt/Downloads.html"",""V"":""2.0.400.0"",""R"":300,""S"":0,""M"":""OK""}"); webCaller.Calling += (object sender, EventArgs e) => { throw new InvalidOperationException("Oops - a forced exception during the call."); }; SetupAssembly.FakeRuntimeEnvironment.WebCallerCreator = () => { return webCaller; }; DateTime utcNow = DateTime.UtcNow; SetupAssembly.FakeRuntimeEnvironment.TimeFunction = () => { return utcNow; }; Version thisVersion = new Version(2, 0, 300, 0); Uri restApiUrl = new Uri("http://localhost/RestApi.asxh/axcrypt2version"); Uri updateWebPageUrl = new Uri("http://www.axantum.com/"); VersionEventArgs eventArgs = null; using (UpdateCheck updateCheck = new UpdateCheck(thisVersion)) { updateCheck.VersionUpdate += (object sender, VersionEventArgs e) => { eventArgs = e; }; updateCheck.CheckInBackground(utcNow.AddDays(-2), UpdateCheck.VersionUnknown.ToString(), restApiUrl, updateWebPageUrl); updateCheck.WaitForBackgroundCheckComplete(); } Assert.That(eventArgs, Is.Not.Null, "The VersionUpdate event should be called with non-null VersionEventArgs."); Assert.That(eventArgs.VersionUpdateStatus, Is.EqualTo(VersionUpdateStatus.ShortTimeSinceLastSuccessfulCheck), "Although the check failed, a check was recently made a short time ago."); Assert.That(eventArgs.UpdateWebpageUrl, Is.EqualTo(updateWebPageUrl), "The original URL should be passed since the call failed."); Assert.That(eventArgs.Version, Is.EqualTo(UpdateCheck.VersionUnknown), "An unknown version should be returned, since the call failed."); }