Example #1
0
    public void Authenticate(IRestClient client, IRestRequest request)
    {
        request.Credentials = new NetworkCredential(_user, _pass);

        // TODO: Figure out how to remove the if.. currently PUT does not work if the DigestAuthFixer is in place
        if (request.Method == Method.GET)
        {
            var url = client.BuildUri(request).ToString();
            var uri = new Uri(url);

            var digestAuthFixer = new DigestAuthFixer(client.BaseUrl.ToString(), _user, _pass);
            digestAuthFixer.GrabResponse(uri.PathAndQuery);
            var digestHeader = digestAuthFixer.GetDigestHeader(uri.PathAndQuery);
            request.AddParameter("Authentication", digestHeader, ParameterType.HttpHeader);
        }
    }
Example #2
0
        public void StartSystemRestoreInvalidBackupFileTest()
        {
            RunTest(() =>
            {
                HttpWebResponse httpResponse = null;

                string expectedDownTime = null;
                var uploadURI           = StartSystemRestore(out expectedDownTime);

                try
                {
                    RunStep(() =>
                    {
                        var sender   = new DigestAuthFixer(_username, _password);
                        httpResponse = sender.GrabResponse(uploadURI, "application/octet-stream", new byte[] { 1, 2, 3 });
                    },
                            string.Format("Invoke HTTP POST request on URI '{0}'", uploadURI));
                }
                catch (WebException e)
                {
                    if (null == (e.Response as HttpWebResponse))
                    {
                        StepFailed(e);
                        return;
                    }

                    StepPassed();

                    httpResponse = (HttpWebResponse)e.Response;
                }
                catch (Exception e)
                {
                    StepFailed(e);
                    return;
                }

                Assert(httpResponse.StatusCode == HttpStatusCode.UnsupportedMediaType,
                       "HTTP Status is not '415 Unsupported Media Type'",
                       "Check HTTP status code",
                       string.Format("HTTP Status: {0} {1}", ((int)httpResponse.StatusCode), httpResponse.StatusDescription));
            });
        }
        public void NvtSnapshotUriTest()
        {
            RunTest(() =>
            {
                Profile[] profiles = GetProfiles();
                Assert((profiles != null && profiles.Length > 0), "No profile available", "Check if DUT returned at least one profile");

                Profile mediaProfile = null;
                foreach (Profile profile in profiles)
                {
                    if (profile.VideoEncoderConfiguration != null &&
                        profile.VideoSourceConfiguration != null)
                    {
                        mediaProfile = profile;
                        break;
                    }
                }

                Assert(mediaProfile != null,
                       "Profile with Video Encoder configuration and Video Source configuration not found",
                       "Check if media profile with video source and video encoder is present");

                MediaUri response = GetSnapshotUri(mediaProfile.token);

                Assert(response != null,
                       "Response returned is null",
                       "Check that response is not null");

                Assert(response.Uri.IsValidUrl(),
                       "URL provided is not valid",
                       "Check that MediaUri field contains valid URL", string.Format("URI: {0}", response.Uri));


                // HTTP GET

                HttpWebResponse httpResponse = null;

                RunStep(() =>
                {
                    //HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(response.Uri);
                    //NetworkCredential credential = new NetworkCredential(_username, _password);
                    //request.Credentials = credential;
                    //httpResponse = (HttpWebResponse)request.GetResponse();

                    var uri      = new Uri(response.Uri);
                    var sender   = new DigestAuthFixer(_username, _password);
                    httpResponse = sender.GrabResponse(response.Uri);
                },
                        "Invoke HTTP GET request on snapshot URI");


                Assert(httpResponse.ContentType.ToLower() == "image/jpeg",
                       "ContentType is not image/jpeg",
                       "Check ContentType header",
                       string.Format("ContentType: {0}", httpResponse.ContentType));

                Assert(httpResponse.StatusCode == HttpStatusCode.OK,
                       "HTTP Status is not '200 OK'",
                       "Check HTTP status code",
                       string.Format("HTTP Status: {0} {1}", ((int)httpResponse.StatusCode), httpResponse.StatusDescription));



                Stream receiveStream = httpResponse.GetResponseStream();

                MemoryStream memoryStream = new MemoryStream();

                int bufSize = 1024;

                byte[] buffer = new byte[bufSize];
                int bytes     = receiveStream.Read(buffer, 0, bufSize);
                while (bytes > 0)
                {
                    System.Diagnostics.Debug.WriteLine(string.Format("Next {0} bytes", bytes));

                    memoryStream.Write(buffer, 0, bytes);
                    bytes = receiveStream.Read(buffer, 0, bufSize);
                }

                httpResponse.Close();

                Assert(memoryStream.GetBuffer().IsJpeg(),
                       "Information returned is not JPEG image",
                       "Validate JPEG image");
            });
        }
Example #4
0
        public void StartSystemRestoreTest()
        {
            RunTest(() =>
            {
                string supportInfoUri;
                string systemBackupUri;
                GetSystemUrisResponseExtension extension;
                GetSystemURIs(out supportInfoUri, out systemBackupUri, out extension);

                Assert(systemBackupUri.Any(),
                       "System Backup URI is empty",
                       "Check System Backup URI isn't empty");

                HttpWebResponse httpResponse = null;
                var firmwareupgrade          = new MemoryStream();

                RunStep(() =>
                {
                    var sender   = new DigestAuthFixer(_username, _password);
                    httpResponse = sender.GrabResponse(systemBackupUri);
                    httpResponse.GetResponseStream().CopyTo(firmwareupgrade);
                },
                        string.Format("Invoke HTTP GET request on URI '{0}'", systemBackupUri));

                Assert(httpResponse.StatusCode == HttpStatusCode.OK,
                       "HTTP Status is not '200 OK'",
                       "Check HTTP status code",
                       string.Format("HTTP Status: {0} {1}", ((int)httpResponse.StatusCode), httpResponse.StatusDescription));

                Assert(0 != httpResponse.ContentLength,
                       "The DUT returned empty System Backup",
                       "Check System Backup content is returned");

                string expectedDownTime = null;
                var uploadURI           = StartSystemRestore(out expectedDownTime);

                try
                {
                    RunStep(() =>
                    {
                        var sender   = new DigestAuthFixer(_username, _password);
                        httpResponse = sender.GrabResponse(uploadURI, "application/octet-stream", firmwareupgrade.ToArray());
                    },
                            string.Format("Invoke HTTP POST request on URI '{0}'", uploadURI));
                }
                catch (WebException e)
                {
                    if (null == (e.Response as HttpWebResponse))
                    {
                        StepFailed(e);
                        return;
                    }

                    StepPassed();

                    httpResponse = (HttpWebResponse)e.Response;
                }
                catch (Exception e)
                {
                    StepFailed(e);
                    return;
                }

                Assert(httpResponse.StatusCode == HttpStatusCode.OK,
                       "HTTP Status is not '200 OK'",
                       "Check HTTP status code",
                       string.Format("HTTP Status: {0} {1}", ((int)httpResponse.StatusCode), httpResponse.StatusDescription));

                var downTime = XmlConvert.ToTimeSpan(expectedDownTime);
                RunStep(() => Sleep((int)downTime.TotalMilliseconds),
                        string.Format("{0} seconds timeout after StartSystemRestore", (int)downTime.TotalSeconds));


                discoverDevice();
            });
        }
Example #5
0
        public void GetSystemUrisTest()
        {
            RunTest(() =>
            {
                DeviceServiceCapabilities serviceCapabilities   = null;
                DeviceCapabilities deviceManagementCapabilities = null;

                if (Features.ContainsFeature(Feature.GetServices))
                {
                    serviceCapabilities = GetServiceCapabilities();
                }
                else
                {
                    deviceManagementCapabilities = GetCapabilities(null).Device;
                }

                Assert(null != serviceCapabilities || null != deviceManagementCapabilities,
                       "The DUT didn't returned device capabilities",
                       "Check capabilities is returned");

                string supportInfoUri;
                string systemBackupUri;
                GetSystemUrisResponseExtension extension;
                var systemLogURIs = GetSystemURIs(out supportInfoUri, out systemBackupUri, out extension);

                if (null != serviceCapabilities && null != serviceCapabilities.System && serviceCapabilities.System.HttpSystemLoggingSpecified && serviceCapabilities.System.HttpSystemLogging ||
                    null != deviceManagementCapabilities && null != deviceManagementCapabilities.System && null != deviceManagementCapabilities.System.Extension && deviceManagementCapabilities.System.Extension.HttpSystemLoggingSpecified && deviceManagementCapabilities.System.Extension.HttpSystemLogging)
                {
                    Assert(systemLogURIs.Any(uri => uri.Uri.Any()),
                           "There are no valid System Log URIs",
                           "Check there are non-empty System Log URIs");

                    foreach (var systemLogUri in systemLogURIs)
                    {
                        HttpWebResponse httpResponse = null;

                        RunStep(() =>
                        {
                            var sender   = new DigestAuthFixer(_username, _password);
                            httpResponse = sender.GrabResponse(systemLogUri.Uri);
                            httpResponse.GetResponseStream().Close();
                        },
                                string.Format("Invoke HTTP GET request on URI '{0}'", systemLogUri.Uri));

                        Assert(httpResponse.StatusCode == HttpStatusCode.OK,
                               "HTTP Status is not '200 OK'",
                               "Check HTTP status code",
                               string.Format("HTTP Status: {0} {1}", ((int)httpResponse.StatusCode), httpResponse.StatusDescription));

                        Assert(0 != httpResponse.ContentLength,
                               "The DUT returned empty System Log",
                               "Check System Log content is returned");
                    }
                }

                if (null != serviceCapabilities && null != serviceCapabilities.System && serviceCapabilities.System.HttpSupportInformationSpecified && serviceCapabilities.System.HttpSupportInformation ||
                    null != deviceManagementCapabilities && null != deviceManagementCapabilities.System && null != deviceManagementCapabilities.System.Extension && deviceManagementCapabilities.System.Extension.HttpSupportInformationSpecified && deviceManagementCapabilities.System.Extension.HttpSupportInformation)
                {
                    Assert(supportInfoUri.Any(),
                           "Support Info URI is empty",
                           "Check Support Info URI isn't empty");

                    HttpWebResponse httpResponse = null;

                    RunStep(() =>
                    {
                        var sender   = new DigestAuthFixer(_username, _password);
                        httpResponse = sender.GrabResponse(supportInfoUri);
                        httpResponse.GetResponseStream().Close();
                    },
                            string.Format("Invoke HTTP GET request on URI '{0}'", supportInfoUri));

                    Assert(httpResponse.StatusCode == HttpStatusCode.OK,
                           "HTTP Status is not '200 OK'",
                           "Check HTTP status code",
                           string.Format("HTTP Status: {0} {1}", ((int)httpResponse.StatusCode), httpResponse.StatusDescription));

                    Assert(0 != httpResponse.ContentLength,
                           "The DUT returned empty Support Info",
                           "Check Support Info content is returned");
                }

                if (null != serviceCapabilities && null != serviceCapabilities.System && serviceCapabilities.System.HttpSystemBackupSpecified && serviceCapabilities.System.HttpSystemBackup ||
                    null != deviceManagementCapabilities && null != deviceManagementCapabilities.System && null != deviceManagementCapabilities.System.Extension && deviceManagementCapabilities.System.Extension.HttpSystemBackupSpecified && deviceManagementCapabilities.System.Extension.HttpSystemBackup)
                {
                    Assert(systemBackupUri.Any(),
                           "System Backup URI is empty",
                           "Check System Backup URI isn't empty");

                    HttpWebResponse httpResponse = null;

                    RunStep(() =>
                    {
                        var sender   = new DigestAuthFixer(_username, _password);
                        httpResponse = sender.GrabResponse(systemBackupUri);
                        httpResponse.GetResponseStream().Close();
                    },
                            string.Format("Invoke HTTP GET request on URI '{0}'", systemBackupUri));

                    Assert(httpResponse.StatusCode == HttpStatusCode.OK,
                           "HTTP Status is not '200 OK'",
                           "Check HTTP status code",
                           string.Format("HTTP Status: {0} {1}", ((int)httpResponse.StatusCode), httpResponse.StatusDescription));

                    Assert(0 != httpResponse.ContentLength,
                           "The DUT returned empty System Backup",
                           "Check System Backup content is returned");
                }
            });
        }