public async Task RoundTripData() { ViziVault vault = new ViziVault(new Uri(baseUrl)).WithApiKey(apiKey).WithDecryptionKey(decryptionKey).WithEncryptionKey(encryptionKey); // Create two attributes AttributeDefinition attributeDef1 = new AttributeDefinition("TestAttribute1"); AttributeDefinition attributeDef2 = new AttributeDefinition("TestAttribute2") { Repeatable = true }; await vault.StoreAttributeDefinitionAsync(attributeDef1); await vault.StoreAttributeDefinitionAsync(attributeDef2); // Add values of both attributes User sentUser = new User("exampleUser"); AttributeValue attribute1 = new AttributeValue(attributeDef1.Name) { Value = "exampleUser's first name" }; sentUser.AddAttribute(attribute1); sentUser.AddAttribute(attributeDef2.Name, "exampleUser's last name"); sentUser.AddAttribute(attributeDef2.Name, "exampleUser's other last name"); try { await vault.SaveAsync(sentUser); User receivedUser = await vault.FindByUserAsync("exampleUser"); Assert.Equal(attribute1.GetValueAs <string>(), receivedUser.GetAttribute(attributeDef1.Name).GetValueAs <string>()); Assert.Equal(3, receivedUser.Attributes.Count()); Assert.Equal(2, receivedUser.GetAttributes(attributeDef2.Name).Count); // Remove one attribute receivedUser.ClearAttribute(attributeDef1.Name); await vault.SaveAsync(receivedUser); User receivedUserAfterDeletion = await vault.FindByUserAsync("exampleUser"); Assert.Null(receivedUserAfterDeletion.GetAttribute(attributeDef1.Name)); } finally { await vault.PurgeAsync(sentUser.Id); } }
public async Task TestGetAttributeByDatapointId() { ViziVault vault = new ViziVault(new Uri(baseUrl)).WithApiKey(apiKey).WithDecryptionKey(decryptionKey).WithEncryptionKey(encryptionKey); AttributeDefinition attributeDef = new AttributeDefinition("TestAttribute1"); await vault.StoreAttributeDefinitionAsync(attributeDef); User sentUser = new User("exampleUser"); sentUser.AddAttribute(attributeDef.Name, "some data"); try { await vault.SaveAsync(sentUser); User receivedUser = await vault.FindByUserAsync(sentUser.Id); AttributeValue first = receivedUser.GetAttribute(attributeDef.Name); AttributeValue second = await vault.GetDataPointAsync(receivedUser.GetAttribute(attributeDef.Name).DataPointId); Assert.Equal(first.GetValueAs <string>(), second.GetValueAs <string>()); } finally { await vault.PurgeAsync(sentUser.Id); } }
public async Task TestTags() { ViziVault vault = new ViziVault(new Uri(baseUrl)).WithApiKey(apiKey).WithDecryptionKey(decryptionKey).WithEncryptionKey(encryptionKey); AttributeDefinition attributeDef1 = new AttributeDefinition("TestAttribute1") { Tags = new List <string> { "tag1" } }; await vault.StoreAttributeDefinitionAsync(attributeDef1); User sentUser = new User("exampleUser") { Tags = new List <string> { "tag2" } }; try { AttributeValue attribute1 = new AttributeValue(attributeDef1.Name) { Value = "exampleUser's first name", Tags = new List <string> { "tag3" }, }; sentUser.AddAttribute(attribute1); await vault.SaveAsync(sentUser); AttributeValue receivedAttribute = (await vault.FindByUserAsync("exampleUser")).GetAttribute(attributeDef1.Name); Assert.Collection(receivedAttribute.Tags, (tag) => Assert.Equal("tag1", tag), (tag) => Assert.Equal("tag2", tag), (tag) => Assert.Equal("tag3", tag) ); Tag tag1 = await vault.GetTagAsync("tag1"); await vault.StoreTagAsync(tag1); Tag tag4 = new Tag("tag4"); await vault.StoreTagAsync(tag4); List <Tag> allTags = await vault.GetTagsAsync(); Assert.Contains(allTags, (tag) => tag.Name.Equals("tag1")); Assert.Contains(allTags, (tag) => tag.Name.Equals("tag2")); Assert.Contains(allTags, (tag) => tag.Name.Equals("tag3")); Assert.Contains(allTags, (tag) => tag.Name.Equals("tag4")); await vault.DeleteTagAsync("tag1"); await vault.DeleteTagAsync("tag2"); await vault.DeleteTagAsync("tag3"); await vault.DeleteTagAsync("tag4"); //Assert.Throws<VaultResponseException>(() => vault.GetTagAsync("tag5").Result); Assert.False(await vault.DeleteTagAsync("tag5")); allTags = await vault.GetTagsAsync(); Assert.DoesNotContain(allTags, (tag) => tag.Name.Equals("tag1")); Assert.DoesNotContain(allTags, (tag) => tag.Name.Equals("tag2")); Assert.DoesNotContain(allTags, (tag) => tag.Name.Equals("tag3")); Assert.DoesNotContain(allTags, (tag) => tag.Name.Equals("tag4")); Assert.DoesNotContain(allTags, (tag) => tag.Name.Equals("tag5")); } finally { await vault.PurgeAsync(sentUser.Id); } }