diff --git a/src/Covid19Radar.Api.Common/Common/KeyLock.cs b/src/Covid19Radar.Api.Common/Common/KeyLock.cs
index ce93bdc5a..e1dc901f9 100644
--- a/src/Covid19Radar.Api.Common/Common/KeyLock.cs
+++ b/src/Covid19Radar.Api.Common/Common/KeyLock.cs
@@ -43,12 +43,12 @@ public class LockItem
///
/// Lock wait handle
///
- System.Threading.EventWaitHandle ev;
+ readonly System.Threading.EventWaitHandle ev;
///
/// Identification key to lock
///
- string key;
+ readonly string key;
///
/// Constructor for initialization and acquireing locks
diff --git a/src/Covid19Radar.Api.Common/DataAccess/CosmosDiagnosisRepository.cs b/src/Covid19Radar.Api.Common/DataAccess/CosmosDiagnosisRepository.cs
deleted file mode 100644
index 253fd24b8..000000000
--- a/src/Covid19Radar.Api.Common/DataAccess/CosmosDiagnosisRepository.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-using Covid19Radar.Api.DataStore;
-using Covid19Radar.Api.Models;
-using Microsoft.Azure.Cosmos;
-using Microsoft.Extensions.Logging;
-using System;
-using System.Linq;
-using System.Threading.Tasks;
-
-namespace Covid19Radar.Api.DataAccess
-{
- public class CosmosDiagnosisRepository : IDiagnosisRepository
- {
- private readonly ICosmos _db;
- private readonly ILogger _logger;
-
- public CosmosDiagnosisRepository(ICosmos db, ILogger logger)
- {
- _db = db;
- _logger = logger;
- }
-
- public async Task DeleteAsync(IUser user)
- {
- _logger.LogInformation($"start {nameof(DeleteAsync)}");
- await _db.Diagnosis.DeleteItemAsync(user.GetId(), PartitionKey.None);
- }
-
- public async Task GetAsync(string submissionNumber, string userUuid)
- {
- _logger.LogInformation($"start {nameof(GetAsync)}");
- var response = await _db.Diagnosis.ReadItemAsync(userUuid, PartitionKey.None);
- return response.Resource;
- }
-
- public async Task GetNotApprovedAsync()
- {
- _logger.LogInformation($"start {nameof(GetNotApprovedAsync)}");
- var q = new QueryDefinition("SELECT * FROM c WHERE c.Approved == false");
- var query = _db.Diagnosis.GetItemQueryIterator(q);
- var e = Enumerable.Empty();
- while (query.HasMoreResults)
- {
- var r = await query.ReadNextAsync();
- e = e.Concat(r.Resource);
- }
-
- return e.ToArray();
- }
-
- public async Task SubmitDiagnosisAsync(string SubmissionNumber, DateTimeOffset timestamp, string UserUuid, TemporaryExposureKeyModel[] Keys)
- {
- _logger.LogInformation($"start {nameof(SubmitDiagnosisAsync)}");
- var item = new DiagnosisModel()
- {
- id = UserUuid,
- UserUuid = UserUuid,
- SubmissionNumber = SubmissionNumber,
- Approved = false,
- Timestamp = timestamp.ToUnixTimeSeconds(),
- Keys = Keys
- };
-
- return (await _db.Diagnosis.UpsertItemAsync(item)).Resource;
- }
- }
-}
diff --git a/src/Covid19Radar.Api.Common/DataAccess/IDiagnosisRepository.cs b/src/Covid19Radar.Api.Common/DataAccess/IDiagnosisRepository.cs
deleted file mode 100644
index f89aa06b9..000000000
--- a/src/Covid19Radar.Api.Common/DataAccess/IDiagnosisRepository.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-using Covid19Radar.Api.Models;
-using System;
-using System.Threading.Tasks;
-
-namespace Covid19Radar.Api.DataAccess
-{
- public interface IDiagnosisRepository
- {
-
- Task GetNotApprovedAsync();
- Task GetAsync(string submissionNumber, string userUuid);
-
- Task SubmitDiagnosisAsync(string submissionNumber, DateTimeOffset timestamp, string userUuid, TemporaryExposureKeyModel[] Keys);
-
- Task DeleteAsync(IUser user);
- }
-}
diff --git a/src/Covid19Radar.Api.Tests/Common/DataAccess/CosmosDiagnosisRepositoryTest.cs b/src/Covid19Radar.Api.Tests/Common/DataAccess/CosmosDiagnosisRepositoryTest.cs
deleted file mode 100644
index 8d514f8ea..000000000
--- a/src/Covid19Radar.Api.Tests/Common/DataAccess/CosmosDiagnosisRepositoryTest.cs
+++ /dev/null
@@ -1,146 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-using Covid19Radar.Api.DataAccess;
-using Covid19Radar.Api.DataStore;
-using Covid19Radar.Api.Models;
-using Microsoft.Azure.Cosmos;
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using Moq;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace Covid19Radar.Api.Tests.Common.DataAccess
-{
- [TestClass]
- [TestCategory("Common")]
- public class CosmosDiagnosisRepositoryTest
- {
- [TestMethod]
- public void CreateMethod()
- {
- // preparation
- var cosmos = new Mock();
- var logger = new Mock.LoggerMock();
- // action
- var instance = new CosmosDiagnosisRepository(cosmos.Object, logger);
- // assert
- Assert.IsNotNull(instance);
-
- }
-
- [DataTestMethod]
- [DataRow("")]
- public async Task DeleteAsyncMethod(string userUuid)
- {
- // preparation
- var model = new DiagnosisModel();
- var itemResponse = new Mock>();
- itemResponse.Setup(_ => _.Resource).Returns(model);
- var cosmos = new Mock();
- cosmos.Setup(_ => _.Diagnosis.DeleteItemAsync(It.IsAny(),
- It.IsAny(),
- It.IsAny(),
- It.IsAny()))
- .ReturnsAsync(itemResponse.Object)
- .Verifiable();
- var logger = new Mock.LoggerMock();
- var user = new Mock();
- user.Setup(_ => _.UserUuid).Returns(userUuid);
- var instance = new CosmosDiagnosisRepository(cosmos.Object, logger);
- // action
- await instance.DeleteAsync(user.Object);
- // Assert
- }
-
- [DataTestMethod]
- [DataRow(null, null)]
- [DataRow("", "")]
- [DataRow("1", "2")]
- public async Task GetAsyncMethod(string submissionNumber, string userUuid)
- {
- // preparation
- var model = new DiagnosisModel();
- var itemResponse = new Mock>();
- itemResponse.Setup(_ => _.Resource).Returns(model);
- var cosmos = new Mock();
- cosmos.Setup(_ => _.Diagnosis.ReadItemAsync(It.IsAny(),
- It.IsAny(),
- It.IsAny(),
- It.IsAny()))
- .ReturnsAsync(itemResponse.Object)
- .Verifiable();
- var logger = new Mock.LoggerMock();
- var instance = new CosmosDiagnosisRepository(cosmos.Object, logger);
- // action
- var result = await instance.GetAsync(submissionNumber, userUuid);
- // Assert
- Assert.AreEqual(model, result);
- }
-
- [TestMethod]
- public async Task GetNotApprovedAsyncMethod()
- {
- // preparation
- var models = new List();
- models.Add(new DiagnosisModel());
- var cosmos = new Mock();
-
- // repeat 2
- var feed = new Mock>();
- feed.SetupSequence(_ => _.HasMoreResults)
- .Returns(true)
- .Returns(true)
- .Returns(false);
- var feedResponse = new Mock>();
- feedResponse.Setup(_ => _.Resource).Returns(models);
- feed.Setup(_ => _.ReadNextAsync(It.IsAny()))
- .ReturnsAsync(feedResponse.Object);
- cosmos.Setup(_ => _.Diagnosis.GetItemQueryIterator
- (It.IsAny(), It.IsAny(), It.IsAny()))
- .Returns(feed.Object)
- .Verifiable();
- var logger = new Mock.LoggerMock();
- var instance = new CosmosDiagnosisRepository(cosmos.Object, logger);
- // action
- var result = await instance.GetNotApprovedAsync();
- // Assert
- CollectionAssert.AreEqual(models.Concat(models).ToArray(), result);
- }
-
- [DataTestMethod]
- public async Task SubmitDiagnosisAsyncMethod()
- {
- // preparation
- string SubmissionNumber = "";
- DateTimeOffset timestamp = DateTimeOffset.UtcNow;
- string UserUuid = "";
- TemporaryExposureKeyModel[] keys = new TemporaryExposureKeyModel[] { new TemporaryExposureKeyModel() };
- var itemResponse = new Mock>();
- var cosmos = new Mock();
- cosmos.Setup(_ => _.Diagnosis.UpsertItemAsync
- (It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
- .Callback((m, p, i, c) =>
- {
- itemResponse.Setup(_ => _.Resource).Returns(m);
- })
- .ReturnsAsync(itemResponse.Object)
- .Verifiable();
- var logger = new Mock.LoggerMock();
- var instance = new CosmosDiagnosisRepository(cosmos.Object, logger);
- // action
- var result = await instance.SubmitDiagnosisAsync(SubmissionNumber, timestamp, UserUuid, keys);
- // Assert
- Assert.AreEqual(SubmissionNumber, result.SubmissionNumber);
- Assert.AreEqual(timestamp.ToUnixTimeSeconds(), result.Timestamp);
- Assert.AreEqual(UserUuid, result.UserUuid);
- Assert.AreEqual(UserUuid, result.id);
- CollectionAssert.AreEqual(keys, result.Keys);
- }
-
- }
-}
diff --git a/src/Covid19Radar.Api.Tests/Common/QueryCacheTest.cs b/src/Covid19Radar.Api.Tests/Common/QueryCacheTest.cs
index b005920e0..87b9ca669 100644
--- a/src/Covid19Radar.Api.Tests/Common/QueryCacheTest.cs
+++ b/src/Covid19Radar.Api.Tests/Common/QueryCacheTest.cs
@@ -17,20 +17,6 @@ namespace Covid19Radar.Api.Tests.Common
[TestCategory("Common")]
public class QueryCacheTest
{
- [DataTestMethod]
- [DataRow(-1)]
- [DataRow(0)]
- [DataRow(1)]
- [DataRow(10)]
- [DataRow(100)]
- [DataRow(int.MaxValue)]
- [DataRow(int.MinValue)]
- public void CreateMethod(int cacheTimeout)
- {
- // preparation
- // action
- var instance = new QueryCache(cacheTimeout);
- }
[DataTestMethod]
[DataRow(60, "", "", 1)]
diff --git a/src/Covid19Radar.Api.Tests/Covid19Radar.Api.Tests.csproj b/src/Covid19Radar.Api.Tests/Covid19Radar.Api.Tests.csproj
index 2412f0fe1..730cfae02 100644
--- a/src/Covid19Radar.Api.Tests/Covid19Radar.Api.Tests.csproj
+++ b/src/Covid19Radar.Api.Tests/Covid19Radar.Api.Tests.csproj
@@ -32,6 +32,7 @@
+
diff --git a/src/Covid19Radar.Api.Tests/DiagnosisApiTest.cs b/src/Covid19Radar.Api.Tests/DiagnosisApiTest.cs
index 79e4fc091..c2a32cc58 100644
--- a/src/Covid19Radar.Api.Tests/DiagnosisApiTest.cs
+++ b/src/Covid19Radar.Api.Tests/DiagnosisApiTest.cs
@@ -25,19 +25,19 @@ public void CreateMethod()
// preparation
var config = new Mock();
config.Setup(_ => _["SupportRegions"]).Returns("Region1,Region2");
- var diagnosisRepo = new Mock();
var tekRepo = new Mock();
var validationServer = new Mock();
var deviceCheck = new Mock();
var verification = new Mock();
var logger = new Mock.LoggerMock();
var diagnosisApi = new DiagnosisApi(config.Object,
- diagnosisRepo.Object,
tekRepo.Object,
deviceCheck.Object,
verification.Object,
validationServer.Object,
logger);
+
+ Assert.IsNotNull(diagnosisApi);
}
[DataTestMethod]
@@ -56,12 +56,7 @@ public async Task RunAsyncMethod(bool isValid,
// preparation
var config = new Mock();
config.Setup(_ => _["SupportRegions"]).Returns("Region1,Region2");
- var diagnosisRepo = new Mock();
- diagnosisRepo.Setup(_ => _.SubmitDiagnosisAsync(It.IsAny(),
- It.IsAny(),
- It.IsAny(),
- It.IsAny()))
- .ReturnsAsync(new DiagnosisModel());
+
var tekRepo = new Mock();
var validationServer = new Mock();
validationServer.Setup(_ => _.Validate(It.IsAny())).Returns(IValidationServerService.ValidateResult.Success);
@@ -72,7 +67,6 @@ public async Task RunAsyncMethod(bool isValid,
var verification = new Mock();
var logger = new Mock.LoggerMock();
var diagnosisApi = new DiagnosisApi(config.Object,
- diagnosisRepo.Object,
tekRepo.Object,
deviceCheck.Object,
verification.Object,
diff --git a/src/Covid19Radar.Api.Tests/V2DiagnosisApiTest.cs b/src/Covid19Radar.Api.Tests/V2DiagnosisApiTest.cs
index a276068ca..b1d6656b9 100644
--- a/src/Covid19Radar.Api.Tests/V2DiagnosisApiTest.cs
+++ b/src/Covid19Radar.Api.Tests/V2DiagnosisApiTest.cs
@@ -28,14 +28,12 @@ public void CreateMethod()
// preparation
var config = new Mock();
config.Setup(_ => _["SupportRegions"]).Returns("Region1,Region2");
- var diagnosisRepo = new Mock();
var tekRepo = new Mock();
var validationServer = new Mock();
var deviceCheck = new Mock();
var verification = new Mock();
var logger = new Mock.LoggerMock();
var diagnosisApi = new V2DiagnosisApi(config.Object,
- diagnosisRepo.Object,
tekRepo.Object,
deviceCheck.Object,
verification.Object,
@@ -68,12 +66,7 @@ HttpStatusCode expectedStatusCode
// preparation
var config = new Mock();
config.Setup(_ => _["SupportRegions"]).Returns("Region1,Region2");
- var diagnosisRepo = new Mock();
- diagnosisRepo.Setup(_ => _.SubmitDiagnosisAsync(It.IsAny(),
- It.IsAny(),
- It.IsAny(),
- It.IsAny()))
- .ReturnsAsync(new DiagnosisModel());
+
var tekRepo = new Mock();
var validationServer = new Mock();
validationServer.Setup(_ => _.Validate(It.IsAny())).Returns(IValidationServerService.ValidateResult.Success);
@@ -84,7 +77,6 @@ HttpStatusCode expectedStatusCode
var verification = new Mock();
var logger = new Mock.LoggerMock();
var diagnosisApi = new V2DiagnosisApi(config.Object,
- diagnosisRepo.Object,
tekRepo.Object,
deviceCheck.Object,
verification.Object,
diff --git a/src/Covid19Radar.Api.Tests/V3DiagnosisApiTest.cs b/src/Covid19Radar.Api.Tests/V3DiagnosisApiTest.cs
index 9e27fa3e3..6c265a7f5 100644
--- a/src/Covid19Radar.Api.Tests/V3DiagnosisApiTest.cs
+++ b/src/Covid19Radar.Api.Tests/V3DiagnosisApiTest.cs
@@ -75,12 +75,7 @@ HttpStatusCode expectedStatusCode
// preparation
var config = new Mock();
config.Setup(_ => _["SupportRegions"]).Returns("Region1,Region2");
- var diagnosisRepo = new Mock();
- diagnosisRepo.Setup(_ => _.SubmitDiagnosisAsync(It.IsAny(),
- It.IsAny(),
- It.IsAny(),
- It.IsAny()))
- .ReturnsAsync(new DiagnosisModel());
+
var tekRepo = new Mock();
var validationServer = new Mock();
validationServer.Setup(_ => _.Validate(It.IsAny())).Returns(IValidationServerService.ValidateResult.Success);
@@ -184,12 +179,7 @@ HttpStatusCode expectedStatusCode
// preparation
var config = new Mock();
config.Setup(_ => _["SupportRegions"]).Returns("Region1,Region2");
- var diagnosisRepo = new Mock();
- diagnosisRepo.Setup(_ => _.SubmitDiagnosisAsync(It.IsAny(),
- It.IsAny(),
- It.IsAny(),
- It.IsAny()))
- .ReturnsAsync(new DiagnosisModel());
+
var tekRepo = new Mock();
var validationServer = new Mock();
validationServer.Setup(_ => _.Validate(It.IsAny())).Returns(IValidationServerService.ValidateResult.Success);
diff --git a/src/Covid19Radar.Api/DiagnosisApi.cs b/src/Covid19Radar.Api/DiagnosisApi.cs
index cf4e86908..dc51f2dd8 100644
--- a/src/Covid19Radar.Api/DiagnosisApi.cs
+++ b/src/Covid19Radar.Api/DiagnosisApi.cs
@@ -31,7 +31,6 @@ public class DiagnosisApi
public DiagnosisApi(
IConfiguration config,
- IDiagnosisRepository diagnosisRepository,
ITemporaryExposureKeyRepository tekRepository,
IDeviceValidationService deviceCheck,
IVerificationService verificationService,
diff --git a/src/Covid19Radar.Api/Services/DeviceValidationAppleService.cs b/src/Covid19Radar.Api/Services/DeviceValidationAppleService.cs
index 1d6bdd3c6..b9e7a3b4b 100644
--- a/src/Covid19Radar.Api/Services/DeviceValidationAppleService.cs
+++ b/src/Covid19Radar.Api/Services/DeviceValidationAppleService.cs
@@ -84,7 +84,6 @@ public async Task Validation(IAppleDeviceVerification deviceVerification,
var response = await ClientApple.SendAsync(request);
if (!response.IsSuccessStatusCode)
{
- var responseBody = await response.Content.ReadAsStringAsync();
Logger.LogWarning($"iOS device check failed.\r\n{nameof(HttpRequestMessage)} : {request}\r\n{nameof(HttpResponseMessage)} : {response}");
}
@@ -114,36 +113,5 @@ static string GenerateClientSecretJWT(DateTimeOffset requestTime, string keyId,
return Jose.JWT.Encode(payload, cngKey, Jose.JwsAlgorithm.ES256, headers);
}
- static string CleanP8Key(string p8Contents)
- {
- // Remove whitespace
- var tmp = Regex.Replace(p8Contents, "\\s+", string.Empty, RegexOptions.Singleline);
-
- // Remove `---- BEGIN PRIVATE KEY ----` bits
- tmp = Regex.Replace(tmp, "-{1,}.*?-{1,}", string.Empty, RegexOptions.Singleline);
-
- return tmp;
- }
-
- static string Base64UrlEncode(byte[] data)
- {
- var base64 = Convert.ToBase64String(data, 0, data.Length);
- var base64Url = new StringBuilder();
-
- foreach (var c in base64)
- {
- if (c == '+')
- base64Url.Append('-');
- else if (c == '/')
- base64Url.Append('_');
- else if (c == '=')
- break;
- else
- base64Url.Append(c);
- }
-
- return base64Url.ToString();
- }
-
}
}
diff --git a/src/Covid19Radar.Api/Startup.cs b/src/Covid19Radar.Api/Startup.cs
index 1cdc6f0d8..2cfce869e 100644
--- a/src/Covid19Radar.Api/Startup.cs
+++ b/src/Covid19Radar.Api/Startup.cs
@@ -27,7 +27,6 @@ public override void Configure(IFunctionsHostBuilder builder)
builder.Services.AddSingleton();
builder.Services.AddSingleton();
builder.Services.AddSingleton();
- builder.Services.AddSingleton();
builder.Services.AddSingleton();
builder.Services.AddSingleton();
builder.Services.AddSingleton();
diff --git a/src/Covid19Radar.Api/V2DiagnosisApi.cs b/src/Covid19Radar.Api/V2DiagnosisApi.cs
index bab031382..0365c1f74 100644
--- a/src/Covid19Radar.Api/V2DiagnosisApi.cs
+++ b/src/Covid19Radar.Api/V2DiagnosisApi.cs
@@ -32,7 +32,6 @@ public class V2DiagnosisApi
public V2DiagnosisApi(
IConfiguration config,
- IDiagnosisRepository diagnosisRepository,
ITemporaryExposureKeyRepository tekRepository,
IDeviceValidationService deviceCheck,
IVerificationService verificationService,