public async Task PostWorkflowTest_DuplicateKeys_On_KeyData() { // Arrange var client = _Factory.CreateClient(); await using var inputStream = Assembly.GetExecutingAssembly().GetEmbeddedResourceStream("Resources.payload-duplicate-keys-keydata.json"); var data = inputStream.ToArray(); var signature = HttpUtility.UrlEncode(HmacSigner.Sign(_Key, data)); var content = new ByteArrayContent(data); content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); // Act var result = await client.PostAsync($"v1/postkeys?sig={signature}", content); // Assert var items = await _DbContext.TemporaryExposureKeys.ToListAsync(); Assert.AreEqual(0, items.Count); }
public async Task PostWorkflowTest_InvalidSignature() { // Arrange var client = _Factory.CreateClient(); await using var inputStream = Assembly.GetExecutingAssembly().GetEmbeddedResourceStream("Resources.payload.json"); var data = inputStream.ToArray(); var signature = HttpUtility.UrlEncode(HmacSigner.Sign(new byte[] { 0 }, data)); var content = new ByteArrayContent(data); content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); // Act var result = await client.PostAsync($"v1/postkeys?sig={signature}", content); // Assert var items = await _DbContext.TemporaryExposureKeys.ToListAsync(); Assert.Equal(HttpStatusCode.OK, result.StatusCode); Assert.Empty(items); }
public async Task PostWorkflowTest(string file, int keyCount, int mm, int dd) { _fakeTimeProvider.Value = new DateTime(2020, mm, dd, 0, 0, 0, DateTimeKind.Utc); // Arrange var client = _factory.CreateClient(); await using var inputStream = Assembly.GetExecutingAssembly().GetEmbeddedResourceStream(file); var data = inputStream.ToArray(); var args = new StandardJsonSerializer().Deserialize <PostTeksArgs>(Encoding.UTF8.GetString(data)); await WriteBucket(Convert.FromBase64String(args.BucketId)); var tekDates = args.Keys .OrderBy(x => x.RollingStartNumber) .Select(x => new { x, Date = x.RollingStartNumber.FromRollingStartNumber() }); foreach (var i in tekDates) { Trace.WriteLine($"RSN:{i.x.RollingStartNumber} Date:{i.Date:yyyy-MM-dd}."); } var signature = HttpUtility.UrlEncode(HmacSigner.Sign(new byte[32], data)); var content = new ByteArrayContent(data); content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); // Act var result = await client.PostAsync($"v1/postkeys?sig={signature}", content); // Assert var items = await _workflowDbProvider.CreateNew().TemporaryExposureKeys.ToListAsync(); Assert.Equal(HttpStatusCode.OK, result.StatusCode); Assert.Equal(keyCount, items.Count); }