public void Parse_returns_empty_vault_and_no_private_key(string json)
        {
            var(accounts, privateKey) = VaultParser.Parse(JObject.Parse(json));

            Assert.Empty(accounts);
            Assert.Null(privateKey);
        }
        public void FindNamedItem_returns_item(string json)
        {
            var item = VaultParser.FindNamedItem(JArray.Parse(json), "blah");

            Assert.NotNull(item);
            Assert.Equal("blah", (string)item["i"]["n"]);
        }
        public void Parse_returns_accounts_and_private_key(string fixture)
        {
            var(accounts, privateKey) = VaultParser.Parse(JObject.Parse(GetFixture(fixture)));

            Assert.NotEmpty(accounts);
            Assert.NotNull(privateKey);
        }
        public void Parse_prepends_parent_path(string fixture)
        {
            var parentPath = "blah/blah-blah";

            var(accounts, _) = VaultParser.Parse(JObject.Parse(GetFixture(fixture)), parentPath);

            foreach (var account in accounts)
            {
                Assert.StartsWith(parentPath, account.Path);
            }
        }
        public void ParseAccount_returns_dummy_account_when_parsing_fails()
        {
            var json    = "~~~not-a-json~~~";
            var account = VaultParser.ParseAccount(json, "blah", "blah-blah");

            Assert.Equal("blah", account.Name);
            Assert.Equal("blah-blah", account.Path);
            Assert.Equal("failed to parse", account.Url);
            Assert.Equal("failed to parse", account.GuessedUsername);
            Assert.Equal("failed to parse", account.GuessedPassword);
        }
        public void ParseAccount_returns_parsed_account()
        {
            var json    = "{\"p\":true,\"pwd\":\"passw0rd\",\"n\":\"\",\"g\":\"https://app.asana.com/\",\"m\":\"https://app.asana.com/\",\"f\":[{\"n\":\"e\",\"c\":\"\",\"d\":false,\"i\":0,\"t\":1,\"v\":\"[email protected]\",\"id\":\"email_input\"},{\"n\":\"p\",\"c\":\"\",\"d\":false,\"i\":0,\"t\":2,\"v\":\"faroutman\",\"id\":\"password_input\"},{\"n\":\"Submit$\",\"c\":\"\",\"d\":false,\"i\":0,\"t\":0,\"v\":\"555:692:login::0:Log In\\n\",\"id\":\"\"}]}";
            var account = VaultParser.ParseAccount(json, "blah", "blah-blah");

            Assert.Equal("blah", account.Name);
            Assert.Equal("blah-blah", account.Path);
            Assert.Equal("https://app.asana.com/", account.Url);
            Assert.Equal("*****@*****.**", account.GuessedUsername);
            Assert.Equal("faroutman", account.GuessedPassword);
        }
        public void Parse_returns_vault()
        {
            var vault = VaultParser.Parse(JObject.Parse(TestData.DecryptedBlob));

            Assert.That(vault.Accounts.Length, Is.GreaterThan(1));
        }
 public void Parse_throws_when_root_folder_is_invalid(string json)
 {
     Exceptions.AssertThrowsInternalError(() => VaultParser.Parse(JObject.Parse(json)),
                                          "Invalid format: root folder not found");
 }
        public void Parse_returns_no_private_key(string json)
        {
            var(_, privateKey) = VaultParser.Parse(JObject.Parse(json));

            Assert.Null(privateKey);
        }
        public void Parse_returns_empty_vault(string json)
        {
            var(accounts, _) = VaultParser.Parse(JObject.Parse(json));

            Assert.Empty(accounts);
        }
        public void FindNamedItem_returns_null(string json)
        {
            var item = VaultParser.FindNamedItem(JArray.Parse(json), "blah");

            Assert.Null(item);
        }
        public void GetFolderContent_returns_null(string json)
        {
            var content = VaultParser.GetFolderContent(JObject.Parse(json));

            Assert.Null(content);
        }
        public void IsFolder_returns_expected_result(string json, bool expected)
        {
            var result = VaultParser.IsFolder(JObject.Parse(json));

            Assert.Equal(expected, result);
        }
 public void Parse_throws_when_item_info_block_is_invalid(string json)
 {
     Exceptions.AssertThrowsInternalError(() => VaultParser.Parse(JObject.Parse(RootPrefix + json + RootSuffix)),
                                          "Invalid format: item info block not found");
 }