public static async Task <(AdminCreateRequestModel request, AdminCreateResponseModel response)> CreateUrl(this HttpClient client, string testAccessToken) { // Arrange // Create URL var data = new AdminCreateRequestModel() { AccessToken = testAccessToken, ExpiresUtc = DateTime.Now.AddHours(1), MetaData = "123", Url = "https://www.google.com/?q=$key$" }; var content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json"); var response1 = await client.PostAsync("/Admin/Create", content); response1.EnsureSuccessStatusCode(); var response1String = await response1.Content.ReadAsStringAsync(); var response1Object = JsonConvert.DeserializeObject <AdminCreateResponseModel>(response1String); Assert.True(response1Object.Success); Assert.True(!string.IsNullOrEmpty(response1Object.Key)); Assert.True(response1Object.Key.Length > 4); Assert.True(response1Object.Url.ToUpperInvariant().Contains(response1Object.Key.ToUpperInvariant())); return(request : data, response : response1Object); }
public async Task <AdminCreateResponseModel> Create([FromBody] AdminCreateRequestModel model) { var accessToken = await _navigationDatabase.GetAccessToken(model.AccessToken); if (accessToken == null || !accessToken.Enabled) { return new AdminCreateResponseModel() { Success = false } } ; // Create a URL forward entry var data = Mapper.Map <ShortUrlModel>(model); data.CreatorAccessTokenId = accessToken.Id; var result = await _navigationDatabase.AddData(data); var ret = Mapper.Map <AdminCreateResponseModel>(data); ret.Url = NavigateController.UrlKeyReplacementRegex.Replace(ret.Url, ret.Key); ret.ShortUrl = new Uri(Request.Scheme + "://" + Request.Host.Value + Request.PathBase + "/" + ret.Key).ToString(); //ret.Key = result.Key; ret.Success = result.Success; return(ret); }
private async Task CreateAccessDenied() { // Create URL var data = new AdminCreateRequestModel() { AccessToken = "INVALID", ExpiresUtc = DateTime.Now.AddHours(1), MetaData = "123", Url = "https://www.google.com" }; var content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json"); var response1 = await _client.PostAsync("/Admin/Create", content); response1.EnsureSuccessStatusCode(); var response1String = await response1.Content.ReadAsStringAsync(); var response1Object = JsonConvert.DeserializeObject <AdminCreateResponseModel>(response1String); Assert.False(response1Object.Success); Assert.True(string.IsNullOrEmpty(response1Object.Key)); Assert.True(string.IsNullOrEmpty(response1Object.Key)); }