Example #1
0
        /// <summary>
        /// 已知格式 status 200 登入成功: [{"NAME_AC":"ESURENA RACHEL DOMINGUEZ","Z_SITE_ID":"WIH","status":true}]
        /// status 200 登入失敗  :  [{"status":false}]
        /// status 401 : {"error":{"statusCode":401,"name":"Error","message":"Authorization Required","code":"AUTHORIZATION_REQUIRED"}}
        /// </summary>
        /// <param name="empid"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public HrIdentityResponse Authentication(string empid, string password)
        {
            try
            {
                //http://{endpoint}/hrapi_external/portal_dlemp
                string url = $"{_config.Hr.BaseUrl}{"/"}{_config.Hr.IdentityCertificationPath}";

                //none header attbibutes
                Dictionary <string, string> headers = new Dictionary <string, string>();

                HrIdentityRequest hrIdentityRequest = new HrIdentityRequest
                {
                    account       = _config.Hr.Account,
                    password      = _config.Hr.PassWord,
                    emplid        = empid,
                    user_password = password
                };

                string jsonStr = JsonConvert.SerializeObject(hrIdentityRequest, Formatting.Indented);

                HttpCallResult result = _restfulApiClient.Post(url, headers, jsonStr);

                if (result.StatusCode == "200" || result.StatusCode == "201")
                {
                    List <HrIdentityResponse> hrIdentityResponses = JsonConvert.DeserializeObject <List <HrIdentityResponse> >(result.ReturnContent);
                    if (hrIdentityResponses != null)
                    {
                        //已知格式
                        return(hrIdentityResponses.FirstOrDefault());
                    }
                    else
                    {
                        //如果拿到不適預期的格式一律給驗證錯誤
                        return new HrIdentityResponse {
                                   Name_Ac = "", Z_Site_ID = "", Status = false
                        }
                    };
                }
                else//status 401 or another
                {
                    return new HrIdentityResponse {
                               Name_Ac = "", Z_Site_ID = "", Status = false
                    }
                };
            }
            catch (Exception ex)
            {
                var exception = new Exception("Invoke HR API Exception:::Authentication", ex);
                throw exception;
            }
        }
Example #2
0
        public void RestfulApiClient_Post_Return_StatusCode_Not200()
        {
            //Arrange
            string url = $"{_externalConfigContext.Hr.BaseUrl}{"/"}{_externalConfigContext.Hr.IdentityCertificationPath}";

            _header = new Dictionary <string, string>();

            HrIdentityRequest hrIdentityRequest = new HrIdentityRequest
            {
                account       = _externalConfigContext.Hr.Account,
                password      = "******",//故意錯誤密碼 回401
                emplid        = "1071002P",
                user_password = "******"
            };
            string contentBody = JsonConvert.SerializeObject(hrIdentityRequest);

            HttpCallResult expectedResponse = new HttpCallResult
            {
                FaultInfo = new ApiFault
                {
                    Code    = "401",
                    Message = "{\"error\":{\"statusCode\":401,\"name\":\"Error\",\"message\":\"Authorization Required\",\"code\":\"AUTHORIZATION_REQUIRED\"}}"
                },
                ReturnContent = "",
                StatusCode    = "401"
            };

            //Act
            HttpCallResult actualResponse = _targetObj.Post(url, _header, contentBody);

            //Assert
            Assert.AreEqual(expectedResponse.FaultInfo.Code, actualResponse.FaultInfo.Code);
            Assert.AreEqual(expectedResponse.FaultInfo.Message, actualResponse.FaultInfo.Message);
            Assert.AreEqual(expectedResponse.ReturnContent, actualResponse.ReturnContent);
            Assert.AreEqual(expectedResponse.StatusCode, actualResponse.StatusCode);
        }