public void TestPostAsync_ValidInput_ReturnsLogData()
        {
            const string ExpectedDownloadUrl = "http://download.me";

            var activity = new BackgroundActivityStatus {
                ActivityId = "activityId"
            };
            var logDownload            = new ExternalApiLogDownload();
            var mockedNfieldConnection = new Mock <INfieldConnectionClient>();
            var mockedHttpClient       = CreateHttpClientMock(mockedNfieldConnection);

            mockedHttpClient.Setup(client => client.PostAsJsonAsync <ExternalApiLogDownload>(
                                       new Uri(ServiceAddress, "externalapilogdownload/"), logDownload))
            .Returns(CreateTask(HttpStatusCode.OK, new StringContent(JsonConvert.SerializeObject(activity))));

            mockedHttpClient
            .Setup(client => client.GetAsync(new Uri(ServiceAddress, $"BackgroundActivities/{activity.ActivityId}/")))
            .Returns(CreateTask(HttpStatusCode.OK, new StringContent(JsonConvert.SerializeObject(new { Status = 2, DownloadDataUrl = ExpectedDownloadUrl }))));

            var target = new NfieldExternalApisLogService();

            target.InitializeNfieldConnection(mockedNfieldConnection.Object);

            var result = target.PostAsync(logDownload).Result;

            Assert.Equal(ExpectedDownloadUrl, result);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// See <see cref="INfieldExternalApisLogService.PostAsync"/>
        /// </summary>
        public Task <string> PostAsync(ExternalApiLogDownload logDownloadRequest)
        {
            Ensure.ArgumentNotNull(logDownloadRequest, nameof(logDownloadRequest));

            return(Client.PostAsJsonAsync(ExternalApiDownloadLogUri, logDownloadRequest)
                   .ContinueWith(task => task.Result.Content.ReadAsStringAsync().Result)
                   .ContinueWith(task => JsonConvert.DeserializeObject <BackgroundActivityStatus>(task.Result))
                   .ContinueWith(task => ConnectionClient.GetActivityResultAsync <string>(task.Result.ActivityId, "DownloadDataUrl").Result)
                   .FlattenExceptions());
        }