public void TestUserIdValid(ValidUserIdTestCases inputType)
        {
            var parameterRequest = new Dictionary <string, object>(ResetUserPasswordParameters);

            parameterRequest.Remove("forcePasswordChange");
            PrivateApiResponse <ResetUserPasswordResponse> response = null;

            if (inputType == ValidUserIdTestCases.AdminRole)
            {
                var resetUserPassHandler = new ResetUserPasswordManager();
                response = resetUserPassHandler.ResetUserPassword(parameterRequest, HttpMethod.Post);
                PrAssert.That(response, PrIs.SuccessfulResponse().And.HttpCode(System.Net.HttpStatusCode.OK));
                PrAssert.That(response.Result.Password.Count(), PrIs.GreaterThanOrEqualTo(1));
                LastPassword = response.Result.Password;
            }
            else
            {
                Common common = new Common();
                var    info   = AuthenticationInfoProvider.Current.Manager.GetAllAvailableUsers(new UserSpecBuilder().Admin(false));
                response = common.LoginAndSendRequestWithOtherAccount <ResetUserPasswordResponse>(info.First().Company.Name, info.First().Login, info.First().Password, "/privateapi/authentication/reset-user-password", parameterRequest);
                PrAssert.That(response, PrIs.SuccessfulResponse().And.HttpCode(System.Net.HttpStatusCode.OK));
                PrAssert.That(response.Result.Password.Count(), PrIs.GreaterThanOrEqualTo(1));
            }
            LastPassword = response.Result.Password;
        }
        public void InvalidEntrySpecial(InvalidSpecialCondition inputType)
        {
            var defaultCompanyLoginId   = TestContext.CurrentContext.Test.Properties.Get("companyName").ToString();
            var defaultUserName         = TestContext.CurrentContext.Test.Properties.Get("adminUserLogin").ToString();
            var tokenFromCurrentCompany = Common.RefreshToken(defaultCompanyLoginId, defaultUserName);

            var resetPassHandler = new ResetPasswordManager();
            var parameterRequest = new Dictionary <string, object>(Common.ResetPasswordParameters);
            PrivateApiResponse <object> response = null;

            parameterRequest["companyLoginId"] = defaultCompanyLoginId;
            parameterRequest["username"]       = defaultUserName;
            parameterRequest["newPassword"]    = NewPassword;
            parameterRequest["token"]          = tokenFromCurrentCompany;

            if (inputType == InvalidSpecialCondition.WrongContentType)
            {
                response = resetPassHandler.ResetPassword(parameterRequest, System.Net.Http.HttpMethod.Post, Common.InvalidEntrySpecialTestCasesMapper[InvalidSpecialCondition.WrongContentType].ToString());
            }
            else
            {
                string jsonContent = string.Empty;
                if (inputType == InvalidSpecialCondition.BrokenJsonFormat)
                {
                    jsonContent = "{\"companyLoginId\": \"" + defaultCompanyLoginId + "\", \"username\": \"" + defaultUserName + "\", \"newPassword\": \"" + NewPassword + "\", \"token\": \"" + Common.RefreshToken(defaultCompanyLoginId, defaultUserName) + "\"";
                }
                else
                {
                    jsonContent = Common.InvalidEntrySpecialTestCasesMapper[inputType].ToString();
                }
                response = resetPassHandler.ResetPassword(jsonContent, System.Net.Http.HttpMethod.Post);
            }
            LastPassword = Common.CheckUpdatedPassword(response) ? parameterRequest["newPassword"].ToString() : string.Empty;
            PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(InvalidSpecialCondition.WrongContentType == inputType ? System.Net.HttpStatusCode.UnsupportedMediaType : System.Net.HttpStatusCode.BadRequest));
        }
Esempio n. 3
0
        public void InvalidEntrySpecial(InvalidSpecialCondition inputType)
        {
            var defaultUserId        = TestContext.CurrentContext.Test.Properties.Get("adminUserId");
            var resetUserPassHandler = new ResetUserPasswordManager();
            var parameterRequest     = new Dictionary <string, object>(Common.ResetUserPasswordParameters);
            PrivateApiResponse <ResetUserPasswordResponse> response = null;

            if (inputType == InvalidSpecialCondition.WrongContentType)
            {
                response = resetUserPassHandler.ResetUserPassword(parameterRequest, System.Net.Http.HttpMethod.Post, Common.InvalidEntrySpecialTestCasesMapper[InvalidSpecialCondition.WrongContentType].ToString());
            }
            else
            {
                string jsonContent = string.Empty;
                if (inputType == InvalidSpecialCondition.BrokenJsonFormat)
                {
                    jsonContent = "{\"userId\": \"" + defaultUserId + "\"";
                }
                else
                {
                    jsonContent = Common.InvalidEntrySpecialTestCasesMapper[inputType].ToString();
                }
                response = resetUserPassHandler.ResetUserPassword(jsonContent, System.Net.Http.HttpMethod.Post);
            }
            LastPassword = Common.GetResetUserPassword(response);
            PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(inputType == InvalidSpecialCondition.WrongContentType ? System.Net.HttpStatusCode.UnsupportedMediaType : System.Net.HttpStatusCode.BadRequest));
        }
Esempio n. 4
0
        private void VerifyData(ResourceId resourceId, ValidTestCases inputType)
        {
            PrivateApiResponse <RecordsGetResponseItem> originalRecordData = null;

            switch (inputType)
            {
            case ValidTestCases.BaseId:
                //Read base id existed
                originalRecordData = GetResultRecordData(resourceId, new int[] { GetRecordId(resourceId, 1) });
                PrAssert.That(originalRecordData.Result.Total, Is.EqualTo(1), "Base id does not existed in database!");
                break;

            case ValidTestCases.MergeId:
                //Read merge id is not existed
                originalRecordData = GetResultRecordData(resourceId, new int[] { GetRecordId(resourceId, 4) });
                PrAssert.That(originalRecordData, PrIs.WithHttpCode(System.Net.HttpStatusCode.InternalServerError));
                break;

            case ValidTestCases.ArrayMergeId:
                //Read array merge id are not existed
                originalRecordData = GetResultRecordData(resourceId, new int[] { GetRecordId(resourceId, 6), GetRecordId(resourceId, 7) });
                PrAssert.That(originalRecordData, PrIs.WithHttpCode(System.Net.HttpStatusCode.InternalServerError));
                break;

            case ValidTestCases.Mapping:
                //Read elements are correct value

                string[] keys = ValuesMapper[resourceId].Keys.ToArray();

                originalRecordData = GetResultRecordData(resourceId, new int[] { GetRecordId(resourceId, 8) }, keys);

                string     keyValue    = string.Empty;
                string     recordValue = string.Empty;
                List <int> ids         = new List <int>();

                foreach (var record in originalRecordData.Result.Items)
                {
                    foreach (var key in keys)
                    {
                        keyValue = ValuesMapper[resourceId][key].ToString();

                        if (key == $"{resourceId.ToString()}.P_Phase")
                        {
                            recordValue = JsonConvert.DeserializeObject <List <int> >(record[key].ToString()).Single().ToString();
                            keyValue    = OptionsClientReader.Data.Single().Value.RecordId.ToString();
                        }
                        else if (key.Contains("P_UpdatedBy") || key.Contains("P_RegisteredBy") || key.Contains("P_Owner"))
                        {
                            recordValue = JsonConvert.DeserializeObject <List <int> >(record[key].ToString()).Single().ToString();
                        }
                        else
                        {
                            recordValue = record[key].ToString();
                        }
                        PrAssert.That(recordValue, Is.EqualTo(keyValue), "Field value is not correct!");
                    }
                }
                break;
            }
        }
Esempio n. 5
0
 private static void VerifyDataForEachField(PrivateApiResponse <Dictionary <string, object> > response, FieldQueryParameters field, int index, Operations op, bool searchMail = false)
 {
     if (BadRequestCases.Contains($"{field.ToString()}.{op.ToString()}"))
     {
         PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest));
     }
     else
     if (IgnoredTempCases.Contains($"{field.ToString()}.{op.ToString()}"))
     {
         //Nothing to do, b/c the response does not contain for this parameters
         PrAssert.That(response, PrIs.SuccessfulResponse().And.HttpCode(System.Net.HttpStatusCode.OK));
     }
     else
     {
         PrAssert.That(response, PrIs.SuccessfulResponse().And.HttpCode(System.Net.HttpStatusCode.OK));
         PrAssert.That(response.Result["totalHits"], PrIs.GreaterThan(0), "The response is empty.");
         foreach (var result in JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(response.Result["hits"].ToString()))
         {
             var fieldName = field.GetEnumStringValue();
             if (field == FieldQueryParameters.Body)
             {
                 fieldName = "preview";
             }
             Assertions[op](result[fieldName].ToString(), MappingValues[field](index, searchMail ? DateListMultipleMail.ElementAt(NumberOfMail / 2) : DateListSingleMail.ElementAt(NumberOfMail / 2)).ToString());
         }
     }
 }
Esempio n. 6
0
        private void PerformParameterTestForUploadOperation(FileUploadRequest reqeust, int expectedErrorCode, bool isExpectedSuccess)
        {
            var handler = new DefaultManager();

            var str = Newtonsoft.Json.JsonConvert.SerializeObject(reqeust).Replace("/n", Environment.NewLine).Replace("/0", '\u0000'.ToString());

            PrivateApiResponse <FileUploadResponse> response = null;

            using (LogHelper.LoggerForCurrentTest.EnterReproStep("Send an upload file request with special string parameter's value."))
            {
                response = handler.Send <FileUploadResponse>(FileStorageManager.EndPoint, str, HttpMethod.POST);
            }
            try
            {
                if (isExpectedSuccess)
                {
                    PrAssert.That(response, PrIs.SuccessfulResponse());
                }
                else
                {
                    PrAssert.That(response, PrIs.ErrorResponse().And.ErrorCode(expectedErrorCode).And.HttpCode(400));
                }
            }
            finally
            {
                var id = response?.Result?.Id;
                if (id != null)
                {
                    new FileStorageManager().Delete(id);
                }
            }
        }
Esempio n. 7
0
        public async Task <PrivateApiResponse> Register([FromBody] RegisterModel user)
        {
            var response = new PrivateApiResponse();

            try
            {
                using (var connection = GetConnection())
                {
                    connection.Open();
                    if (DoesUserExist(user.Email))
                    {
                        response.ApiResponseCode = ApiResponseCode.UserAlreadyExistsEmail;
                    }
                    else
                    {
                        var insertResponse = await InsertUser(user, connection);

                        response.ResponseCode = insertResponse.ResponseCode;
                        if (insertResponse.Success)
                        {
                            var databaseUser = GetUserFrom(user.Email);
                            response.Email     = databaseUser.Email;
                            response.FirstName = databaseUser.FirstName;
                            response.LastName  = databaseUser.LastName;
                            response.Token     = insertResponse.Token;
                        }
                    }
                }
            }
            catch
            {
                response.ApiResponseCode = ApiResponseCode.InternalError;
            }
            return(response);
        }
        public void DeleteValidOption(RequestType requestType, PhysicalCases inputType)
        {
            var optionHandler = new OptionManager();
            PrivateApiResponse <List <OptionDeleteResponse> > response = null;
            var ids           = new List <string>();
            var urlParameters = new Dictionary <string, string> {
                ["operation"] = "delete"
            };

            switch (inputType)
            {
            case PhysicalCases.No:
                ids = GetIdsFromCurrentContext(requestType, "singleParentOptionCreateResponse", "multipleParentOptionCreateResponse");
                break;

            case PhysicalCases.True:
                ids = GetIdsFromCurrentContext(requestType, "singleParentOptionCreateResponse", "multipleParentOptionCreateResponse");
                urlParameters["physical"] = "true";
                break;

            case PhysicalCases.False:
                ids = GetIdsFromCurrentContext(requestType, "singleChildrenOptionCreateResponse", "multipleChildrenOptionCreateResponse");
                urlParameters["physical"] = "false";
                break;
            }
            response = optionHandler.DeleteOptions(ids, urlParameters);
            PrAssert.That(response, PrIs.SuccessfulResponse(), $"Option Delete operation was not successful. HTTP response code is {response.HttpStatusCode}");

            //Verify
            foreach (var id in ids)
            {
                Common.VerifyOptionNotExist(int.Parse(id));
            }
        }
Esempio n. 9
0
        public void InvalidEntrySpecial(InvalidSpecialCondition inputType)
        {
            var creds             = AuthenticationInfoProvider.GetAuthSpecForCurrentTest();
            var defaultPassword   = creds.Users.Values.Single().Password.ToString();
            var updatePassHandler = new UpdatePasswordManager();
            var parameterRequest  = new Dictionary <string, object>(Common.UpdatePasswordParameters);
            PrivateApiResponse <object> response = null;

            if (inputType == InvalidSpecialCondition.WrongContentType)
            {
                response = updatePassHandler.UpdatePassword(parameterRequest, System.Net.Http.HttpMethod.Put, InvalidEntrySpecialTestCasesMapper[InvalidSpecialCondition.WrongContentType].ToString());
            }
            else
            {
                string jsonContent = string.Empty;
                if (inputType == InvalidSpecialCondition.BrokenJsonFormat)
                {
                    jsonContent = string.Format(InvalidEntrySpecialTestCasesMapper[InvalidSpecialCondition.BrokenJsonFormat].ToString(), defaultPassword);
                }
                else
                {
                    jsonContent = InvalidEntrySpecialTestCasesMapper[inputType].ToString();
                }
                response = updatePassHandler.UpdatePassword(jsonContent, System.Net.Http.HttpMethod.Put);
            }
            LastPassword = Common.CheckUpdatedPassword(response) ? NewPassword : string.Empty;
            PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest));
        }
Esempio n. 10
0
        public static void VerifySearchResult(PrivateApiResponse <SearchResponse> response, ResourceId resourceId, SearchDateFieldCases.TestCases cases, string fieldName, bool isAsc, HrbcRecordCreator RecordsCreator, int NumRecordsEachCase, string DateTimeResponseFormat)
        {
            PrAssert.That(response, PrIs.SuccessfulResponse(), "Search unsuccesfull");
            PrAssert.That(response.Result.Items, PrIs.Not.Null.And.Not.Empty, "Null or Empty search response");
            PrAssert.That(response.Result.Items.Count, PrIs.GreaterThanOrEqualTo(NumRecordsEachCase), "Unexpected numbers of search results");
            List <int> ids = response.Result.Items;

            for (int i = (int)cases * NumRecordsEachCase; i < (int)cases * NumRecordsEachCase + NumRecordsEachCase; i++)
            {
                PrAssert.That(ids.Contains((int)RecordsCreator.Data[$"{resourceId}{i}"].Id), "The expected id is not in search result");
            }
            var recordHandler = new RecordManager();
            var res           = recordHandler.ReadRecords(
                RecordRequestComposer.ComposeReadRequest()
                .ForResource((Porters.TestCoreFramework.Enums.ResourceType)(int) resourceId)
                .WithIds(ids.ToArray())
                .Fields(fieldName, $"{ resourceId}.P_Id")
                .Result);
            List <long> expectedIdsList;

            if (isAsc)
            {
                expectedIdsList = res.Result.Items.OrderBy(item => DateTime.ParseExact(item[fieldName].ToString(), DateTimeResponseFormat, System.Globalization.CultureInfo.InvariantCulture)).Select(s => (long)s[$"{resourceId}.P_Id"]).ToList();
            }
            else
            {
                expectedIdsList = res.Result.Items.OrderByDescending(item => DateTime.ParseExact(item[fieldName].ToString(), DateTimeResponseFormat, System.Globalization.CultureInfo.InvariantCulture)).Select(s => (long)s[$"{resourceId}.P_Id"]).ToList();
            }
            for (int i = 0; i < ids.Count; i++)
            {
                PrAssert.That(expectedIdsList[i], PrIs.EqualTo(ids[i]), "The search result is not order as expected");
            }
        }
Esempio n. 11
0
 private void PerformTest(PrivateApiResponse <UnlockUserResponse> result, string testcase = null)
 {
     PrAssert.That(result, PrIs.ErrorResponse().With.HttpCode(System.Net.HttpStatusCode.BadRequest));
     if (testcase == InvalidSpecial.ErrorConnectDb.ToString())
     {
         PrivateApiConnection.GetConnectionForCurrentTest().Authenticate(DefaultUser.Company.Name, DefaultUser.Login, DefaultUser.Password);
     }
 }
Esempio n. 12
0
 public static void AssertIsValueEquals(this PrivateApiResponse actualResponse,
                                        PrivateApiResponse expectedResponse)
 {
     Assert.That(actualResponse, Is.Not.Null);
     Assert.That(actualResponse.Signature, Is.EqualTo(expectedResponse.Signature));
     Assert.That(actualResponse.Nonce, Is.EqualTo(expectedResponse.Nonce));
     Assert.That(actualResponse.ServerId, Is.EqualTo(expectedResponse.ServerId));
     Assert.That(actualResponse.Body, Is.EqualTo(expectedResponse.Body));
 }
        private static void VerifyData(PrivateApiResponse <CreateTemplateReplaceResponse> result)
        {
            var handler  = new DefaultManager();
            var response = handler.Send <GetTemplateResponse>(TemplateEndPoint, new List <KeyValuePair <string, string> > {
                new KeyValuePair <string, string>(IdParam, Id.ToString())
            }, HttpMethod.GET);

            PrAssume.That(response, PrIs.SuccessfulResponse().And.HttpCode(System.Net.HttpStatusCode.OK));
            PrAssert.That(response.Result.Subject, PrIs.EqualTo(result.Result.Subject), "Subject does not match.");
            PrAssert.That(response.Result.Body, PrIs.EqualTo(result.Result.Body), "Body does not match.");
        }
Esempio n. 14
0
 private static void VerifyResetLayoutResponse(HrbcSublistManager handler, PrivateApiResponse <SublistsMenuResponse> resetResponse)
 {
     foreach (var key in resetResponse.Result.Values.Keys)
     {
         var sublistRequest  = SublistMenuTestData.GetSublistMenuDefaultRequest(resetResponse.Result.Values[key].Id, SublistMenuTestData.ValidUnixTimeStamp);
         var sublistResponse = handler.SublistMenuDefault <SublistMenuDefaultResponse>(sublistRequest, HttpMethod.GET.ToNetHttpMethod());
         PrAssume.That(sublistResponse, PrIs.SuccessfulResponse(), "Can not get sublist menu default");
         foreach (var field in resetResponse.Result.Values[key].IdFields.Enabled)
         {
             PrAssert.That(sublistResponse.Result.IdFields.Enabled.Contains(field), "Response not contains the expected fields");
         }
     }
 }
Esempio n. 15
0
 private static void ExceptedCases(PrivateApiResponse <Dictionary <string, object> > response, string field, string op)
 {
     if (BadRequestCases.Contains($"{field.ToString()}.{op.ToString()}"))
     {
         PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest));
     }
     else
     if (IgnoredTempCases.Contains($"{field.ToString()}.{op.ToString()}"))
     {
         //Nothing to do, b/c the response does not contain for this parameters
         PrAssert.That(response, PrIs.SuccessfulResponse().And.HttpCode(System.Net.HttpStatusCode.OK));
     }
 }
Esempio n. 16
0
 private void PerformTestForRepetitiveParametersInUrl(bool allAreSame, HttpMethod httpMethod)
 {
     PerformTestWithPreparedData((id) =>
     {
         var handler = new DefaultManager();
         using (LogHelper.LoggerForCurrentTest.EnterReproStep("Send a request with repetitive parameter in URL"))
         {
             PrivateApiResponse <FileUploadResponse> result = handler.Send <FileUploadResponse>(FileStorageManager.EndPoint, new[] { new KeyValuePair <string, string>("id", allAreSame ? id : id + "1")
                                                                                                                                     , new KeyValuePair <string, string>("id", id)
                                                                                                                                     , new KeyValuePair <string, string>("id", allAreSame ? id : id + "2") }, httpMethod);
             PrAssert.That(result, PrIs.ErrorResponse());
         }
     });
 }
Esempio n. 17
0
        private async Task <PrivateApiResponse> InsertUser(RegisterModel model, SqlConnection connection)
        {
            var user     = Models.User.CreateFrom(model);
            var response = new PrivateApiResponse();

            try
            {
                if (connection.State == ConnectionState.Closed)
                {
                    connection.Open();
                }
                using (var command = new SqlCommand("CreateUser", connection))
                {
                    command.CommandType = CommandType.StoredProcedure;
                    var userIdParam = new SqlParameter("@UserId", SqlDbType.Int)
                    {
                        Direction = ParameterDirection.Output
                    };
                    var errorCode = new SqlParameter("@ResponseCode", SqlDbType.Int)
                    {
                        Direction = ParameterDirection.Output
                    };
                    command.Parameters.Add(userIdParam);
                    command.Parameters.Add(errorCode);
                    command.Parameters.AddWithValue("@email", user.Email);
                    command.Parameters.AddWithValue("@firstName", user.FirstName);
                    command.Parameters.AddWithValue("@lastName", user.LastName);
                    command.Parameters.AddWithValue("@dob", user.DateOfBirth);
                    command.Parameters.AddWithValue("@password", user.PasswordHash);
                    command.Parameters.AddWithValue("@salt", user.Salt);
                    command.ExecuteNonQuery();
                    var outErrorCode = (errorCode.Value as int?) ?? 0;
                    if (outErrorCode == 0)
                    {
                        response.ApiResponseCode = ApiResponseCode.Success;
                        response.Token           = await CreateToken(user);
                    }
                    else
                    {
                        response.ApiResponseCode = (ApiResponseCode)outErrorCode;
                    }
                }
            } catch
            {
                response.ApiResponseCode = ApiResponseCode.InternalError;
            }
            return(response);
        }
Esempio n. 18
0
        private PrivateApiResponse <HrbcQueueResponse> GetRequestQueueMapping(Dictionary <string, string> hrbcQueueRequest)
        {
            var hrbcQueueHandler = new QueueManager(false);
            var hrbcQueueResult  = new PrivateApiResponse <HrbcQueueResponse>();

            for (int i = 1; i <= MaximumDelay; i++)
            {
                Thread.Sleep(1000);
                var result = hrbcQueueHandler.Queue <string>(hrbcQueueRequest, string.Empty, System.Net.Http.HttpMethod.Get);
                var status = result.Result.Split(',').Where(item => item.Contains("status")).ToArray();
                if (status.SingleOrDefault().Contains("finished"))
                {
                    break;
                }
            }
            return(hrbcQueueHandler.Queue <HrbcQueueResponse>(hrbcQueueRequest, string.Empty, System.Net.Http.HttpMethod.Get));
        }
        /// <summary>
        /// Create/Update a child/parent option
        /// </summary>
        /// <param name="operation">Insert or Update</param>
        /// <param name="node">Children or parent</param>
        /// <param name="inputType">Test cases</param>
        /// <param name="optionParameter">Paremeters</param>
        private static void WriteAndVerifyOption(Operation operation, OptionNestingType node, InvalidOptionCases inputType, string optionParameter)
        {
            string valueInput = OptionData.InvalidOptionMapper[inputType].ToString();
            PrivateApiResponse <List <OptionWriteResponse> > response = null;

            switch (inputType)
            {
            case InvalidOptionCases.Missing:
                response = WriteInvalidMissingOption(operation, node, optionParameter);
                Common.AssertWriteUnsuccessOption(response, ResultCode.ParameterInsufficient);
                break;

            default:
                response = WriteInvalidOption(operation, node, optionParameter, valueInput);
                Common.AssertWriteUnsuccessOption(response, ResultCode.InvalidValue);
                break;
            }
        }
Esempio n. 20
0
        private void VerifyData(PrivateApiResponse <GetMenuContentEditResponse> reponse, string type, List <int> value)
        {
            var expected = 0;

            if (type == "AllParams")
            {
                PrAssert.That(reponse.Result.Data.Count, PrIs.EqualTo(DataVerificationCreator.Data.Values.Count));
            }
            else
            {
                foreach (var item in DataVerificationCreator.Data.Values)
                {
                    if (type == ParamsMapper[Params.MenuId] && item.Value.MenuId == value.First() ||
                        type == ParamsMapper[Params.ActionMenuId] && item.Value.ActionMenuId == value.First())
                    {
                        expected++;
                    }
                }
                PrAssert.That(reponse.Result.Data.Count, PrIs.EqualTo(expected));
            }
        }
        private static void VerifyData(PrivateApiResponse <TopDashboardDataResponse> response, string timePeriod)
        {
            PrAssert.That(response.Result.Data.Resources, PrIs.Not.Null.And.Not.Empty.And.EqualTo(Resources));
            PrAssert.That(response.Result.Data.Type, PrIs.Not.Null.And.Not.Empty.And.Contains(DashboardHelpers.Types.History.ToString().ToLower()));

            VerifyOptions(response.Result.Data.Result.Settings.Options, OptionsJob);
            VerifyOptions(response.Result.Data.Result.Settings.Options, OptionsResume);
            VerifyOptions(response.Result.Data.Result.Settings.Options, OptionsProcess);

            PrAssert.That(response.Result.Data.Result.Settings.Owners.Agents, PrIs.Not.Null.And.Not.Empty.And.Contains(-1));
            PrAssert.That(response.Result.Data.Result.Settings.Owners.Depts, PrIs.Not.Null.And.Not.Empty.And.Contains(1001));
            VerifyOptions(response.Result.Data.Result.Settings.Options, response.Result.Data.Result.Data.Select(item => int.Parse(item.Key)).ToList());

            VerifyOptions(response.Result.Data.Result.Settings.Unique, Uniques);
            VerifyOptions(response.Result.Data.Result.Settings.SearchOwners, SearchOwners);

            PrAssert.That(response.Result.Data.Result.Settings.TimePeriod.Type, PrIs.EqualTo(timePeriod));

            VerifyLabels(response.Result.Labels.Job.Values, JobAliases);
            VerifyLabels(response.Result.Labels.Resume.Values, ResumeAliases);
            VerifyLabels(response.Result.Labels.Process.Values, ProcessAliases);
        }
Esempio n. 22
0
        private void PerformTestForAdditionalParametersInJson(Func <JObject, JObject> entrypointSelector, bool isExpectedSuccess, string parameterName, string parameterValue)
        {
            const string propNamePlaceholder  = "prop_name_placeholder";
            const string propValuePlaceholder = "prop_value_placeholder";

            var hanlder = new DefaultManager();
            var request = GenerateUploadFileRequest(fileSize: defaultContent.Length.ToString());
            var jObj    = JObject.FromObject(request);

            entrypointSelector(jObj).Add(new JProperty(propNamePlaceholder, propValuePlaceholder));

            var requestString = jObj.ToString().Replace(propNamePlaceholder, parameterName).Replace(propValuePlaceholder, parameterValue);

            PrivateApiResponse <FileUploadResponse> response = null;

            using (LogHelper.LoggerForCurrentTest.EnterReproStep("Send an upload file request an additional parameter in JSON"))
            {
                response = hanlder.Send <FileUploadResponse>(FileStorageManager.EndPoint, requestString, HttpMethod.POST);
            }
            try
            {
                if (isExpectedSuccess)
                {
                    PrAssert.That(response, PrIs.SuccessfulResponse());
                }
                else
                {
                    PrAssert.That(response, PrIs.ErrorResponse());
                }
            }
            finally
            {
                hanlder.Send(FileStorageManager.EndPoint, new Dictionary <string, string> {
                    ["id"] = response?.Result?.Id
                }, HttpMethod.DELETE);
            }
        }
Esempio n. 23
0
        public async Task <PrivateApiResponse> Login([FromBody] LoginModel user)
        {
            var response = new PrivateApiResponse();

            try
            {
                if (!DoesUserExist(user.Email))
                {
                    response.ApiResponseCode = ApiResponseCode.UserDoesNotExistEmail;
                    return(response);
                }
                using (var connection = GetConnection())
                {
                    connection.Open();
                    var databaseUser = GetUserFrom(user.Email);
                    if (databaseUser.PasswordsMatch(user.Password))
                    {
                        response.ApiResponseCode = ApiResponseCode.Success;
                        response.Token           = await CreateToken(databaseUser);

                        response.Email     = databaseUser.Email;
                        response.FirstName = databaseUser.FirstName;
                        response.LastName  = databaseUser.LastName;
                    }
                    else
                    {
                        response.ApiResponseCode = ApiResponseCode.IncorrectPassword;
                    }
                }
            }
            catch
            {
                response.ApiResponseCode = ApiResponseCode.InternalError;
            }
            return(response);
        }
Esempio n. 24
0
        public void InvalidJsonFormat(InvalidSpecialCondition inputType)
        {
            PrivateApiResponse <object> response = null;
            var mappingHandler = new MappingManager();

            if (inputType == InvalidSpecialCondition.WrongContentType)
            {
                response = mappingHandler.ExchangeMapping <object>(GetDefaultExchangeMapping(Mode.Import, ResourceId.Client, MappingId), System.Net.Http.HttpMethod.Put, InvalidEntrySpecialTestCasesMapper[InvalidSpecialCondition.WrongContentType].ToString());
            }
            else
            {
                string jsonContent = string.Empty;
                if (inputType == InvalidSpecialCondition.BrokenJsonFormat)
                {
                    jsonContent = JsonConvert.SerializeObject(GetDefaultExchangeMapping(Mode.Import, ResourceId.Client, MappingId)).Remove(0, 1);
                }
                else
                {
                    jsonContent = InvalidEntrySpecialTestCasesMapper[inputType].ToString();
                }
                response = mappingHandler.ExchangeMapping <object>(jsonContent, System.Net.Http.HttpMethod.Put);
            }
            PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(InvalidSpecialCondition.WrongContentType == inputType ? System.Net.HttpStatusCode.UnsupportedMediaType : System.Net.HttpStatusCode.BadRequest));
        }
Esempio n. 25
0
 private void CheckResponseIsSuccessAndAllAreEqualTo(PrivateApiResponse <DateTimeConvertResponse> response, string expectedResult, int expectedLength = 1)
 {
     PrAssert.That(response, PrIs.SuccessfulResponse());
     PrAssert.That(response?.Result?.DateTimes, Is.Not.Null.And.Length.EqualTo(expectedLength).And.All.EqualTo(expectedResult));
 }
Esempio n. 26
0
        private static void VerifyDataForFullParams(Dictionary <string, object> request, PrivateApiResponse <Dictionary <string, object> > response, QueryLogic queryLogic, From from, To to, Cc cc, Bcc bcc, Subject subject, Body body, Date date, Box box, Attachment attachment)
        {
            ExceptedCases(response, FieldQueryParameters.From.ToString(), from.ToString());
            ExceptedCases(response, FieldQueryParameters.To.ToString(), to.ToString());
            ExceptedCases(response, FieldQueryParameters.Cc.ToString(), cc.ToString());
            ExceptedCases(response, FieldQueryParameters.Bcc.ToString(), bcc.ToString());
            ExceptedCases(response, FieldQueryParameters.Subject.ToString(), subject.ToString());
            ExceptedCases(response, FieldQueryParameters.Body.ToString(), body.ToString());
            ExceptedCases(response, FieldQueryParameters.Date.ToString(), date.ToString());
            ExceptedCases(response, FieldQueryParameters.Box.ToString(), box.ToString());

            PrAssert.That(response, PrIs.SuccessfulResponse().And.HttpCode(System.Net.HttpStatusCode.OK));

            var hits = JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(response.Result["hits"].ToString());

            if (box == Box.Two)
            {
                PrAssert.That(hits.Count, PrIs.EqualTo(0), "Still able to get box 2.");
            }
            else
            {
                PrAssert.That(response.Result["totalHits"], PrIs.GreaterThan(0), "The response is empty.");

                if (queryLogic == QueryLogic.And)
                {
                    foreach (var result in hits)
                    {
                        PrAssert.That(
                            CompareValues[from.ToString()](result[FieldQueryParameters.From.GetEnumStringValue()], FromMail) &&
                            CompareValues[to.ToString()](result[FieldQueryParameters.To.GetEnumStringValue()], ToMails.First()) &&
                            CompareValues[subject.ToString()](result[FieldQueryParameters.Subject.GetEnumStringValue()], SubjectMail) &&
                            CompareValues[body.ToString()](result["preview"].ToString(), BodyMail) &&
                            CompareValues[date.ToString()](result[FieldQueryParameters.Date.GetEnumStringValue()], DateListMultipleMail.ElementAt(NumberOfMail / 2)) &&
                            CompareValues[box != Box.Missing ? Operations.Eq.ToString() : box.ToString()](result[FieldQueryParameters.Box.GetEnumStringValue()], box == Box.One ? 1 : 2) &&
                            CompareValues[attachment != Attachment.Missing ? Operations.Eq.ToString() : attachment.ToString()](result[FieldQueryParameters.HasAttachment.GetEnumStringValue()], attachment == Attachment.Zero ? 0 : 1)
                            );
                    }
                }
                else
                {
                    foreach (var result in hits)
                    {
                        PrAssert.That(
                            CompareValues[from.ToString()](result[FieldQueryParameters.From.GetEnumStringValue()], FromMail) ||
                            CompareValues[to.ToString()](result[FieldQueryParameters.To.GetEnumStringValue()], ToMails.First()) ||
                            CompareValues[subject.ToString()](result[FieldQueryParameters.Subject.GetEnumStringValue()], SubjectMail) ||
                            CompareValues[body.ToString()](result["preview"].ToString(), BodyMail) ||
                            CompareValues[date.ToString()](result[FieldQueryParameters.Date.GetEnumStringValue()], DateListMultipleMail.ElementAt(NumberOfMail / 2)) ||
                            CompareValues[box != Box.Missing ? Operations.Eq.ToString() : box.ToString()](result[FieldQueryParameters.Box.GetEnumStringValue()], box == Box.One ? 1 : 2) ||
                            CompareValues[attachment != Attachment.Missing ? Operations.Eq.ToString() : attachment.ToString()](result[FieldQueryParameters.HasAttachment.GetEnumStringValue()], attachment == Attachment.Zero ? 0 : 1)
                            );
                    }
                }
            }
        }
Esempio n. 27
0
 public static void AssertWriteUnsuccessOption(PrivateApiResponse <List <OptionWriteResponse> > response, ResultCode resultCode = ResultCode.Ok)
 {
     PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(HttpStatusCode.BadRequest).And.ErrorCode((int)resultCode));
 }
Esempio n. 28
0
 public static void AssumeWriteSuccessOption(PrivateApiResponse <List <OptionWriteResponse> > response)
 {
     PrAssume.That(response, PrIs.SuccessfulResponse(), $"Option Create operation was not successful. HTTP response code is {response.HttpStatusCode}");
 }
Esempio n. 29
0
 /// <summary>
 /// https://github.com/Fairlay/PrivateApiDocumentation#fairlay-private-api-documentation-v0
 /// </summary>
 public static string FormatIntoApiResponseMessage(this PrivateApiResponse response) =>
 $"{Convert.ToBase64String(response.Signature)}|{response.Nonce}|{response.ServerId}|" +
 response.Body;
Esempio n. 30
0
        public static Dictionary <string, object> BuildCreateTemplateWithProcessRequest(PrivateApiResponse <List <OptionSearchResponse> > optionPhaseProcess, PrivateApiResponse <List <OptionSearchResponse> > optionEndReason, PhaseType phaseType, CommonEnums phaseMemo, EndFlag endFlag, EndReason endReason)
        {
            var request = new Dictionary <string, object>(DefaultCreateRequest);
            var phases  = new Dictionary <string, object>
            {
                [Phase.Resource.GetEnumStringValue()]  = ResourceId.Process,
                [Phase.Phase.GetEnumStringValue()]     = optionPhaseProcess.Result.First()?.Children?.LastOrDefault()?.Alias,
                [Phase.PhaseDate.GetEnumStringValue()] = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"),
            };

            PhaseTypeMapperValue[phaseType](phases);
            CommonMapperValue[phaseMemo.ToString()](Phase.PhaseMemo.GetEnumStringValue(), phases);
            EndFlagMapperValue[endFlag](phases);
            EndReasonMapperValue[endReason](new List <string> {
                optionEndReason.Result.First().Alias, optionEndReason.Result.Last().Alias
            }, phases);
            request[Parameters.Phase.GetEnumStringValue()] = phases;
            return(request);
        }