コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }