public void Execute_DisplaysProperDialogMessageForConnectionError() { const string key = "key"; const string keySecret = "key-secret"; var licenseDialog = Substitute.For <ILicenseDialog>(); licenseDialog.Display(Arg.Any <LicenseDialogMessageType>()).ReturnsForAnyArgs(new LicenseDialogResult() { Key = key, Type = LicenseDialogResultType.Confirmed }); var remoteMetaData = Substitute.For <IRemoteMetaData>(); remoteMetaData.GetAppInfo().Returns(new App() { UseKeys = true }); bool firstAttempt = true; remoteMetaData.GetKeySecret(key, Arg.Any <string>()).Returns(info => { if (!firstAttempt) { return(keySecret); } firstAttempt = false; throw new ApiConnectionException(new List <Exception>(), new List <Exception>()); }); var localMetaData = Substitute.For <ILocalMetaData>(); var command = new ValidateLicenseCommand(licenseDialog, remoteMetaData, localMetaData, _cache, _logger, _issueReporter); command.Prepare(_statusMonitor); command.Execute(CancellationToken.Empty); licenseDialog.Received(1).Display(LicenseDialogMessageType.None); licenseDialog.Received(1).Display(LicenseDialogMessageType.ServiceUnavailable); licenseDialog.DidNotReceive().Display(Arg.Is <LicenseDialogMessageType>(type => type != LicenseDialogMessageType.None && type != LicenseDialogMessageType.ServiceUnavailable)); }
public void Execute_CachesKeyAndKeySecret() { const string key = "this-key-should-be-cached"; const string keySecret = "this-key-secret-should-be-cached"; var remoteMetaData = Substitute.For <IRemoteMetaData>(); remoteMetaData.GetAppInfo().Returns(new App() { UseKeys = true }); remoteMetaData.GetKeySecret(key, Arg.Any <string>()).Returns(keySecret); var localMetaData = Substitute.For <ILocalMetaData>(); for (int i = 0; i < 2; i++) { var licenseDialog = Substitute.For <ILicenseDialog>(); licenseDialog.Display(Arg.Any <LicenseDialogMessageType>()).ReturnsForAnyArgs(new LicenseDialogResult() { Key = key, Type = LicenseDialogResultType.Confirmed }); var command = new ValidateLicenseCommand(licenseDialog, remoteMetaData, localMetaData, _cache, _logger, _issueReporter); command.Prepare(_statusMonitor); command.Execute(CancellationToken.Empty); if (i == 0) { licenseDialog.Received(1).Display(Arg.Any <LicenseDialogMessageType>()); localMetaData.Received().SetProductKey(key); localMetaData.GetProductKey().Returns(key); Assert.IsTrue(_cache.Dictionary.ContainsValue(keySecret)); } else { licenseDialog.Received(1).SetKey(key); licenseDialog.DidNotReceive().Display(Arg.Any <LicenseDialogMessageType>()); localMetaData.Received().SetProductKey(key); Assert.IsTrue(_cache.Dictionary.ContainsValue(keySecret)); } } }
public void Execute_ProperlyHandlesSitauationWhenKeysAreNotUsed() { var licenseDialog = Substitute.For <ILicenseDialog>(); var remoteMetaData = Substitute.For <IRemoteMetaData>(); remoteMetaData.GetAppInfo().Returns(new App() { UseKeys = false }); var localMetaData = Substitute.For <ILocalMetaData>(); var command = new ValidateLicenseCommand(licenseDialog, remoteMetaData, localMetaData, _cache, _logger, _issueReporter); command.Prepare(_statusMonitor); command.Execute(CancellationToken.Empty); Assert.AreEqual(command.KeySecret, null); remoteMetaData.DidNotReceive().GetKeySecret(Arg.Any <string>(), Arg.Any <string>()); licenseDialog.DidNotReceive().Display(Arg.Any <LicenseDialogMessageType>()); }
public void Execute_UsesCachedKey() { var cache = new MockCache(); const string key = "this-key-should-be-cached"; for (int i = 0; i < 2; i++) { var licenseDialog = Substitute.For <ILicenseDialog>(); licenseDialog.Display(Arg.Any <LicenseDialogMessageType>()).ReturnsForAnyArgs(new LicenseDialogResult() { Key = key, Type = LicenseDialogResultType.Confirmed }); var remoteMetaData = Substitute.For <IRemoteMetaData>(); remoteMetaData.GetAppInfo().Returns(new App() { UseKeys = true }); var statusMonitor = Substitute.For <IStatusMonitor>(); var command = new ValidateLicenseCommand(licenseDialog, remoteMetaData, cache); command.Prepare(statusMonitor); command.Execute(CancellationToken.Empty); if (i == 0) { licenseDialog.Received(1).Display(Arg.Any <LicenseDialogMessageType>()); } else { licenseDialog.DidNotReceive().Display(Arg.Any <LicenseDialogMessageType>()); } } Assert.IsTrue(cache.Dictionary.ContainsValue(key)); }