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);
        }
Пример #2
0
        /// <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));
        }