2
0

DataProtectionRedisTests.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Copyright (c) .NET Foundation. All rights reserved.
  2. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
  3. using System.Linq;
  4. using System.Xml;
  5. using System.Xml.Linq;
  6. using Moq;
  7. using StackExchange.Redis;
  8. using Xunit;
  9. namespace Microsoft.AspNetCore.DataProtection
  10. {
  11. public class DataProtectionRedisTests
  12. {
  13. [Fact]
  14. public void GetAllElements_ReturnsAllXmlValuesForGivenKey()
  15. {
  16. var database = new Mock<IDatabase>();
  17. database.Setup(d => d.ListRange("Key", 0, -1, CommandFlags.None)).Returns(new RedisValue[]
  18. {
  19. "<Element1/>",
  20. "<Element2/>",
  21. }).Verifiable();
  22. var repo = new RedisXmlRepository(() => database.Object, "Key");
  23. var elements = repo.GetAllElements().ToArray();
  24. database.Verify();
  25. Assert.Equal(new XElement("Element1").ToString(), elements[0].ToString());
  26. Assert.Equal(new XElement("Element2").ToString(), elements[1].ToString());
  27. }
  28. [Fact]
  29. public void GetAllElements_ThrowsParsingException()
  30. {
  31. var database = new Mock<IDatabase>();
  32. database.Setup(d => d.ListRange("Key", 0, -1, CommandFlags.None)).Returns(new RedisValue[]
  33. {
  34. "<Element1/>",
  35. "<Element2",
  36. }).Verifiable();
  37. var repo = new RedisXmlRepository(() => database.Object, "Key");
  38. Assert.Throws<XmlException>(() => repo.GetAllElements());
  39. }
  40. [Fact]
  41. public void StoreElement_PushesValueToList()
  42. {
  43. var database = new Mock<IDatabase>();
  44. database.Setup(d => d.ListRightPush("Key", "<Element2 />", When.Always, CommandFlags.None)).Verifiable();
  45. var repo = new RedisXmlRepository(() => database.Object, "Key");
  46. repo.StoreElement(new XElement("Element2"), null);
  47. database.Verify();
  48. }
  49. }
  50. }