public void AuthenticateWithOAuthNeteller()
        {
            string EncodedAuthString = RestAPI.GetEncodedAuthString(api.ClientID, api.ClientSecret);
            var    client            = new RestClient(api.Endpoint);
            var    request           = new RestRequest("v1/oauth2/token", Method.POST);

            //should be better ways of sending basic auth, like oauth v1:
            //client.Authenticator = OAuth1Authenticator.ForRequestToken(consumerKey, consumerSecret);
            request.AddHeader("Authorization", "Basic " + EncodedAuthString);

            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Cache-Control", "no-cache");
            request.AddParameter("grant_type", "client_credentials");

            var response = client.Execute(request);

            Assert.NotNull(response);
            Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));

            string result = response.Content;

            if (
                result.Contains("error") ||
                result.Contains("invalid_request") ||
                result.Contains("invalid_client") ||
                result.Contains("invalid_grant") ||
                result.Contains("invalid") ||
                result.Contains("unauthorized_client") ||
                result.Contains("unsupported_grant_type") ||
                result.Contains("invalid_scope")
                )
            {
                //logger.Fatal("Error getting access token from Neteller: " + result);
                throw new Exception("failed");
            }

            dynamic obj         = JObject.Parse(response.Content);
            string  accessToken = (string)obj["accessToken"];

            Assert.NotNull(accessToken);
        }