public async Task GetAccessToken_Should_Return_Http_Not_Found(string code)
        {
            //Arrange
            var fakeResponseHandler = new FakeResponseHandler();

            fakeResponseHandler.AddFakeResponse(new Uri("http://example.org/test"), new HttpResponseMessage(HttpStatusCode.OK));
            var httpClient = new HttpClient(fakeResponseHandler);

            string clientID           = "yourClientID";
            string clientSecret       = "yourClientSecret";
            string FORGE_CALLBACK_URL = "https://fake.com/api/forge/callback/oauth";

            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(clientID + ":" + clientSecret)));

            FormUrlEncodedContent formContent = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("code", code),
                new KeyValuePair <string, string>("redirect_uri", FORGE_CALLBACK_URL),
                new KeyValuePair <string, string>("grant_type", "authorization_code"),
            });

            //Act
            var result = await httpClient.PostAsync("https://accounts.spotify.com/api/token", formContent);

            //Assert
            Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.NotFound));
        }
        public async Task GetTrackUri_Should_Return_Http_Not_found(string filePath, string accessToken)
        {
            //Arrange
            var fakeResponseHandler = new FakeResponseHandler();

            fakeResponseHandler.AddFakeResponse(new Uri("http://example.org/test"), new HttpResponseMessage(HttpStatusCode.OK));
            var httpClient = new HttpClient(fakeResponseHandler);

            string artist = "Michael Jackson";

            var qb = new QueryBuilder();

            qb.Add("q", $"artist:{artist} " + "Beat It");
            qb.Add("type", "track");
            qb.Add("limit", "1");

            httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
            var trackUrl = trackSearchBaseUrl + qb.ToQueryString().ToString();

            //Act
            var result = await httpClient.GetAsync(trackUrl);

            //Assert
            Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.NotFound));
        }
        public async Task AddTrackToPlaylistFunc_Should_Return_Http_Not_found(string playlistId, string uris, string accessToken)
        {
            //Arrange
            var fakeResponseHandler = new FakeResponseHandler();

            fakeResponseHandler.AddFakeResponse(new Uri("http://example.org/test"), new HttpResponseMessage(HttpStatusCode.OK));
            var httpClient = new HttpClient(fakeResponseHandler);

            var qb = new QueryBuilder();

            qb.Add("uris", uris);
            httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);

            //Act
            var result = await httpClient.PostAsync(playlistAddTrackhBaseUrl.Replace("{playlist_id}", playlistId) + qb.ToQueryString(), null);

            //Assert
            Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.NotFound));
        }
        public async Task CreatePlaylist_Should_Return_Http_Not_found(string playlistname, string accessToken)
        {
            //Arrange
            var fakeResponseHandler = new FakeResponseHandler();

            fakeResponseHandler.AddFakeResponse(new Uri("http://example.org/test"), new HttpResponseMessage(HttpStatusCode.OK));
            var httpClient    = new HttpClient(fakeResponseHandler);
            var stringPayload = new
            {
                name        = playlistname,
                description = playlistname
            };
            var bodyPayload = new StringContent(JsonConvert.SerializeObject(stringPayload), Encoding.UTF8, "application/json");

            httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);

            //Act
            var result = await httpClient.PostAsync(playlistBaseUrl, bodyPayload);

            //Assert
            Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.NotFound));
        }