示例#1
0
        public void APIUserLogoutTest()
        {
            // login to the backend server
            var clientxsrf = ClientXsrf.GetValidClientAndxsrfTokenPair(_configure);

            // extract the client
            var client = clientxsrf.client;

            // should be 3 cookies after login
            Assert.Equal(3, client.CookieContainer.Count);

            // extract the xsrf token
            var xsrfToken = clientxsrf.xsrfToken;

            // set the logout url
            client.BaseUrl = new Uri($"{_configure.BaseUrl}/api/authorization/logout");

            //setup the request headers
            var request = RequestHelpers.BasicPostRequest();

            // get the authorization token and adds the token to the request
            request.AddHeader("X-XSRF-TOKEN", xsrfToken);

            // execute the logout request
            var response = client.Execute(request);

            // valid response
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);

            // should be no cookies in the response after login
            Assert.Equal(0, response.Cookies.Count);

            ApiOutputHelper.WriteRequestResponseOutput(request, response, _output);
        }
示例#2
0
        private IRestResponse AttemptLogin(string username, string password)
        {
            var client = new RestClient {
                BaseUrl = new Uri(_configure.BaseUrl + "/api/authorization/login")
            };
            var request = new RestRequest {
                Method = Method.POST, RequestFormat = DataFormat.Json
            };

            request.AddHeader("Content-Type", "application/json");
            request.AddJsonBody(new { username, password });
            var response = client.Execute(request);

            ApiOutputHelper.WriteRequestResponseOutput(request, response, _output);
            return(response);
        }
示例#3
0
        private void AttemptLogin(string username, string password, HttpStatusCode expectedStatusCode)
        {
            // setup client and request
            var client = new RestClient {
                BaseUrl = new Uri(_configure.BaseUrl + "/api/authorization/login")
            };
            var request = new RestRequest {
                Method = Method.POST, RequestFormat = DataFormat.Json
            };

            request.AddHeader("Content-Type", "application/json");
            request.AddJsonBody(new { username = username, password = password });

            // execute the request and assert response correct
            var response = client.Execute(request);

            ApiOutputHelper.WriteRequestResponseOutput(request, response, _output);
            Assert.Equal(expectedStatusCode, response.StatusCode);
        }
示例#4
0
        /// <summary>
        /// Perform a specific request type to an end point with the specified parameters and headers,
        /// </summary>
        /// <param name="method">The specified request method type</param>
        /// <param name="url">The Endpoint</param>
        /// <param name="param">The Request Body/Parameters</param>
        /// <param name="headers">The Request Headers</param>
        /// <param name="dataFormat">XML or JSon Body</param>
        /// <param name="files">Files to attatch to the request</param>
        public IRestResponse RequestEndpoint(
            Method method,
            string url,
            object param = null,
            Dictionary <string, string> headers = null,
            DataFormat dataFormat        = DataFormat.Json,
            IEnumerable <FileData> files = null
            )
        {
            // Setup the rest client
            var client = new RestClient
            {
                BaseUrl = new Uri(_configure.BaseUrl + url)
            };

            // Setup the request
            var request = new RestRequest
            {
                Method = method,
            };

            // Merge the two dictionaries together
            var requestHeaders = new Dictionary <string, string>();

            if (headers != null)
            {
                foreach (var(key, value) in headers)
                {
                    requestHeaders.TryAdd(key, value);
                }
            }
            if (CommonHeaders != null)
            {
                foreach (var(key, value) in CommonHeaders)
                {
                    requestHeaders.TryAdd(key, value);
                }
            }

            // Set all the headers to the request
            if (requestHeaders.Count > 0)
            {
                foreach (var(key, value) in requestHeaders)
                {
                    request.AddHeader(key, value);
                }
            }

            if (param != null)
            {
                request.RequestFormat = dataFormat;

                switch (dataFormat)
                {
                case DataFormat.Json:
                    request.AddJsonBody(param);
                    break;

                case DataFormat.Xml:
                    request.AddXmlBody(param);
                    break;

                case DataFormat.None:
                    break;

                default:
                    request.AddJsonBody(param);
                    break;
                }
            }

            if (files != null)
            {
                if (param is Dictionary <string, object> paramDictionary)
                {
                    foreach (var paramItem in paramDictionary)
                    {
                        request.AddParameter(paramItem.Key, paramItem.Value, ParameterType.GetOrPost);
                    }
                }
                else
                {
                    throw new Exception("The param format is invalid");
                }

                foreach (var file in files)
                {
                    request.AddFile(file.Id.ToString(), file.Data, file.Filename);
                }
            }

            // Execute the request
            var response = client.Execute(request);

            if (_output != null)
            {
                ApiOutputHelper.WriteRequestResponseOutput(request, response, _output);
            }

            return(response);
        }