Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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
                });
            }
        }
Exemplo n.º 9
0
        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
                });
            }
        }
Exemplo n.º 10
0
        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
                });
            }
        }