Ejemplo n.º 1
0
    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));
    }
Ejemplo n.º 2
0
    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));
            }
        }
    }
Ejemplo n.º 3
0
    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));
    }