public void ManagesPasswordCredential()
        {
            var cm = new CredentialsManager();

            try
            {
                cm.AddPasswordCredential("test", "testy McTester", "dothetestydance", "test credential");
                var credential = cm.GetCredentials().Single(s => s.TargetName == "test");
                Assert.That(credential.UserName, Is.EqualTo("testy McTester"));
                Assert.That(credential.Comment, Is.EqualTo("test credential"));
                Assert.That(credential.CredentialBlob, Is.EqualTo("dothetestydance"));

                credential.Comment = "Hobos ride the train.";
                credential.UserName = "******";
                credential.CredentialBlob = "sekret";
                credential.Save();

                credential = cm.GetCredentials().Single(s => s.TargetName == "test");
                Assert.That(credential.Comment, Is.EqualTo("Hobos ride the train."));
                Assert.That(credential.UserName, Is.EqualTo("Biscut"));
                Assert.That(credential.CredentialBlob, Is.EqualTo("sekret"));
            }
            finally
            {
                var credentials = cm.GetCredentials().Where(s => s.TargetName == "test").ToList();
                credentials.ForEach(s => cm.DeleteCredential(s));
            }
        }
Esempio n. 2
0
        public void ManagesPasswordCredential()
        {
            var cm = new CredentialsManager();

            try
            {
                cm.AddPasswordCredential("test", "testy McTester", "dothetestydance", "test credential");
                var credential = cm.GetCredentials().Single(s => s.TargetName == "test");
                Assert.That(credential.UserName, Is.EqualTo("testy McTester"));
                Assert.That(credential.Comment, Is.EqualTo("test credential"));
                Assert.That(credential.CredentialBlob, Is.EqualTo("dothetestydance"));

                credential.Comment        = "Hobos ride the train.";
                credential.UserName       = "******";
                credential.CredentialBlob = "sekret";
                credential.Save();

                credential = cm.GetCredentials().Single(s => s.TargetName == "test");
                Assert.That(credential.Comment, Is.EqualTo("Hobos ride the train."));
                Assert.That(credential.UserName, Is.EqualTo("Biscut"));
                Assert.That(credential.CredentialBlob, Is.EqualTo("sekret"));
            }
            finally
            {
                var credentials = cm.GetCredentials().Where(s => s.TargetName == "test").ToList();
                credentials.ForEach(s => cm.DeleteCredential(s));
            }
        }
Esempio n. 3
0
        public void ReadsAllCredentials()
        {
            var cm          = new CredentialsManager();
            var credentials = cm.GetCredentials().ToList();

            Assert.That(credentials.Count, Is.GreaterThan(0));
        }
Esempio n. 4
0
        public async Task TestStoreCredentialDictionary()
        {
            var secrets = new Dictionary <string, string>();

            secrets.Add("zoneid", "ABC123");
            secrets.Add("secretid", "thereisnosecret");

            var test = new StoredCredential
            {
                ProviderType = "DNS01.API.Route53",
                Title        = "A test credential",
                StorageKey   = Guid.NewGuid().ToString(),
                Secret       = Newtonsoft.Json.JsonConvert.SerializeObject(secrets)
            };

            var credentialsManager = new CredentialsManager();

            credentialsManager.StorageSubfolder = "Tests\\credentials";
            var result = await credentialsManager.Update(test);

            Assert.IsNotNull(result, "Credential stored OK");

            var list = await credentialsManager.GetCredentials();

            Assert.IsTrue(list.Any(l => l.StorageKey == test.StorageKey), "Credential retrieved");

            var secret = await credentialsManager.GetUnlockedCredentialsDictionary(test.StorageKey);

            Assert.IsNotNull(secret);
            Assert.IsTrue(secret["zoneid"] == "ABC123", "Credential decrypted");
        }
Esempio n. 5
0
        public async Task TestStoreCredential()
        {
            var testSecret = "This is a secret";
            var test       = new StoredCredential
            {
                ProviderType = "DNS01.API.Route53",
                Title        = "A test credential",
                StorageKey   = Guid.NewGuid().ToString(),
                Secret       = testSecret
            };
            var credentialsManager = new CredentialsManager();

            credentialsManager.StorageSubfolder = "Tests\\credentials";
            var result = await credentialsManager.Update(test);

            Assert.IsNotNull(result, "Credential stored OK");

            var list = await credentialsManager.GetCredentials();

            Assert.IsTrue(list.Any(l => l.StorageKey == test.StorageKey), "Credential retrieved");

            var secret = await credentialsManager.GetUnlockedCredential(test.StorageKey);

            Assert.IsNotNull(secret);
            Assert.IsTrue(secret == testSecret, "Credential decrypted");
        }
        public void ReadsAllCredentials()
        {
            var cm = new CredentialsManager();
            var credentials = cm.GetCredentials().ToList();

            Assert.That(credentials.Count, Is.GreaterThan(0));
        }
Esempio n. 7
0
        protected override void ProcessRecord()
        {
            var cm          = new CredentialsManager();
            var credentials = cm.GetCredentials();

            var isTargetValid = !string.IsNullOrWhiteSpace(TargetName);

            if (isTargetValid)
            {
                credentials = credentials.Where(c => c.TargetName == TargetName);
            }

            var isUserValid = !string.IsNullOrWhiteSpace(UserName);

            if (isUserValid)
            {
                credentials = credentials.Where(c => c.UserName == UserName);
            }

            var isCommentValid = !string.IsNullOrWhiteSpace(Comment);

            if (isCommentValid)
            {
                credentials = credentials.Where(c => c.Comment == Comment);
            }

            WriteObject(credentials, true);
        }
        protected override void ProcessRecord()
        {
            var cm = new CredentialsManager();
            var credentials = cm.GetCredentials();

            var isTargetValid = !string.IsNullOrWhiteSpace(TargetName);
            if (isTargetValid)
            {
                credentials = credentials.Where(c => c.TargetName == TargetName);
            }

            var isUserValid = !string.IsNullOrWhiteSpace(UserName);
            if (isUserValid)
            {
                credentials = credentials.Where(c => c.UserName == UserName);
            }

            var isCommentValid = !string.IsNullOrWhiteSpace(Comment);
            if (isCommentValid)
            {
                credentials = credentials.Where(c => c.Comment == Comment);
            }

            WriteObject(credentials, true);
        }
 protected override void ProcessRecord()
 {
     var cm = new CredentialsManager();
     using (var credential = cm.GetCredentials().SingleOrDefault(c => c.UserName == UserName && c.TargetName == TargetName))
     {
         WriteObject(credential);
     }
 }
 protected override void ProcessRecord()
 {
     var cm = new CredentialsManager();
     using (var credential = cm.GetCredentials().Single(c => c.UserName == UserName && c.TargetName == TargetName))
     {
         cm.DeleteCredential(credential);
     }
 }
        protected override void ProcessRecord()
        {
            var cm = new CredentialsManager();

            using (var credential = cm.GetCredentials().Single(c => c.UserName == UserName && c.TargetName == TargetName))
            {
                cm.DeleteCredential(credential);
            }
        }
 protected override void ProcessRecord()
 {
     var cm = new CredentialsManager();
     using (var credential = cm.GetCredentials().Single(c => c.UserName == UserName && c.TargetName == TargetName))
     {
         credential.CredentialBlob = Password;
         credential.Save();
     }
 }
Esempio n. 13
0
        protected override void ProcessRecord()
        {
            var cm = new CredentialsManager();

            using (var credential = cm.GetCredentials().SingleOrDefault(c => c.UserName == UserName && c.TargetName == TargetName))
            {
                WriteObject(credential);
            }
        }
        protected override void ProcessRecord()
        {
            var cm = new CredentialsManager();

            using (var credential = cm.GetCredentials().Single(c => c.UserName == UserName && c.TargetName == TargetName))
            {
                credential.CredentialBlob = Password;
                credential.Save();
            }
        }
Esempio n. 15
0
        /// <summary>
        /// Processes request <see cref="DataSet"/> via Fetch Climate.
        /// </summary>
        /// <param name="ds">Request <see cref="DataSet"/> with fetching parameters.</param>
        /// <returns>DataSet with response.</returns>
        ///  <remarks>
        /// <para>
        /// There are two types of responses from server:
        /// If request time is lower than <see cref="maxExecutionTimeWithoutReturns"/> time,
        /// <see cref="DataSet"/> with request result will be returned.
        /// If request time exceeds <see cref="maxExecutionTimeWithoutReturns"/> time, <see cref="DataSet"/>
        /// instance with requets hash and next time to request ("status response") will be returned instead of <see cref="DataSet"/> with result.
        /// Pass it to the <see cref="Process"/> method after specified time interval again to get the result.
        /// If client got status response, it must send it back to server to get next status response, or result. But there is exception in this rule (see next).
        /// For status response, there are three matdata attributes in it:
        /// -"ExpectedCalculationTime" is expected time, calculation will take.
        /// Client should request next time after this time will pass.
        /// -"Hash" is hash of original request dataset.
        /// -"ReplyWithRequestDs" indicates, whether client needs to resend request
        /// next time or not. If so, client needs to send entire request next time
        /// instead of status response, it got from server.
        /// </para>
        /// </remarks>
        public DataSet Process(DataSet ds)
        {
            int retryAttempt = 0;

            int retryTimeDelta = RestApiWrapper.retryStartTimeDelta;

            while (true)
            {
                if (retryAttempt > 1)
                {
                    //Increase retry time delta, if not first attempt and not first retry.
                    retryTimeDelta = (int)(Math.Round(retryTimeDelta * RestApiWrapper.retryTimeIncreaseCoeff));
                }

                if (retryAttempt > retriesCount)
                {
                    break;
                }
                else if (retryAttempt > 0)
                {
                    Thread.Sleep(retryTimeDelta);
                }

                try
                {
                    string login    = null;
                    string password = null;

                    CredentialsManager.GetCredentials(out login, out password);

                    HttpWebRequest request         = WebRequest.Create(serviceUrl) as HttpWebRequest;
                    var            credentialCache = new CredentialCache();
                    credentialCache.Add(
                        new Uri(serviceUrl),
                        "Digest",
                        new NetworkCredential(login, password)
                        );
                    request.Credentials         = credentialCache;
                    request.PreAuthenticate     = true;
                    request.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested;
                    request.Method = RestApiNamings.postRequestMethodName;
                    //request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
                    request.ContentType = RestApiNamings.textRequestTypeName;
                    request.Timeout     = RestApiWrapper.requestTimeout;

                    byte[] csvBytes = RestApiUtilities.GetCsvBytes(ds);

                    request.ContentLength = csvBytes.Length;

                    using (Stream dataStream = request.GetRequestStream())
                    {
                        dataStream.Write(csvBytes, 0, csvBytes.Length);
                    }

                    using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                    {
                        if (response.ContentType == RestApiNamings.textRequestTypeName)
                        {
                            //DataSet is in response
                            using (Stream dataStream = response.GetResponseStream())
                            {
                                byte[]  responseBytes = RestApiUtilities.ReadBytes(dataStream, (int)response.ContentLength);
                                DataSet resultDs      = RestApiUtilities.GetDataSet(responseBytes);
                                return(resultDs);
                            }
                        }
                        else
                        {
                            throw new InvalidOperationException("Unexpected exception. You should never see this");
                        }
                    }
                }
                catch (WebException)
                {
                    Trace.WriteIf(RestApiWrapper.Tracer.TraceWarning, string.Format("Web exception occured while processing input dataSet. {0} retry attempts left", RestApiWrapper.retriesCount - retryAttempt));
                    retryAttempt++;
                }
            }

            throw new WebException("Failed to connect to service. Make sure, it's available.");
        }
Esempio n. 16
0
 public async Task <List <StoredCredential> > GetCredentials()
 {
     return(await credentialsManager.GetCredentials());
 }
Esempio n. 17
0
 protected override async Task <ICredentials> GetCredentials()
 {
     return(await m_credentialsManager.GetCredentials(m_userId, m_ServiceLinkId));
 }