public void GetLiveOfferQuotaExpressionTest() { var IOffersManager = new Mock<IOffersManager>(); OkNegotiatedContentResult<OfferQuotaCellsResponse> response; QuotaExpressionsObjectResponse OfferQuotaCellData = new QuotaExpressionsObjectResponse() { Errors = new List<ErrorObject>(), QuotaCells = "UnitTest" }; IOffersManager.Setup(i => i.GetOfferQuotaExpression(It.IsAny<HttpRequestMessage>(), It.IsAny<string>(), new Guid().ToString())).Returns(OfferQuotaCellData); controller = new InitController("Liveoffers").initLiveOffersController(IOffersManager.Object); response = controller.GetQuotaExpressions(new Guid().ToString()) as OkNegotiatedContentResult<OfferQuotaCellsResponse>; Assert.NotNull(response.Content.Data.QuotaCells); Assert.NotEmpty((string)response.Content.Data.QuotaCells); Assert.Null(response.Content.Data.Errors); }
/// <summary> /// Function that will return the quota expression for a requested offer (Liveoffer or Testoffer) /// </summary> /// <param name="Request"></param> /// <param name="ApiUser"></param> /// <param name="offerId"></param> /// <returns></returns> public QuotaExpressionsObjectResponse GetOfferQuotaExpression(HttpRequestMessage Request, string ApiUser, string offerId) { LoggingUtility log = LoggerFactory.GetLogger(); QuotaExpressionsObjectResponse data = new QuotaExpressionsObjectResponse(); String requestId = Request.Properties["requestId"].ToString(); Dictionary<string, string> parameters = new Dictionary<string, string>(); OfferFilter OfferType = GetOfferType(Request.GetRouteData().Values["controller"].ToString()); string OperationName = operationName.GetQuotaExpressions.ToString(); parameters.Add("OfferId", offerId); var oid = new Guid(); int errorKey = ErrorKey.ERR_PROVIDER_BACKEND_QUOTA_EXPRESSIONS_UNAVAILABLE; try { if (offerId == null) data.Errors.Add(new ErrorObject(ErrorKey.ERR_PROVIDER_MISSING_OFFER_DATA_ARGUMENTS, null)); //Check if given offer id is of type GUID else if (Guid.TryParse(offerId, out oid) == false) data.Errors.Add(new ErrorObject(ErrorKey.ERR_PROVIDER_INVALID_OFFER_ARGUMENT, parameters)); else { log.ProcessingDebug(requestId, "Received GET Quota Expressions request for a " + OfferType + "."); OfferObject offerObject = OfferRepository().SelectByID(oid); if (offerObject == null || offerObject.Status != (int)OfferStatus.Active || (OfferType == OfferFilter.TestOffer && !(bool)offerObject.TestOffer) || (OfferType == OfferFilter.LiveOffer && (bool)offerObject.TestOffer)) { data.Errors.Add(new ErrorObject(ErrorKey.ERR_PROVIDER_INVALID_OFFER_ARGUMENT, parameters)); } else { var sampleId = offerObject.SampleId.Value; SteamStudyObject steamStudyObject = QuotaExpressionRepository().SelectByID(sampleId); var responseType = Request.Headers.Accept.ToString().ToLower().Contains("application/xml"); if (!responseType) { //Filling the data object in the response envelope with the Quota Expressions var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(steamStudyObject.QuotaExpressionsXML); data.Errors = null; data.QuotaCells = JObject.Parse(JsonConvert.SerializeXmlNode(xmlDoc)); } else { data = new QuotaExpressionsObjectResponse(steamStudyObject.QuotaExpressionsXML); } } } } catch (Exception e) { data = new QuotaExpressionsObjectResponse(); data.Errors.Add(new ErrorObject(errorKey)); log.InfoJson(new Methods().Exception_ToLogObject(requestId, ApiUser, OperationType, OperationName, e)); } finally { //If the response has errors, insert an error message into the logs if (data.Errors != null) { log.InfoJson(new Methods().Error_ToLogObject(requestId, ApiUser, OperationType, OperationName, parameters, data.Errors)); log.ProcessingDebug(requestId, "GET Quota Expressions request was unsuccessful."); } //The response has no errors, we insert a request successful message into the logs else { log.InfoJson(new Methods().Response_ToLogObject(requestId, ApiUser, OperationType, OperationName, parameters, data)); log.ProcessingDebug(requestId, "GET Quota Expressions request was successful."); } } return data; }
public void GetLiveOfferQuotaExpressionFailureTest() { var IOffersManager = new Mock<IOffersManager>(); OkNegotiatedContentResult<OfferQuotaCellsResponse> response; QuotaExpressionsObjectResponse OfferQuotaCellData = new QuotaExpressionsObjectResponse() { Errors = new List<ErrorObject>() { new ErrorObject(ErrorKey.ERR_INTERNAL_FATAL) }, QuotaCells = null }; IOffersManager.Setup(i => i.GetOfferQuotaExpression(It.IsAny<HttpRequestMessage>(), It.IsAny<string>(), new Guid().ToString())).Returns(OfferQuotaCellData); controller = new InitController("Liveoffers").initLiveOffersController(IOffersManager.Object); response = controller.GetQuotaExpressions(new Guid().ToString()) as OkNegotiatedContentResult<OfferQuotaCellsResponse>; Assert.Null(response.Content.Data.QuotaCells); Assert.NotNull(response.Content.Data.Errors); Assert.True(response.Content.Data.Errors.Exists(i => i.Code == 3000)); }