/test/SlowTests/Issues/RavenDB-7275.cs

https://github.com/fitzchak/ravendb · C# · 157 lines · 12 code · 1 blank · 144 comment · 0 complexity · efe589e88808626a97b5c57c908d68bc MD5 · raw file

  1. using System;
  2. using System.Threading.Tasks;
  3. using FastTests;
  4. using Raven.Client.Documents.Subscriptions;
  5. using Raven.Client.Exceptions.Security;
  6. using Raven.Client.Util;
  7. using Raven.Tests.Core.Utils.Entities;
  8. using Sparrow;
  9. using Xunit;
  10. namespace SlowTests.Issues
  11. {
  12. /*public class RavenDB_7275 : RavenTestBase
  13. {
  14. private readonly ApiKeyDefinition _apiKey = new ApiKeyDefinition
  15. {
  16. Enabled = true,
  17. Secret = "secret",
  18. ResourcesAccessMode =
  19. {
  20. ["db/CanGetDocWithValidToken"] = AccessMode.ReadWrite,
  21. ["db/CanGetTokenFromServer"] = AccessMode.Admin
  22. }
  23. };
  24. [Fact]
  25. public async Task ValidateSubscriptionAuthorizationRejectOnCreationAsync()
  26. {
  27. DoNotReuseServer();
  28. Server.Configuration.Security.AuthenticationEnabled = false;
  29. AccessMode[] modes = { AccessMode.None, AccessMode.ReadOnly };
  30. using (var store = GetDocumentStore(apiKey: "super/" + _apiKey.Secret))
  31. {
  32. foreach (var accessMode in modes)
  33. {
  34. Server.Configuration.Security.AuthenticationEnabled = false;
  35. _apiKey.ResourcesAccessMode[store.Database] = accessMode;
  36. store.Admin.Server.Send(new PutCertificateOperation("super", _apiKey));
  37. var doc = store.Admin.Server.Send(new GetCertificateOperation("super"));
  38. Assert.NotNull(doc);
  39. Server.Configuration.Security.AuthenticationEnabled = true;
  40. await Assert.ThrowsAsync<AuthorizationException>(async () => await store.Subscriptions.CreateAsync(new SubscriptionCreationOptions<User>()));
  41. }
  42. }
  43. }
  44. [Fact]
  45. public async Task ValidateSubscriptionAuthorizationAcceptOnCreation()
  46. {
  47. DoNotReuseServer();
  48. Server.Configuration.Security.AuthenticationEnabled = false;
  49. AccessMode[] modes = { AccessMode.ReadWrite, AccessMode.Admin };
  50. using (var store = GetDocumentStore(apiKey: "super/" + _apiKey.Secret))
  51. {
  52. foreach (var accessMode in modes)
  53. {
  54. Server.Configuration.Security.AuthenticationEnabled = false;
  55. _apiKey.ResourcesAccessMode[store.Database] = accessMode;
  56. store.Admin.Server.Send(new PutCertificateOperation("super", _apiKey));
  57. var doc = store.Admin.Server.Send(new GetCertificateOperation("super"));
  58. Assert.NotNull(doc);
  59. Server.Configuration.Security.AuthenticationEnabled = true;
  60. var subscriptionId = await store.Subscriptions.CreateAsync(new SubscriptionCreationOptions<User>());
  61. var subscription = store.Subscriptions.Open<User>(new SubscriptionConnectionOptions(subscriptionId)
  62. {
  63. TimeToWaitBeforeConnectionRetry = TimeSpan.FromMilliseconds(200)
  64. });
  65. var mre = new AsyncManualResetEvent();
  66. subscription.AfterAcknowledgment += b => { mre.Set(); return Task.CompletedTask; };
  67. GC.KeepAlive(subscription.Run(x => { }));
  68. await mre.WaitAsync(TimeSpan.FromSeconds(20));
  69. }
  70. }
  71. }
  72. [Fact]
  73. public async Task ValidateSubscriptionAuthorizationRejectOnOpening()
  74. {
  75. DoNotReuseServer();
  76. Server.Configuration.Security.AuthenticationEnabled = false;
  77. AccessMode[] modes = {AccessMode.None, AccessMode.ReadOnly};
  78. foreach (var accessMode in modes)
  79. {
  80. using (var store = GetDocumentStore(apiKey: "super/" + _apiKey.Secret))
  81. {
  82. Server.Configuration.Security.AuthenticationEnabled = false;
  83. _apiKey.ResourcesAccessMode[store.Database] = accessMode;
  84. var subscriptionId = await store.Subscriptions.CreateAsync(
  85. new SubscriptionCreationOptions<User>());
  86. store.Admin.Server.Send(new PutCertificateOperation("super", _apiKey));
  87. var doc = store.Admin.Server.Send(new GetCertificateOperation("super"));
  88. Assert.NotNull(doc);
  89. Server.Configuration.Security.AuthenticationEnabled = true;
  90. var subscription = store.Subscriptions.Open<User>(new SubscriptionConnectionOptions(subscriptionId)
  91. {
  92. TimeToWaitBeforeConnectionRetry = TimeSpan.FromMilliseconds(200)
  93. });
  94. await Assert.ThrowsAsync<AuthorizationException>(async () => await subscription.Run(user => { }));
  95. }
  96. }
  97. }
  98. [Fact]
  99. public async Task ValidateSubscriptionAuthorizationAcceptOnOpening()
  100. {
  101. DoNotReuseServer();
  102. Server.Configuration.Security.AuthenticationEnabled = false;
  103. AccessMode[] modes = { AccessMode.ReadWrite, AccessMode.Admin };
  104. using (var store = GetDocumentStore(apiKey: "super/" + _apiKey.Secret))
  105. {
  106. foreach (var accessMode in modes)
  107. {
  108. Server.Configuration.Security.AuthenticationEnabled = false;
  109. _apiKey.ResourcesAccessMode[store.Database] = accessMode;
  110. var subscriptionId = await store.Subscriptions.CreateAsync(
  111. new SubscriptionCreationOptions<User>());
  112. store.Admin.Server.Send(new PutCertificateOperation("super", _apiKey));
  113. var doc = store.Admin.Server.Send(new GetCertificateOperation("super"));
  114. Assert.NotNull(doc);
  115. Server.Configuration.Security.AuthenticationEnabled = true;
  116. var subscription = store.Subscriptions.Open<User>(new SubscriptionConnectionOptions(subscriptionId)
  117. {
  118. TimeToWaitBeforeConnectionRetry = TimeSpan.FromMilliseconds(200)
  119. });
  120. var mre = new AsyncManualResetEvent();
  121. subscription.AfterAcknowledgment += b => { mre.Set(); return Task.CompletedTask; };
  122. GC.KeepAlive(subscription.Run(x => { }));
  123. await mre.WaitAsync(TimeSpan.FromSeconds(20));
  124. }
  125. }
  126. }
  127. }*/
  128. }