public void Authentication_HrApi_Pass_Return200() { //Arrage string empid = "TEST"; string password = "******"; HttpCallResult httpCallResult = new HttpCallResult { StatusCode = "200", FaultInfo = null, ReturnContent = "[{\"NAME_AC\": \"ESURENA RACHEL DOMINGUEZ\",\"Z_SITE_ID\": \"WIH\",\"status\": true}]" }; _restfulApiClient.Post(Arg.Any <string>(), Arg.Any <Dictionary <string, string> >(), Arg.Any <string>()).Returns(httpCallResult); HrIdentityResponse expectedResponse = new HrIdentityResponse { Name_Ac = "ESURENA RACHEL DOMINGUEZ", Z_Site_ID = "WIH", Status = true }; //Act HrIdentityResponse actualResponse = _targetObj.Authentication(empid, password); //Assert Assert.AreEqual(expectedResponse.Name_Ac, actualResponse.Name_Ac); Assert.AreEqual(expectedResponse.Z_Site_ID, actualResponse.Z_Site_ID); Assert.AreEqual(expectedResponse.Status, actualResponse.Status); }
public void Authentication_HrApi_Fail_Return_Not200() { //Arrage string empid = "TEST"; string password = "******"; HttpCallResult httpCallResult = new HttpCallResult { StatusCode = "401", FaultInfo = null, ReturnContent = "" }; _restfulApiClient.Post(Arg.Any <string>(), Arg.Any <Dictionary <string, string> >(), Arg.Any <string>()).Returns(httpCallResult); HrIdentityResponse expectedResponse = new HrIdentityResponse { Name_Ac = "", Z_Site_ID = "", Status = false }; //Act HrIdentityResponse actualResponse = _targetObj.Authentication(empid, password); //Assert Assert.AreEqual(expectedResponse.Name_Ac, actualResponse.Name_Ac); Assert.AreEqual(expectedResponse.Z_Site_ID, actualResponse.Z_Site_ID); Assert.AreEqual(expectedResponse.Status, actualResponse.Status); }
public TResult <LoginViewModel> Login(string userId, string password) { bool isPass = false; HrIdentityResponse hrResponse = null; try { #region Use AD service to auth & HR API Identity //AD 驗證先 結果為fasle 再call HR API if (_authService.ValidateByAd(userId, password)) { isPass = true; } else { hrResponse = _authService.IdentityByHr(userId, password); isPass = hrResponse.Status; } //AD 認證 和 HR API 其中一個沒過 回傳失敗 if (!isPass) { return(TResult <LoginViewModel> .Fail(new LoginViewModel { IsLogin = isPass, IsAdmin = false, IsMember = false, }, FaultInfoRcConstants.LOGIN_FAIL, "Account/Password error.")); } #endregion List <string> uID = new List <string> { userId.ToLower().Trim() }; List <MdsAdUserData> mdsAdUserData = _authService.GetMdsAdUser(uID); //檢查是否為 Admin 權限 List <WisGroupUser> wisGroupUser = _authService.CheckIsAdminOrMember(userId); //DB 目前狀況可能會有查到同一個工號 會有雙重身份 admin 和 apadmin //雙重身分 只要有找到 Admin 就是管理者 if (wisGroupUser.Any(p => p.GroupID == "admin")) { //為Admin 管理者可使用後台 APP List return(TResult <LoginViewModel> .OK(new LoginViewModel { UID = mdsAdUserData.Count > 0 ? mdsAdUserData.FirstOrDefault().Uid : "", //沒AD 名子資訊就取 HR 名子資訊 格式: Ting Chen/WHQ/Wistron Name = mdsAdUserData.Count > 0 ? mdsAdUserData.FirstOrDefault().Name : hrResponse != null ? $"{hrResponse.Name_Ac.Trim()}{"/"}{hrResponse.Z_Site_ID}{"/Wistron"}" : "", IsLogin = isPass, IsAdmin = true, IsMember = false, }, "is login successful!")); } else { //為一般 使用者只能使用 下載app 版本裝到手機上 return(TResult <LoginViewModel> .OK(new LoginViewModel { UID = mdsAdUserData.Count > 0 ? mdsAdUserData.FirstOrDefault().Uid : "", //沒AD 名子資訊就取 HR 名子資訊 格式: Ting Chen/WHQ/Wistron Name = mdsAdUserData.Count > 0 ? mdsAdUserData.FirstOrDefault().Name : hrResponse != null ? $"{hrResponse.Name_Ac.Trim()}{"/"}{hrResponse.Z_Site_ID}{"/Wistron"}" : "", IsLogin = isPass, IsAdmin = false, IsMember = true, }, "is login successful!")); } } catch (Exception ex) { //考慮到PassWord和OA密碼一致,不記錄PassWord LogHelper.WriteException(ex, MethodBase.GetCurrentMethod(), userId); return(TResult <LoginViewModel> .Fail(new LoginViewModel { IsLogin = false, IsAdmin = false, IsMember = false, }, FaultInfoRcConstants.LOGIN_FAIL, "System error.")); } }