public async Task Post_create_user_and_response_redirect_status_code() { //Arrange using var server = new TestServerBuilder() .UseCustomAuth(AdminAreaDefaults.DefaultUser, AuthSettings.Roles.Supervisor) .Build(); var client = server.CreateClient(); var payloadDict = new Dictionary <string, string> { { $"{nameof(CreateUserModel.Email)}", "*****@*****.**" }, { $"{nameof(CreateUserModel.Password)}", "FakePassword@123" }, { $"{nameof(CreateUserModel.ConfirmPassword)}", "FakePassword@123" }, }; //Act var response = await client.PostAsync("admin/users/create", new FormUrlEncodedContent(payloadDict)); //Assert Assert.Equal(HttpStatusCode.Redirect, response.StatusCode); }
public async Task Get_change_sensor_activation_state_and_response_ok_status_code_with_correct_content_type(int dataSetIndex) { //Arrange var dataSet = new List <Sensor> { Defaults.StaticSensor, Defaults.PortableSensor }; var currentSensor = dataSet[dataSetIndex]; using var server = new TestServerBuilder() .UseDefaultAuth() .UseSensors(currentSensor) .Build(); var client = server.CreateClient(); var query = HttpUtility.ParseQueryString(string.Empty); query["sensorId"] = currentSensor.Id.ToString(); var uriBuilder = new UriBuilder { Path = "admin/sensors/changeActivation", Query = query.ToString() ?? string.Empty }; //Act var response = await client.GetAsync(uriBuilder.Uri.PathAndQuery); //Assert response.EnsureSuccessStatusCode(); Assert.Equal("text/html; charset=utf-8", response.Content.Headers.ContentType.ToString()); }
public async Task Delete_sensor_and_response_not_found_status_code_with_correct_content_type() { //Arrange using var server = new TestServerBuilder() .UseCustomAuth(AdminAreaDefaults.DefaultUser, AuthSettings.Roles.Supervisor) .Build(); var client = server.CreateClient(); var query = HttpUtility.ParseQueryString(string.Empty); query[$"{nameof(DeleteSensorViewModel.Model)}.{nameof(DeleteSensorModel.Id)}"] = "123"; var uriBuilder = new UriBuilder { Path = "admin/sensors/delete", Query = query.ToString() ?? string.Empty }; //Act var response = await client.DeleteAsync(uriBuilder.Uri.PathAndQuery); //Assert Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); Assert.Equal("text/html; charset=utf-8", response.Content.Headers.ContentType.ToString()); }
public async Task Post_change_sensor_activation_state_and_response_redirect_status_code_with_correct_content_type(int dataSetIndex) { //Arrange var dataSet = new List <Sensor> { Defaults.StaticSensor, Defaults.PortableSensor }; var currentSensor = dataSet[dataSetIndex]; using var server = new TestServerBuilder() .UseDefaultAuth() .UseSensors(currentSensor) .Build(); var client = server.CreateClient(); var payload = new Dictionary <string, string> { { $"{nameof(ChangeActivationSensorViewModel.Model)}.{nameof(ChangeActivationSensorModel.Id)}", currentSensor.Id.ToString() }, }; //Act var response = await client.PostAsync("admin/sensors/changeActivation", new FormUrlEncodedContent(payload)); //Assert Assert.Equal(HttpStatusCode.Redirect, response.StatusCode); }
public async Task Create_user_and_response_conflict_status_code_when_email_is_already_taken() { //Arrange var user = AdminAreaDefaults.DefaultUser; var email = user.Email; using var server = new TestServerBuilder() .UseUsers(user) .UseCustomAuth(AdminAreaDefaults.DefaultUser, AuthSettings.Roles.Supervisor) .Build(); var client = server.CreateClient(); var userModel = new CreateUserModel { Email = email, Password = "******", ConfirmPassword = "******" }; var userModelJsonStr = JsonConvert.SerializeObject(userModel); //Act var response = await client.PostAsync("api/admin/users", new StringContent(userModelJsonStr, Encoding.UTF8, "application/json")); //Assert Assert.Equal(HttpStatusCode.Conflict, response.StatusCode); }
public async Task Get_change_static_sensor_visibility_state_and_response_ok_status_code_with_correct_content_type() { //Arrange var sensor = Defaults.StaticSensor; using var server = new TestServerBuilder() .UseDefaultAuth() .UseSensors(sensor) .Build(); var client = server.CreateClient(); var query = HttpUtility.ParseQueryString(string.Empty); query["sensorId"] = sensor.Id.ToString(); var uriBuilder = new UriBuilder { Path = "admin/sensors/changeVisibilityStaticSensor", Query = query.ToString() ?? string.Empty }; //Act var response = await client.GetAsync(uriBuilder.Uri.PathAndQuery); //Assert response.EnsureSuccessStatusCode(); Assert.Equal("text/html; charset=utf-8", response.Content.Headers.ContentType.ToString()); }
public async Task Post_create_static_sensor_and_response_redirect_status_code() { //Arrange using var server = new TestServerBuilder() .UseDefaultAuth() .Build(); var client = server.CreateClient(); var payloadDict = new Dictionary <string, string> { { $"{nameof(CreateStaticSensorViewModel.Model)}.{nameof(CreateStaticSensorModel.Latitude)}", Defaults.Latitude.ToCommaSeparatedString() }, { $"{nameof(CreateStaticSensorViewModel.Model)}.{nameof(CreateStaticSensorModel.Longitude)}", Defaults.Longitude.ToCommaSeparatedString() }, { $"{nameof(CreateStaticSensorViewModel.Model)}.{nameof(CreateStaticSensorModel.ApiKey)}", (CryptoHelper.GenerateApiKey()) } }; //Act var response = await client.PostAsync("admin/sensors/createStaticSensor", new FormUrlEncodedContent(payloadDict)); //Assert Assert.Equal(HttpStatusCode.Redirect, response.StatusCode); }
public async Task Change_sensor_activation_and_response_ok_status_code(int dataSetIndex, bool isActive) { //Arrange var dataSet = new List <Sensor> { Defaults.ActivePortableSensor, Defaults.ActiveStaticSensor }; var currentSensor = dataSet[dataSetIndex]; using var server = new TestServerBuilder() .UseSensors(currentSensor) .UseDefaultAuth() .Build(); var client = server.CreateClient(); var changeActivationSensor = new ChangeActivationSensorModel() { Id = currentSensor.Id, IsActive = isActive }; var changeActivationSensorJsonStr = JsonConvert.SerializeObject(changeActivationSensor); //Act var response = await client.PostAsync("api/admin/sensors/changeActivation", new StringContent(changeActivationSensorJsonStr, Encoding.UTF8, "application/json")); //Assert response.EnsureSuccessStatusCode(); }
public async Task Change_user_password_and_response_ok_status_code() { //Arrange var user = AdminAreaDefaults.DefaultUser; using var server = new TestServerBuilder() .UseUsers(user) .UseCustomAuth(AdminAreaDefaults.DefaultUser, AuthSettings.Roles.Supervisor) .Build(); var client = server.CreateClient(); var changePasswordModel = new UserChangePasswordModel { Id = user.Id, Password = "******", ConfirmPassword = "******" }; var changePasswordModelJsonStr = JsonConvert.SerializeObject(changePasswordModel); //Act var response = await client.PostAsync("api/admin/users/changePassword", new StringContent(changePasswordModelJsonStr, Encoding.UTF8, "application/json")); //Assert response.EnsureSuccessStatusCode(); }
public async Task Delete_sensor_and_response_ok_status_code(int dataSetIndex, bool isCompletely) { //Arrange var dataSet = new List <Sensor> { Defaults.PortableSensor, Defaults.StaticSensor }; var currentSensor = dataSet[dataSetIndex]; using var server = new TestServerBuilder() .UseSensors(currentSensor) .UseCustomAuth(AdminAreaDefaults.DefaultUser, AuthSettings.Roles.Supervisor) .Build(); var client = server.CreateClient(); var deleteSensor = new DeleteSensorModel { Id = currentSensor.Id, IsCompletely = isCompletely }; var deleteSensorJsonStr = JsonConvert.SerializeObject(deleteSensor); //Act var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Delete, "api/admin/sensors") { Content = new StringContent(deleteSensorJsonStr, Encoding.UTF8, "application/json") }); //Assert response.EnsureSuccessStatusCode(); }
public async Task Post_create_portable_sensor_and_response_ok_status_code_with_correct_content_type( int dataSetIndex) { //Arrange var dataSet = new List <Dictionary <string, string> > { //empty model new Dictionary <string, string>(), //empty api key new Dictionary <string, string> { { $"{nameof(CreatePortableSensorViewModel.Model)}.{nameof(CreatePortableSensorModel.ApiKey)}", null } } }; var currentDataSet = dataSet[dataSetIndex]; using var server = new TestServerBuilder() .UseDefaultAuth() .Build(); var client = server.CreateClient(); //Act var response = await client.PostAsync("admin/sensors/createPortableSensor", new FormUrlEncodedContent(currentDataSet)); //Assert response.EnsureSuccessStatusCode(); Assert.Equal("text/html; charset=utf-8", response.Content.Headers.ContentType.ToString()); }
public async Task allow_refresh_an_accessToken_from_refresh_token() { var server = new TestServerBuilder() .WithSuccessAuthentication() .WithInMemoryStore() .Build(); var client = server.CreateClient(); var response = await client.PostAsync("/token", GrantTypes.APasswordGrantType()); response.EnsureSuccessStatusCode(); var tokenResponse = await ReadRequestResponseToJwtTokenResponse(response); response = await client.PostAsync("/token", GrantTypes.ARefreshTokenGranType(tokenResponse.RefreshToken)); response.EnsureSuccessStatusCode(); var refreshTokenResponse = await ReadRequestResponseToJwtTokenResponse(response); refreshTokenResponse.AccessToken.Should().NotBeEmpty(); refreshTokenResponse.RefreshToken.Should().NotBeEmpty(); refreshTokenResponse.AccessToken.Should().NotBe(tokenResponse.AccessToken); refreshTokenResponse.RefreshToken.Should().NotBe(tokenResponse.RefreshToken); }
public async Task reject_invalid_grant_type() { var server = new TestServerBuilder() .WithSuccessAuthentication() .Build(); var response = await server.CreateClient().PostAsync("/token", GrantTypes.AnInvalidGrantType()); var content = await response.Content.ReadAsStringAsync(); content.Should().Be(ServerMessages.InvalidGrantType); response.StatusCode.Should().Be(StatusCodes.Status400BadRequest); }
public async Task Get_get_all_sensors_and_response_ok_status_code() { //Arrange using var server = new TestServerBuilder() .Build(); var client = server.CreateClient(); //Act var response = await client.GetAsync("api/sensors"); //Assert response.EnsureSuccessStatusCode(); }
public async Task Get_all_users_and_response_ok_status_code() { //Arrange using var server = new TestServerBuilder() .UseCustomAuth(AdminAreaDefaults.DefaultUser, AuthSettings.Roles.Supervisor) .Build(); var client = server.CreateClient(); //Act var response = await client.GetAsync("api/admin/users"); //Assert response.EnsureSuccessStatusCode(); }
public async Task Create_portable_sensor_and_response_bad_request_status_code() { //Arrange using var server = new TestServerBuilder() .UseDefaultAuth() .Build(); var client = server.CreateClient(); //Act var response = await client.PostAsync("api/admin/sensors/portable", new StringContent(string.Empty, Encoding.UTF8, "application/json")); //Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async Task Get_create_user_and_response_ok_status_code_with_correct_content_type() { //Arrange using var server = new TestServerBuilder() .UseCustomAuth(AdminAreaDefaults.DefaultUser, AuthSettings.Roles.Supervisor) .Build(); var client = server.CreateClient(); //Act var response = await client.GetAsync("admin/users/create"); //Assert response.EnsureSuccessStatusCode(); Assert.Equal("text/html; charset=utf-8", response.Content.Headers.ContentType.ToString()); }
public async Task Get_get_all_sensors_and_response_ok_status_code_with_correct_content_type(string url) { //Arrange using var server = new TestServerBuilder() .UseDefaultAuth() .Build(); var client = server.CreateClient(); //Act var response = await client.GetAsync(url); //Assert response.EnsureSuccessStatusCode(); Assert.Equal("text/html; charset=utf-8", response.Content.Headers.ContentType.ToString()); }
public async Task Post_create_static_sensor_and_response_ok_status_code_with_correct_content_type() { //Arrange using var server = new TestServerBuilder() .UseDefaultAuth() .Build(); var client = server.CreateClient(); //Act var response = await client.PostAsync("admin/sensors/createStaticSensor", new StringContent(string.Empty)); //Assert response.EnsureSuccessStatusCode(); Assert.Equal("text/html; charset=utf-8", response.Content.Headers.ContentType.ToString()); }
CreateConnection() { var server = new TestServerBuilder() .AddGraphController <ApolloSubscriptionController>() .AddSubscriptionServer((options) => { options.KeepAliveInterval = TimeSpan.FromMinutes(15); }) .Build(); var socketClient = server.CreateClient(); var subServer = server.ServiceProvider.GetService <ISubscriptionServer <GraphSchema> >(); var apolloClient = await subServer.RegisterNewClient(socketClient); return(socketClient, apolloClient as ApolloClientProxy <GraphSchema>); }
public async Task Delete_sensor_and_response_forbidden_status_code() { //Arrange using var server = new TestServerBuilder() .UseDefaultAuth() .Build(); var client = server.CreateClient(); //Act var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Delete, "api/admin/sensors") { Content = new StringContent(string.Empty, Encoding.UTF8, "application/json") }); //Assert Assert.Equal(HttpStatusCode.Forbidden, response.StatusCode); }
public async Task Delete_sensor_and_response_bad_request_status_code() { //Arrange using var server = new TestServerBuilder() .UseCustomAuth(AdminAreaDefaults.DefaultUser, AuthSettings.Roles.Supervisor) .Build(); var client = server.CreateClient(); //Act var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Delete, "api/admin/sensors") { Content = new StringContent(string.Empty, Encoding.UTF8, "application/json") }); //Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async Task returns_not_found_http_status_code_if_the_feature_does_not_exists() { var server = new TestServerBuilder() .WithEndPoint(EndPointPath) .WithFeature(FeatureName) .WithFeatureParameters( new Dictionary <string, object> { { "release-date", DateTime.UtcNow.AddDays(-1) } }) .Build(); var response = await server.CreateClient().GetAsync($"{EndPointPath}?featureName=bad-feature"); response.StatusCode.Should().Be(HttpStatusCode.NotFound); }
public async Task return_a_valid_jwt_token_when_grant_type_password() { var server = new TestServerBuilder() .WithSuccessAuthentication() .Build(); var response = await server.CreateClient().PostAsync("/token", GrantTypes.APasswordGrantType()); response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsStringAsync(); var jwtTokenResponse = JsonConvert.DeserializeObject <JwtTokenResponse>(content); jwtTokenResponse.Should().NotBeNull(); jwtTokenResponse.AccessToken.Should().NotBeNull(); jwtTokenResponse.ExpiresIn.Should().BeGreaterThan(0); }
public async Task Get_login_and_response_ok_status_code_with_correct_content_type() { //Arrange using var server = new TestServerBuilder() .Build(); var client = server.CreateClient(); var uriBuilder = new UriBuilder { Path = "admin/account/login", }; //Act var response = await client.GetAsync(uriBuilder.Uri.PathAndQuery); //Assert response.EnsureSuccessStatusCode(); Assert.Equal("text/html; charset=utf-8", response.Content.Headers.ContentType.ToString()); }
public async Task Create_user_and_response_bad_request_status_code(int dataSetIndex) { //Arrange var dataSet = new List <string> { string.Empty, //no password JsonConvert.SerializeObject(new CreateUserModel { Email = "*****@*****.**", }), //wrong email JsonConvert.SerializeObject(new CreateUserModel { Email = "test", Password = "******", ConfirmPassword = "******" }), //password not match JsonConvert.SerializeObject(new CreateUserModel { Email = "*****@*****.**", Password = "******", ConfirmPassword = "******" }) }; var currentData = dataSet[dataSetIndex]; using var server = new TestServerBuilder() .UseCustomAuth(AdminAreaDefaults.DefaultUser, AuthSettings.Roles.Supervisor) .Build(); var client = server.CreateClient(); //Act var response = await client.PostAsync("api/admin/users", new StringContent(currentData, Encoding.UTF8, "application/json")); //Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async Task Change_static_sensor_visibility_and_response_not_found_status_code() { //Arrange using var server = new TestServerBuilder() .UseDefaultAuth() .Build(); var client = server.CreateClient(); var changeVisibilityStaticSensor = new ChangeVisibilityStaticSensorModel { Id = 1 }; var changeVisibilityStaticSensorJsonStr = JsonConvert.SerializeObject(changeVisibilityStaticSensor); //Act var response = await client.PostAsync("api/admin/sensors/changeActivation", new StringContent(changeVisibilityStaticSensorJsonStr, Encoding.UTF8, "application/json")); //Assert Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); }
public async Task Create_portable_sensor_and_response_ok_status_code() { //Arrange using var server = new TestServerBuilder() .UseDefaultAuth() .Build(); var client = server.CreateClient(); var portableSensor = new CreatePortableSensorModel { ApiKey = CryptoHelper.GenerateApiKey() }; var portableSensorJsonStr = JsonConvert.SerializeObject(portableSensor); //Act var response = await client.PostAsync("api/admin/sensors/portable", new StringContent(portableSensorJsonStr, Encoding.UTF8, "application/json")); //Assert response.EnsureSuccessStatusCode(); }
public async Task allow_invoking_authorized_controller_with_a_token() { var server = new TestServerBuilder() .WithSuccessAuthentication() .Build(); var client = server.CreateClient(); var response = await client.PostAsync("/token", GrantTypes.APasswordGrantType()); response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsStringAsync(); var jwtTokenResponse = JsonConvert.DeserializeObject <JwtTokenResponse>(content); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", jwtTokenResponse.AccessToken); response = await client.GetAsync("/api/test"); response.EnsureSuccessStatusCode(); }
public async Task Login_and_response_not_found_status_code() { //Arrange using var server = new TestServerBuilder() .Build(); var client = server.CreateClient(); var model = new LoginModel { Email = "*****@*****.**", Password = AdminAreaDefaults.DefaultUserPassword }; var modelJsonStr = JsonConvert.SerializeObject(model); //Act var response = await client.PostAsync("api/admin/account/login", new StringContent(modelJsonStr, Encoding.UTF8, "application/json")); //Assert Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); }