public void Add_All_Empty() { ReviewModelDTO newReview = new ReviewModelDTO() { Reviewer = new ReviewerModelDTO() { Name = string.Empty }, Restaurant = new RestaurantModelDTO() { Id = 1 }, ReviewedDateTime = DateTime.Now, Rating = 1, ReviewText = string.Empty }; ReviewAPIRequestDTO request = new ReviewAPIRequestDTO() { Header = new APIRequestHeaderDTO() { RequestID = 1 }, Data = newReview }; APIResponseDTO response = this.reviewController.Post(request); Assert.AreNotEqual <ErrorDTO>(response.Error, null); Assert.AreEqual <APIBaseDTO>(response.Data, null); }
public void Add_Date_Tomorrow() { ReviewModelDTO newReview = new ReviewModelDTO() { Reviewer = new ReviewerModelDTO() { Id = 4, Name = "Reviewer 4" }, Restaurant = new RestaurantModelDTO() { Id = 4 }, ReviewedDateTime = DateTime.Now.AddDays(1), Rating = 3, ReviewText = "This is sample review text by Reviewer 4 for Restaurant 4. This is sample review text by Reviewer 4 for Restaurant 4. This is sample review text by Reviewer 4 for Restaurant 4. This is sample review text by Reviewer 4 for Restaurant 4. This is sample review text by Reviewer 4 for Restaurant 4." }; ReviewAPIRequestDTO request = new ReviewAPIRequestDTO() { Header = new APIRequestHeaderDTO() { RequestID = 1 }, Data = newReview }; APIResponseDTO response = this.reviewController.Post(request); Assert.AreNotEqual <ErrorDTO>(response.Error, null); Assert.AreEqual <APIBaseDTO>(response.Data, null); }
public bool RegisterUser(out APIResponseDTO response) { string userId = null; string userMultichainAddress = null; response = new APIResponseDTO(); try { if (!this.serverMgr.RemoteIncentiveEngine.RegisterUser(out userId, out userMultichainAddress)) { response.SetErrorResponse("Cannot Register User!", APIResponseDTO.RESULT_TYPE.ERROR); return(false); } response.SetResponse(new Dictionary <string, string>() { { "userId", userId }, { "multichainAddress", userMultichainAddress } } , APIResponseDTO.RESULT_TYPE.SUCCESS); return(true); } catch (Exception ex) { Global.Log.Error(ex.Message); return(false); } }
internal bool GetTaskReward(out APIResponseDTO response) { Watch.Start(); ExecuteTaskDTO checkRewardDTO = null; response = new APIResponseDTO(); string transactionId = null; object taskReward = null; try { if (!GetTaskIdFromRequest(this.request, out checkRewardDTO)) { response.SetErrorResponse("Invalid Request!", APIResponseDTO.RESULT_TYPE.ERROR); return(false); } this.serverMgr.RemoteIncentiveEngine.RewardUser(checkRewardDTO.UserID, checkRewardDTO.TaskId, out transactionId, out taskReward); response.SetResponse(taskReward, APIResponseDTO.RESULT_TYPE.SUCCESS); return(true); } catch (Exception ex) { Global.Log.Error(ex.Message); return(false); } }
public bool GetUserTasks(string userID, out APIResponseDTO response) { response = new APIResponseDTO(); List <CSTaskDTO> myTasks; try { myTasks = this.serverMgr.RemoteTaskDistributor.GetUserTasks(userID); if (myTasks == null) { Global.Log.ErrorFormat("Invalid User ID: [{0}]", userID); response.SetResponse(new Dictionary <string, string>() { { "errorMessage", "Invalid User ID!" } }, APIResponseDTO.RESULT_TYPE.ERROR); return(false); } Global.Log.DebugFormat("Number of Tasks: [{0}]", myTasks.Count); response.SetResponse(myTasks , APIResponseDTO.RESULT_TYPE.SUCCESS); return(true); } catch (Exception ex) { Global.Log.Error(ex.Message); return(false); } }
public IHttpActionResult RegisterNewUser() { ServerManager serverMgr = null; APIRequestHandler handler; APIResponseDTO response = new APIResponseDTO(); string clientAddress = null; try { clientAddress = HttpContext.Current.Request.UserHostAddress; serverMgr = Global.GetCreateServerManager(HttpContext.Current.Server); handler = new APIRequestHandler(HttpContext.Current.Request, serverMgr); if (!handler.RegisterUser(out response)) { return(Content(HttpStatusCode.InternalServerError, response)); } return(Content(HttpStatusCode.OK, response)); } catch (Exception ex) { Global.Log.Error(ex.Message); response.SetResponse("Registration failed. Please try again!", APIResponseDTO.RESULT_TYPE.ERROR); return(Content(HttpStatusCode.InternalServerError, response)); } }
public IHttpActionResult PayCreateCSTaskAPI() { ServerManager serverMgr = null; APIRequestHandler handler = null; APIResponseDTO response = new APIResponseDTO(); string clientAddress = null; try { clientAddress = HttpContext.Current.Request.UserHostAddress; serverMgr = Global.GetCreateServerManager(HttpContext.Current.Server); handler = new APIRequestHandler(HttpContext.Current.Request, serverMgr); if (!handler.PayCreateCSTask(out response)) { return(Content(HttpStatusCode.InternalServerError, response)); } return(Content(HttpStatusCode.OK, response)); } catch (Exception ex) { Global.Log.Error(ex.Message); response.SetResponse("Cannot pay and create the crowd-sensing task. Please try again!", APIResponseDTO.RESULT_TYPE.ERROR); return(Content(HttpStatusCode.InternalServerError, response)); } }
public bool ExecuteSubscribedTask(out APIResponseDTO response) { ExecuteTaskDTO execTaskDTO; response = new APIResponseDTO(); try { if (!GetTaskIdFromRequest(this.request, out execTaskDTO)) { response.SetErrorResponse("Invalid Request!", APIResponseDTO.RESULT_TYPE.ERROR); return(false); } if (!this.serverMgr.RemoteTaskDistributor.ExecuteTask(execTaskDTO.UserID, execTaskDTO.TaskId)) { Global.Log.Error("Cannot execute Task!"); response.SetErrorResponse("Cannot Execute Task!", APIResponseDTO.RESULT_TYPE.ERROR); return(false); } response.SetResponse("Success", APIResponseDTO.RESULT_TYPE.SUCCESS); return(true); } catch (Exception ex) { Global.Log.Error(ex.Message); return(false); } }
public IHttpActionResult GetCostCSTaskAPI() { ServerManager serverMgr = null; APIRequestHandler handler = null; APIResponseDTO response = new APIResponseDTO(); string clientAddress; try { clientAddress = HttpContext.Current.Request.UserHostAddress; serverMgr = Global.GetCreateServerManager(HttpContext.Current.Server); handler = new APIRequestHandler(HttpContext.Current.Request, serverMgr); Global.Log.DebugFormat("Client Ip Address: {0}", clientAddress); if (!handler.CalcCostCSTask(out response)) { return(Content(HttpStatusCode.InternalServerError, response)); } return(Content(HttpStatusCode.OK, response)); } catch (Exception ex) { Global.Log.Error(ex.Message); response.SetResponse("Cannot calculate the task cost. Please try again!", APIResponseDTO.RESULT_TYPE.ERROR); return(Content(HttpStatusCode.InternalServerError, response)); } }
internal bool GetSubscribedTasksByTopicName(out APIResponseDTO response) { response = new APIResponseDTO(); List <CSTaskDTO> subscribedTasks; GetTopicRequestDTO topicRequestDTO = null; string errorMessage = null; try { if (!GetUserTopicNameFromRequest(this.request, out topicRequestDTO)) { response.SetErrorResponse("Invalid Request!", APIResponseDTO.RESULT_TYPE.ERROR); return(false); } subscribedTasks = this.serverMgr.RemoteTaskDistributor .GetSubscribedTasksByTopicName(topicRequestDTO.UserID , topicRequestDTO.TopicName , ref errorMessage); if (subscribedTasks == null) { Global.Log.ErrorFormat(errorMessage); response.SetErrorResponse(errorMessage, APIResponseDTO.RESULT_TYPE.ERROR); return(false); } response.SetResponse(subscribedTasks, APIResponseDTO.RESULT_TYPE.SUCCESS); return(true); } catch (Exception ex) { Global.Log.Error(ex.Message); return(false); } }
public void Add_Reviewer_Not_Exist_Name_Empty() { ReviewModelDTO newReview = new ReviewModelDTO() { Reviewer = null, Restaurant = new RestaurantModelDTO() { Name = string.Empty }, ReviewedDateTime = DateTime.Now, Rating = 1, ReviewText = "This is sample review text by Reviewer 4 for Restaurant 4. This is sample review text by Reviewer 4 for Restaurant 4. This is sample review text by Reviewer 4 for Restaurant 4. This is sample review text by Reviewer 4 for Restaurant 4. This is sample review text by Reviewer 4 for Restaurant 4." }; ReviewAPIRequestDTO request = new ReviewAPIRequestDTO() { Header = new APIRequestHeaderDTO() { RequestID = 1 }, Data = newReview }; APIResponseDTO response = this.reviewController.Post(request); Assert.AreNotEqual <ErrorDTO>(response.Error, null); Assert.AreEqual <APIBaseDTO>(response.Data, null); }
internal bool SubscribeTopic(out APIResponseDTO response) { response = new APIResponseDTO(); GetTopicRequestDTO topicRequestDTO; string errorMessage = null; try { if (!GetUserTopicNameFromRequest(this.request, out topicRequestDTO)) { response.SetErrorResponse("Invalid Request!", APIResponseDTO.RESULT_TYPE.ERROR); return(false); } if (!this.serverMgr.RemoteTaskDistributor.SubscribeTopic(topicRequestDTO.UserID, topicRequestDTO.TopicName, ref errorMessage)) { Global.Log.ErrorFormat(errorMessage); response.SetErrorResponse(errorMessage, APIResponseDTO.RESULT_TYPE.ERROR); return(false); } Global.Log.DebugFormat("Topic: [{0}] SUBSCRIBED by User ID: [{1}]", topicRequestDTO.TopicName, topicRequestDTO.UserID); response.SetResponse("Subscribed", APIResponseDTO.RESULT_TYPE.SUCCESS); return(true); } catch (Exception ex) { Global.Log.Error(ex.Message); return(false); } }
public bool GetTasksByTopicName(out APIResponseDTO response) { GetTopicRequestDTO topicRequestDTO; response = new APIResponseDTO(); List <GetTasksDTO> listOfTasks; try { if (!GetUserTopicNameFromRequest(this.request, out topicRequestDTO)) { response.SetErrorResponse("Invalid Request!", APIResponseDTO.RESULT_TYPE.ERROR); return(false); } listOfTasks = serverMgr.RemoteTaskDistributor.GetTasksByTopicName(topicRequestDTO.TopicName); if (listOfTasks == null) { response.SetErrorResponse("Invalid TopicName!", APIResponseDTO.RESULT_TYPE.ERROR); return(false); } response.SetResponse(new Dictionary <string, object>() { { "tasks", listOfTasks } } , APIResponseDTO.RESULT_TYPE.SUCCESS); return(true); } catch (Exception ex) { Global.Log.Error(ex.Message); response.SetResponse("Cannot obtain topic from server. Please try again!", APIResponseDTO.RESULT_TYPE.ERROR); return(false); } }
public void Add() { RestaurantModelDTO newRestaurant = new RestaurantModelDTO() { Name = "Restaurant 5", City = "Columbus" }; RestaurantAPIRequestDTO request = new RestaurantAPIRequestDTO() { Header = new APIRequestHeaderDTO() { RequestID = 1 }, Data = newRestaurant }; APIResponseDTO response = restaurantController.Post(request); RestaurantModelDTO newRestaurantRet = (RestaurantModelDTO)response.Data; Assert.AreNotEqual <RestaurantModelDTO>(newRestaurantRet, null); Assert.IsTrue(newRestaurantRet.Id > 0 && newRestaurant.Id < int.MaxValue); Assert.AreEqual <string>(newRestaurantRet.Name, newRestaurant.Name); Assert.AreEqual <string>(newRestaurantRet.City, newRestaurant.City); response = restaurantController.Get(5); RestaurantModelDTO restaurant = (RestaurantModelDTO)response.Data; Assert.AreNotEqual <RestaurantModelDTO>(restaurant, null); response = restaurantController.Get("Columbus"); RestaurantModelList restaurantList = (RestaurantModelList)response.Data; Assert.AreNotEqual <RestaurantModelList>(restaurantList, null); }
public void Get_By_Id_Negative() { APIResponseDTO response = this.reviewController.Get(int.MinValue); ReviewModelDTO review = (ReviewModelDTO)response.Data; Assert.AreEqual <ReviewModelDTO>(review, null); }
public void Get_By_Restaurant_Id_Negative() { APIResponseDTO response = this.reviewController.GetByRestaurantId(int.MinValue); ReviewModelList reviewsByRestaurant = (ReviewModelList)response.Data; Assert.AreEqual <ReviewModelList>(reviewsByRestaurant, null); }
public void Get_By_Id_NonExistent() { APIResponseDTO response = restaurantController.Get(int.MaxValue); Assert.AreNotEqual <APIResponseDTO>(response, null); Assert.AreEqual <ErrorDTO>(response.Error, null); Assert.AreEqual <APIBaseDTO>(response.Data, null); }
public void Get_By_City_Invalid_MaxString() { APIResponseDTO response = restaurantController.Get("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); Assert.AreNotEqual <APIResponseDTO>(response, null); Assert.AreNotEqual <ErrorDTO>(response.Error, null); Assert.AreEqual <APIBaseDTO>(response.Data, null); }
public void Get_By_Id_Invalid_Negative() { APIResponseDTO response = restaurantController.Get(int.MinValue); Assert.AreNotEqual <APIResponseDTO>(response, null); Assert.AreNotEqual <ErrorDTO>(response.Error, null); Assert.AreEqual <APIBaseDTO>(response.Data, null); }
public void Get_By_Id() { APIResponseDTO response = this.reviewController.Get(1); ReviewModelDTO review = (ReviewModelDTO)response.Data; Assert.AreNotEqual <ReviewModelDTO>(review, null); Assert.AreEqual <int>(review.Id, 1); }
public void Get_By_Restaurant_Id_NotExistent() { APIResponseDTO response = this.reviewController.GetByRestaurantId(int.MaxValue); ReviewModelList reviewsByRestaurant = (ReviewModelList)response.Data; Assert.AreNotEqual <ReviewModelList>(reviewsByRestaurant, null); Assert.AreEqual <int>(reviewsByRestaurant.ReviewList.Count, 0); }
public void Get_By_City_Invalid_Empty() { APIResponseDTO response = restaurantController.Get(string.Empty); Assert.AreNotEqual <APIResponseDTO>(response, null); Assert.AreNotEqual <ErrorDTO>(response.Error, null); Assert.AreEqual <APIBaseDTO>(response.Data, null); }
public void Get_By_Id() { APIResponseDTO response = restaurantController.Get(1); Assert.AreNotEqual <APIResponseDTO>(response, null); RestaurantModelDTO restaurant = (RestaurantModelDTO)response.Data; Assert.AreNotEqual <RestaurantModelDTO>(restaurant, null); Assert.AreEqual <int>(restaurant.Id, 1); }
public void Get_By_City_NonExistent() { APIResponseDTO response = restaurantController.Get("Tampa"); Assert.AreNotEqual <APIResponseDTO>(response, null); RestaurantModelList restaurantList = (RestaurantModelList)response.Data; Assert.AreNotEqual <RestaurantModelList>(restaurantList, null); Assert.AreNotEqual <List <RestaurantModelDTO> >(restaurantList.RestaurantList, null); Assert.AreEqual <int>(restaurantList.RestaurantList.Count, 0); }
/// <summary> /// Pay and create a crowd-sensing task. /// </summary> /// <param name="response"></param> /// <returns></returns> public bool PayCreateCSTask(out APIResponseDTO response) { Watch.Start(); string txId = null; string taskId = null; bool hasFunds = false; TaskPayCreateRequestDTO payRequest = null; TaskPayCreateResponseDTO payResponse = new TaskPayCreateResponseDTO(); response = new APIResponseDTO(); try { //get the DTO containing the userIDand task meta-info if (!GetCSTaskToCreate(out payRequest)) { response.SetErrorResponse("Invalid Request please try again!", APIResponseDTO.RESULT_TYPE.ERROR); return(false); } Watch.Stop(); //try to pay the task if (!PayCSTask(out txId, out hasFunds, payRequest)) { response.SetErrorResponse("Cannot perform the payment!", APIResponseDTO.RESULT_TYPE.ERROR); return(false); } Watch.Start(); //transaction not performed due to insufficient credits if (hasFunds == false) { response.SetErrorResponse("Insufficient Credits!", APIResponseDTO.RESULT_TYPE.INSUFFICIENT_CREDITS); return(true); } Watch.Stop(); if (!CreateCSTask(out taskId, payRequest)) { response.SetErrorResponse("Cannot create the crowd-sensing task, please try again!", APIResponseDTO.RESULT_TYPE.ERROR); return(false); } Watch.Start(); payResponse.TaskID = taskId; payResponse.TransactionID = txId; response.SetResponse(payResponse, APIResponseDTO.RESULT_TYPE.SUCCESS); Watch.Stop(); Global.Log.DebugFormat("Execution Time Create Task: [{0}] in Milliseconds", Watch.ElapsedMilliseconds); watch.Reset(); return(true); } catch (Exception ex) { Global.Log.ErrorFormat("PayCreateCrowdSensingTask", ex.Message); return(false); } }
public void Get_By_Restaurant_Id() { APIResponseDTO response = this.reviewController.GetByRestaurantId(1); ReviewModelList reviewsByRestaurant = (ReviewModelList)response.Data; Assert.AreNotEqual <ReviewModelList>(reviewsByRestaurant, null); Assert.AreNotEqual <int>(reviewsByRestaurant.ReviewList.Count, 0); foreach (ReviewModelDTO review in reviewsByRestaurant.ReviewList) { Assert.AreNotEqual <ReviewModelDTO>(review, null); Assert.AreEqual <int>(review.Restaurant.Id, 1); } }
public void Add() { ReviewModelDTO newReview = new ReviewModelDTO() { Reviewer = new ReviewerModelDTO() { Id = 4, Name = "Reviewer 4" }, Restaurant = new RestaurantModelDTO() { Id = 4 }, ReviewedDateTime = DateTime.Now, Rating = 3, ReviewText = "This is sample review text by Reviewer 4 for Restaurant 4. This is sample review text by Reviewer 4 for Restaurant 4. This is sample review text by Reviewer 4 for Restaurant 4. This is sample review text by Reviewer 4 for Restaurant 4. This is sample review text by Reviewer 4 for Restaurant 4." }; ReviewAPIRequestDTO request = new ReviewAPIRequestDTO() { Header = new APIRequestHeaderDTO() { RequestID = 1 }, Data = newReview }; APIResponseDTO response = this.reviewController.Post(request); Assert.AreEqual <ErrorDTO>(response.Error, null); Assert.AreNotEqual <APIBaseDTO>(response.Data, null); ReviewModelDTO newReviewRet = (ReviewModelDTO)response.Data; Assert.AreNotEqual <ReviewModelDTO>(newReviewRet, null); Assert.AreEqual <string>(newReviewRet.Reviewer.Name, "Reviewer 4"); Assert.AreEqual <int>(newReviewRet.Restaurant.Id, 4); Assert.AreEqual <int>(newReviewRet.Rating, 3); Assert.AreEqual <int>(newReview.Id, newReviewRet.Id); Assert.AreEqual <string>(newReview.Reviewer.Name, newReviewRet.Reviewer.Name); Assert.AreEqual <int>(newReview.Restaurant.Id, newReviewRet.Restaurant.Id); Assert.AreEqual <int>(newReview.Rating, newReviewRet.Rating); response = this.reviewController.Get(newReviewRet.Id); ReviewModelDTO review = (ReviewModelDTO)response.Data; Assert.AreNotEqual <ReviewModelDTO>(review, null); Assert.AreEqual <int>(review.Id, newReviewRet.Id); Assert.AreEqual <string>(review.Reviewer.Name, newReviewRet.Reviewer.Name); Assert.AreEqual <int>(review.Restaurant.Id, newReviewRet.Restaurant.Id); Assert.AreEqual <int>(review.Rating, newReviewRet.Rating); }
public void Get_By_City() { string city = "Pittsburgh"; APIResponseDTO response = restaurantController.Get(city); Assert.AreNotEqual <APIResponseDTO>(response, null); RestaurantModelList restaurantList = (RestaurantModelList)response.Data; Assert.AreNotEqual <RestaurantModelList>(restaurantList, null); Assert.AreNotEqual <List <RestaurantModelDTO> >(restaurantList.RestaurantList, null); foreach (RestaurantModelDTO restaurant in restaurantList.RestaurantList) { Assert.AreNotEqual <RestaurantModelDTO>(restaurant, null); Assert.AreEqual <string>(restaurant.City, city); } }
public bool GetTopics(out APIResponseDTO response) { response = new APIResponseDTO(); try { response.SetResponse(serverMgr.RemoteTaskDistributor.GetTopics() , APIResponseDTO.RESULT_TYPE.SUCCESS); return(true); } catch (Exception ex) { Global.Log.Error(ex.Message); response.SetResponse("Cannot obtain topics from server. Please try again!", APIResponseDTO.RESULT_TYPE.ERROR); return(false); } }
public bool ReportResultsCSTask(out APIResponseDTO response, string taskType) { Watch.Start(); TaskTypeEnum taskTypeEnum; ReportDTO reportReqDTO = null; response = new APIResponseDTO(); try { //get the enum type if (!Enum.TryParse(taskType, out taskTypeEnum)) { Global.Log.ErrorFormat("Invalid Type of Task: [{0}]", taskType); response.SetErrorResponse("Cannot Report Task!", APIResponseDTO.RESULT_TYPE.ERROR); return(false); } if (!GetReportFromRequest(this.request, taskTypeEnum, out reportReqDTO)) { response.SetErrorResponse("Invalid Request!", APIResponseDTO.RESULT_TYPE.ERROR); return(false); } Watch.Stop(); if (!serverMgr.RemoteReportAggregator.SaveReport(reportReqDTO)) { Global.Log.Error("Cannot generate Report from user results!"); return(false); } Watch.Start(); response.SetResponse(new Dictionary <string, object>() { { "status", "submited" } } , APIResponseDTO.RESULT_TYPE.SUCCESS); Global.Log.Debug("Report generated with SUCCESS!"); Watch.Stop(); Global.Log.DebugFormat("Execution Time Reward Task: [{0}] in Milliseconds", Watch.ElapsedMilliseconds); Watch.Reset(); return(true); } catch (Exception ex) { Global.Log.Error(ex.Message); return(false); } }