public void ListSamplesReturnsSamples() { // Arrange var id = "id"; var value = "value"; var mockSamplesRepository = new Mock <ISamplesSqlRepository>(MockBehavior.Strict); mockSamplesRepository .Setup(x => x.ListSamples()) .Returns(new List <SampleModel>() { new SampleModel() { Id = id, Value = value } }); var samplesService = new SamplesService(mockSamplesRepository.Object); // Act var response = samplesService.ListSamples(); // Assert mockSamplesRepository.VerifyAll(); Assert.IsNotNull(response); var samples = response as IEnumerable <SampleModel>; Assert.AreEqual(1, samples.Count()); Assert.AreEqual(value, samples.FirstOrDefault().Value); }
public async Task <IActionResult> CreateSampleQueryAsync([FromBody] SampleQueryModel sampleQueryModel) { try { // Get the list of policies SampleQueriesPolicies policies = await GetSampleQueriesPoliciesAsync(); string categoryName = sampleQueryModel.Category; ClaimsIdentity identity = (ClaimsIdentity)User.Identity; IEnumerable <Claim> claims = identity.Claims; string userPrincipalName = (claims?.FirstOrDefault(x => x.Type.Equals(Constants.ClaimTypes.UpnJwt, StringComparison.OrdinalIgnoreCase)) ?? claims?.FirstOrDefault(x => x.Type.Equals(Constants.ClaimTypes.UpnUriSchema, StringComparison.OrdinalIgnoreCase)))?.Value; // Check if authenticated user is authorized for this action bool isAuthorized = SamplesPolicyService.IsUserAuthorized(policies, userPrincipalName, categoryName, HttpMethods.Post); if (!isAuthorized) { return(new JsonResult( $"{userPrincipalName} is not authorized to create the sample query. Category: '{categoryName}'") { StatusCode = StatusCodes.Status403Forbidden }); } // Get the list of sample queries SampleQueriesList sampleQueriesList = await _samplesStore.FetchSampleQueriesListAsync("en-US"); // Assign a new Id to the new sample query sampleQueryModel.Id = Guid.NewGuid(); // Add the new sample query to the list of sample queries SampleQueriesList newSampleQueriesList = SamplesService.AddToSampleQueriesList(sampleQueriesList, sampleQueryModel); // Get the serialized JSON string of the sample query string newSampleQueriesJson = SamplesService.SerializeSampleQueriesList(newSampleQueriesList); // Disabled functionality // await _fileUtility.WriteToFile(updatedSampleQueriesJson, _queriesFilePathSource); // Create the query Uri for the newly created sample query string newSampleQueryUri = string.Format("{0}://{1}{2}/{3}", Request.Scheme, Request.Host, Request.Path.Value, sampleQueryModel.Id.ToString()); // Success; return the new sample query that was added along with its Uri return(Created(newSampleQueryUri, sampleQueryModel)); } catch (Exception exception) { return(new JsonResult(exception.Message) { StatusCode = StatusCodes.Status500InternalServerError }); } }
public async Task <IActionResult> CreateSampleQueryAsync([FromBody] SampleQueryModel sampleQueryModel) { try { // Get the list of policies SampleQueriesPolicies policies = await GetSampleQueriesPoliciesAsync(); string categoryName = sampleQueryModel.Category; string userPrincipalName = User.Identity.Name; // Check if authenticated user is authorized for this action bool isAuthorized = SamplesPolicyService.IsUserAuthorized(policies, userPrincipalName, categoryName, HttpMethods.Post); if (!isAuthorized) { return(new JsonResult( $"{userPrincipalName} is not authorized to create the sample query. Category: '{categoryName}'") { StatusCode = StatusCodes.Status401Unauthorized }); } // Get the list of sample queries SampleQueriesList sampleQueriesList = await GetSampleQueriesListAsync(); // Assign a new Id to the new sample query sampleQueryModel.Id = Guid.NewGuid(); // Add the new sample query to the list of sample queries SampleQueriesList newSampleQueriesList = SamplesService.AddToSampleQueriesList(sampleQueriesList, sampleQueryModel); // Get the serialized JSON string of the sample query string newSampleQueriesJson = SamplesService.SerializeSampleQueriesList(newSampleQueriesList); // Save the document-readable JSON-styled string to the source file await _fileUtility.WriteToFile(newSampleQueriesJson, _queriesFilePathSource); // Create the query Uri for the newly created sample query string newSampleQueryUri = string.Format("{0}://{1}{2}/{3}", Request.Scheme, Request.Host, Request.Path.Value, sampleQueryModel.Id.ToString()); // Success; return the new sample query that was added along with its Uri return(Created(newSampleQueryUri, sampleQueryModel)); } catch (Exception exception) { return(new JsonResult(exception.Message) { StatusCode = StatusCodes.Status500InternalServerError }); } }
/// <summary> /// Gets the JSON file contents of the sample queries and returns a deserialized instance of a /// <see cref="SampleQueriesList"/> from this. /// </summary> /// <returns>The deserialized instance of a <see cref="SampleQueriesList"/>.</returns> private async Task <SampleQueriesList> GetSampleQueriesListAsync() { // Get the file contents from source string jsonFileContents = await _fileUtility.ReadFromFile(_queriesFilePathSource); if (string.IsNullOrEmpty(jsonFileContents)) { /* File is empty; instantiate a new list of sample query * objects that will be used to add new sample queries*/ return(new SampleQueriesList()); } // Return the list of the sample queries from the file contents return(SamplesService.DeserializeSampleQueriesList(jsonFileContents)); }
private static void ConfigureServices() { var services = new ServiceCollection(); services.AddLogging(configure => configure.AddConsole()); services.AddSingleton <SamplesProviderService>(); services.AddSingleton <ISamplesRepository, SamplesRepository>(); services.AddDriverService((provider, options) => { options.Host = "127.0.0.1"; options.Port = 50053; options.ServerServiceCollection.Add( SamplesService.BindService(provider.GetRequiredService <SamplesProviderService>())); }); serviceProvider = services.BuildServiceProvider(true); }
public void ListSamplesReturnsNull() { // Arrange var mockSamplesRepository = new Mock <ISamplesSqlRepository>(MockBehavior.Strict); mockSamplesRepository .Setup(x => x.ListSamples()) .Returns((IEnumerable <SampleModel>)null); var samplesService = new SamplesService(mockSamplesRepository.Object); // Act var response = samplesService.ListSamples(); // Assert mockSamplesRepository.VerifyAll(); Assert.IsNull(response); }
public static void BuildGlobals(IHeartrateRepository heartrateRepository, ISleepRepository sleepRepository, IStepsRepository stepsRepository, Database database) { StepsRepository = stepsRepository; SleepRepository = sleepRepository; HeartrateRepository = heartrateRepository; Database = database; HeartratePageViewModel = new HeartRatePageViewModel(HeartrateRepository); SamplesService = new SamplesService(HeartrateRepository, StepsRepository, SleepRepository); StepsPageViewModel = new StepsPageViewModel(); SettingsPageViewModel = new SettingsPageViewModel(); SleepPageViewModel = new SleepPageViewModel(); DevicePageViewModel = new DevicePageViewModel(); HomePageViewModel = new HomePageViewModel(); LanguageDictionary = new Dictionary <string, string> { { "Nederlands", "nl-NL" }, { "English", "en-EN" }, { "Deutsch", "de-DE" } }; }
public async Task <IActionResult> DeleteSampleQueryAsync(string id) { try { // Get the list of sample queries SampleQueriesList sampleQueriesList = await GetSampleQueriesListAsync(); // Get the list of policies SampleQueriesPolicies policies = await GetSampleQueriesPoliciesAsync(); // Check if the sample query model exists in the list of sample queries bool sampleQueryExists = sampleQueriesList.SampleQueries.Exists(x => x.Id == Guid.Parse(id)); if (!sampleQueryExists) { throw new InvalidOperationException($"No sample query found with id: {id}"); } string categoryName = sampleQueriesList.SampleQueries.Find(x => x.Id == Guid.Parse(id)).Category; string userPrincipalName = User.Identity.Name; // Check if authenticated user is authorized for this action bool isAuthorized = SamplesPolicyService.IsUserAuthorized(policies, userPrincipalName, categoryName, HttpMethods.Delete); if (!isAuthorized) { return(new JsonResult( $"{userPrincipalName} is not authorized to delete the sample query. Category: '{categoryName}'") { StatusCode = StatusCodes.Status401Unauthorized }); } if (sampleQueriesList.SampleQueries.Count == 0) { return(NotFound()); // list is empty; the sample query being searched is definitely not in an empty list } // Remove the sample query with given id from the list of sample queries sampleQueriesList = SamplesService.RemoveSampleQuery(sampleQueriesList, Guid.Parse(id)); // Get the serialized JSON string of the list of sample queries string newSampleQueriesJson = SamplesService.SerializeSampleQueriesList(sampleQueriesList); // Save the document-readable JSON-styled string to the source file await _fileUtility.WriteToFile(newSampleQueriesJson, _queriesFilePathSource); // Success; no content to return return(new JsonResult("Deleted successfully.") { StatusCode = StatusCodes.Status204NoContent }); } catch (InvalidOperationException invalidOpsException) { // Sample query with provided id not found return(new JsonResult(invalidOpsException.Message) { StatusCode = StatusCodes.Status404NotFound }); } catch (Exception exception) { return(new JsonResult(exception.Message) { StatusCode = StatusCodes.Status500InternalServerError }); } }
public async Task <IActionResult> DeleteSampleQueryAsync(string id) { try { // Get the list of sample queries SampleQueriesList sampleQueriesList = await _samplesStore.FetchSampleQueriesListAsync("en-US"); // Get the list of policies SampleQueriesPolicies policies = await GetSampleQueriesPoliciesAsync(); // Check if the sample query model exists in the list of sample queries bool sampleQueryExists = sampleQueriesList.SampleQueries.Exists(x => x.Id == Guid.Parse(id)); if (!sampleQueryExists) { throw new InvalidOperationException($"No sample query found with id: {id}"); } string categoryName = sampleQueriesList.SampleQueries.Find(x => x.Id == Guid.Parse(id)).Category; ClaimsIdentity identity = (ClaimsIdentity)User.Identity; IEnumerable <Claim> claims = identity.Claims; string userPrincipalName = (claims?.FirstOrDefault(x => x.Type.Equals(Constants.ClaimTypes.UpnJwt, StringComparison.OrdinalIgnoreCase)) ?? claims?.FirstOrDefault(x => x.Type.Equals(Constants.ClaimTypes.UpnUriSchema, StringComparison.OrdinalIgnoreCase)))?.Value; // Check if authenticated user is authorized for this action bool isAuthorized = SamplesPolicyService.IsUserAuthorized(policies, userPrincipalName, categoryName, HttpMethods.Delete); if (!isAuthorized) { return(new JsonResult( $"{userPrincipalName} is not authorized to delete the sample query. Category: '{categoryName}'") { StatusCode = StatusCodes.Status403Forbidden }); } if (sampleQueriesList.SampleQueries.Count == 0) { return(NotFound()); // list is empty; the sample query being searched is definitely not in an empty list } // Remove the sample query with given id from the list of sample queries sampleQueriesList = SamplesService.RemoveSampleQuery(sampleQueriesList, Guid.Parse(id)); // Get the serialized JSON string of the list of sample queries string newSampleQueriesJson = SamplesService.SerializeSampleQueriesList(sampleQueriesList); // Disabled functionality // await _fileUtility.WriteToFile(updatedSampleQueriesJson, _queriesFilePathSource); // Success; no content to return return(new JsonResult("Deleted successfully.") { StatusCode = StatusCodes.Status204NoContent }); } catch (InvalidOperationException invalidOpsException) { // Sample query with provided id not found return(new JsonResult(invalidOpsException.Message) { StatusCode = StatusCodes.Status404NotFound }); } catch (Exception exception) { return(new JsonResult(exception.Message) { StatusCode = StatusCodes.Status500InternalServerError }); } }
public async Task <IActionResult> UpdateSampleQueryAsync(string id, [FromBody] SampleQueryModel sampleQueryModel) { try { // Get the list of policies SampleQueriesPolicies policies = await GetSampleQueriesPoliciesAsync(); string categoryName = sampleQueryModel.Category; ClaimsIdentity identity = (ClaimsIdentity)User.Identity; IEnumerable <Claim> claims = identity.Claims; string userPrincipalName = (claims?.FirstOrDefault(x => x.Type.Equals(Constants.ClaimTypes.UpnJwt, StringComparison.OrdinalIgnoreCase)) ?? claims?.FirstOrDefault(x => x.Type.Equals(Constants.ClaimTypes.UpnUriSchema, StringComparison.OrdinalIgnoreCase)))?.Value; // Check if authenticated user is authorized for this action bool isAuthorized = SamplesPolicyService.IsUserAuthorized(policies, userPrincipalName, categoryName, HttpMethods.Put); if (!isAuthorized) { return(new JsonResult( $"{userPrincipalName} is not authorized to update the sample query. Category: '{categoryName}'") { StatusCode = StatusCodes.Status403Forbidden }); } // Get the list of sample queries SampleQueriesList sampleQueriesList = await _samplesStore.FetchSampleQueriesListAsync("en-US"); if (sampleQueriesList.SampleQueries.Count == 0) { return(NotFound()); // List is empty; the sample query being searched is definitely not in an empty list } // Check if the sample query model exists in the list of sample queries bool sampleQueryExists = sampleQueriesList.SampleQueries.Exists(x => x.Id == Guid.Parse(id)); if (!sampleQueryExists) { throw new InvalidOperationException($"No sample query found with id: {id}"); } // Update the provided sample query model into the list of sample queries SampleQueriesList updatedSampleQueriesList = SamplesService.UpdateSampleQueriesList(sampleQueriesList, sampleQueryModel, Guid.Parse(id)); // Get the serialized JSON string of this sample query string updatedSampleQueriesJson = SamplesService.SerializeSampleQueriesList(updatedSampleQueriesList); // Success; return the sample query model object that was just updated return(Ok(sampleQueryModel)); } catch (InvalidOperationException invalidOpsException) { // sample query with provided id not found return(new JsonResult(invalidOpsException.Message) { StatusCode = StatusCodes.Status404NotFound }); } catch (Exception exception) { return(new JsonResult(exception.Message) { StatusCode = StatusCodes.Status500InternalServerError }); } }
public async Task <IActionResult> UpdateSampleQueryAsync(string id, [FromBody] SampleQueryModel sampleQueryModel) { try { // Get the list of policies SampleQueriesPolicies policies = await GetSampleQueriesPoliciesAsync(); string categoryName = sampleQueryModel.Category; string userPrincipalName = User.Identity.Name; // Check if authenticated user is authorized for this action bool isAuthorized = SamplesPolicyService.IsUserAuthorized(policies, userPrincipalName, categoryName, HttpMethods.Put); if (!isAuthorized) { return(new JsonResult( $"{userPrincipalName} is not authorized to update the sample query. Category: '{categoryName}'") { StatusCode = StatusCodes.Status403Forbidden }); } // Get the list of sample queries SampleQueriesList sampleQueriesList = await GetSampleQueriesListAsync(); if (sampleQueriesList.SampleQueries.Count == 0) { return(NotFound()); // List is empty; the sample query being searched is definitely not in an empty list } // Check if the sample query model exists in the list of sample queries bool sampleQueryExists = sampleQueriesList.SampleQueries.Exists(x => x.Id == Guid.Parse(id)); if (!sampleQueryExists) { throw new InvalidOperationException($"No sample query found with id: {id}"); } // Update the provided sample query model into the list of sample queries SampleQueriesList updatedSampleQueriesList = SamplesService.UpdateSampleQueriesList(sampleQueriesList, sampleQueryModel, Guid.Parse(id)); // Get the serialized JSON string of this sample query string updatedSampleQueriesJson = SamplesService.SerializeSampleQueriesList(updatedSampleQueriesList); // Save the JSON string to the source file await _fileUtility.WriteToFile(updatedSampleQueriesJson, _queriesFilePathSource); // Success; return the sample query model object that was just updated return(Ok(sampleQueryModel)); } catch (InvalidOperationException invalidOpsException) { // sample query with provided id not found return(new JsonResult(invalidOpsException.Message) { StatusCode = StatusCodes.Status404NotFound }); } catch (Exception exception) { return(new JsonResult(exception.Message) { StatusCode = StatusCodes.Status500InternalServerError }); } }