Exemplo n.º 1
0
        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);
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 17
0
        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);
        }
Exemplo n.º 25
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);
        }