示例#1
0
        protected DeviceServiceCapabilities GetServiceCapabilities()
        {
            DeviceServiceCapabilities capabilities = null;

            RunStep(() => { capabilities = Client.GetServiceCapabilities(); }, "Get service capabilities");
            DoRequestDelay();
            return(capabilities);
        }
示例#2
0
        public TestTool.Onvif.DeviceServiceCapabilities GetServiceCapabilities()
        {
            BeginMethod("GetServiceCapabilities");

            DeviceServiceCapabilities capabilities = SimulatorConfiguration.ServicesConfiguration.DeviceServiceCapabilities;

            EndMethod();

            return(capabilities);
        }
示例#3
0
        protected void UnauthorizedCommandSequence(DeviceServiceCapabilities serviceCapabilities)
        {
            AssertUnauthorized(() => SetScopes(new[] { "onvif://www.onvif.org/location/test" }), "SetScopes");

            AssertUnauthorized(() => SetDiscoveryMode(DiscoveryMode.Discoverable), "SetDiscoveryMode");

            if (null != serviceCapabilities && null != serviceCapabilities.Security && serviceCapabilities.Security.AccessPolicyConfigSpecified && serviceCapabilities.Security.AccessPolicyConfig)
            {
                AssertUnauthorized(() => GetAccessPolicy(), "GetAccessPolicy");
            }

            AssertUnauthorized(() => CreateUsers(new[] { new User()
                                                         {
                                                             Username = "******", Password = "******", UserLevel = UserLevel.Administrator, Extension = null
                                                         } }), "CreateUsers");

            AssertUnauthorized(() => SetSystemDateAndTime(new SystemDateTime()
            {
                DateTimeType = SetDateTimeType.NTP, DaylightSavings = true, TimeZone = null
            }), "SetSystemDateAndTime");
        }
示例#4
0
        protected User CreateUserA1(UserLevel lvl, DeviceServiceCapabilities serviceCapabilities = null)
        {
            if (null == serviceCapabilities)
            {
                serviceCapabilities = GetServiceCapabilities();
            }

            Assert(serviceCapabilities.Security.MaxUserNameLengthSpecified && serviceCapabilities.Security.MaxPasswordLengthSpecified,
                   "The DUT didn't send Security.MaxUserNameLength and/or Security.MaxPasswordLength capabilitie(s)",
                   "Checking service capabilities Security.MaxUserNameLength and Security.MaxPasswordLength are received");

            var users = GetUsers();

            var  existedUser = users.FirstOrDefault(u => u.UserLevel == lvl);
            User user        = null;

            while (true)
            {
                try
                {
                    if (null != existedUser)
                    {
                        var passwordLength = serviceCapabilities.Security.MaxPasswordLength;
                        user = new User()
                        {
                            Username = existedUser.Username, Password = Extensions.RandomString(passwordLength), UserLevel = lvl, Extension = null
                        };
                        SetUser(new[] { user });
                    }
                    else
                    {
                        var usernameLength = serviceCapabilities.Security.MaxUserNameLength;
                        var userName       = users.Select(u => u.Username).GetNonMatchingAlphabeticalString(usernameLength);
                        var passwordLength = serviceCapabilities.Security.MaxPasswordLength;
                        user = new User()
                        {
                            Username = userName, Password = Extensions.RandomString(passwordLength), UserLevel = lvl, Extension = null
                        };
                        CreateUsers(new[] { user });
                    }
                    break;
                }
                catch (FaultException e)
                {
                    if (!e.IsValidOnvifFault("Sender/OperationProhibited/Password"))
                    {
                        //Break cycle if received fault is not "Sender/OperationProhibited/Password"
                        throw;
                    }
                    else
                    {
                        LogFault(e);
                        StepPassed();

                        StopRequested();
                    }
                }
            }

            return(user);
        }
示例#5
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        /// <remarks>All exceptions are handled here. Null is returned, if an error occurs. </remarks>
        protected DeviceServiceCapabilities GetServiceCapabilities()
        {
            if (null == Client)
            {
                LogStepEvent(string.Format("GetServiceCapabilities failed: cannot connect to Device service"));
                return(null);
            }

            DeviceServiceCapabilities response = null;

            bool retry = false;

            if (_credentialsProvider.Security == Security.None)
            {
                BeginStep("Get Service Capabilities (no credentials supplied)");
                try
                {
                    response = Client.GetServiceCapabilities();
                    StepPassed();
                }
                catch (HttpTransport.Interfaces.Exceptions.AccessDeniedException exc)
                {
                    // digest authorization required
                    _credentialsProvider.Security = Security.Digest;
                    LogStepEvent("DUT requires Digest authentication");
                    LogStepEvent("Warning: GetServiceCapabilities shall not require authentication");
                    _warning = true;
                    retry    = true;
                    StepPassed();
                }
                catch (FaultException exc)
                {
                    LogFault(exc);
                    if (IsAccessDeniedFault(exc))
                    {
                        // WS-username quthentication required
                        _credentialsProvider.Security = Security.WS;
                        LogStepEvent("DUT requires WS Username token authentication");
                        LogStepEvent("Warning: GetServiceCapabilitiess shall not require authentication");
                        _warning = true;
                        retry    = true;
                        StepPassed();
                    }
                    else
                    {
                        LogStepEvent("GetServiceCapabilities failed");
                        StepFailed(exc);
                    }
                }
                catch (Exception exc)
                {
                    RethrowIfStop(exc);
                    LogStepEvent(string.Format("GetServiceCapabilities failed ({0})", exc.Message));
                    StepFailed(exc);
                }
                DoRequestDelay();
            }
            else
            {
                retry = true;
            }
            if (retry)
            {
                BeginStep("Get Service Capabilities");
                try
                {
                    response = Client.GetServiceCapabilities();
                    StepPassed();
                }
                catch (Exception exc)
                {
                    RethrowIfStop(exc);
                    LogStepEvent(string.Format("GetServiceCapabilities failed ({0})", exc.Message));
                    StepFailed(exc);
                }
                DoRequestDelay();
            }

            return(response);
        }
示例#6
0
        public override DeviceServiceCapabilities GetServiceCapabilities()
        {
            DeviceServiceCapabilities capabilities = Simulator.SystemCapabilities.Instance.DeviceServiceCapabilities;

            return(capabilities);
        }
示例#7
0
        private SystemCapabilities()
        {
            // don't change service capabilities in other places to maintain synchronization of
            // typed properties and XmlElement's

            //Device Management Service
            DeviceServiceCapabilities          = new DeviceServiceCapabilities();
            DeviceServiceCapabilities.Network  = new NetworkCapabilities();
            DeviceServiceCapabilities.Security = new SecurityCapabilities();
            DeviceServiceCapabilities.Security.HttpDigestSpecified = true;
            DeviceServiceCapabilities.Security.HttpDigest          = true;
            DeviceServiceCapabilities.System = new Device10.SystemCapabilities();
            DeviceServiceCapabilities.System.DiscoveryByeSpecified = true;
            DeviceServiceCapabilities.System.DiscoveryBye          = false;


            //Door Control Service
            DoorServiceCapabilities          = new ServiceDoorControl10.ServiceCapabilities();
            DoorServiceCapabilities.MaxLimit = 7;

            //Access Control Service
            AccessControlCapabilities = new ServiceAccessControl10.ServiceCapabilities();
            //AccessControlCapabilities.DisableAccessPointSpecified = true;
            //AccessControlCapabilities.DisableAccessPoint = true;
            AccessControlCapabilities.MaxLimit = 1;

            //Credential Service
            CredentialCapabilities                = new ServiceCredential10.ServiceCapabilities();
            CredentialCapabilities.MaxLimit       = 3;
            CredentialCapabilities.MaxCredentials = 10;
            CredentialCapabilities.CredentialAccessProfileValiditySupported = true;
            CredentialCapabilities.CredentialValiditySupported    = true;
            CredentialCapabilities.MaxAccessProfilesPerCredential = 5;
            CredentialCapabilities.ResetAntipassbackSupported     = true;
            CredentialCapabilities.ValiditySupportsTimeValue      = true;
            CredentialCapabilities.SupportedIdentifierType        = new string[] { "pt:Card", "pt:PIN" };

            //Supported Format Types (probably refactoring requiered to be flexible)
            List <ServiceCredential10.CredentialIdentifierFormatTypeInfo> formatTypes;

            ServiceCredential10.CredentialIdentifierFormatTypeInfo credentialIdentifierFormatTypeInfo;

            SupportedFormatTypes = new Dictionary <string, List <ServiceCredential10.CredentialIdentifierFormatTypeInfo> >();

            formatTypes = new List <ServiceCredential10.CredentialIdentifierFormatTypeInfo>();

            credentialIdentifierFormatTypeInfo             = new ServiceCredential10.CredentialIdentifierFormatTypeInfo();
            credentialIdentifierFormatTypeInfo.FormatType  = "WIEGAND26";
            credentialIdentifierFormatTypeInfo.Description = "Standard 26 bit Wiegand format as defined by SIA standard (SIA AC-01).";
            formatTypes.Add(credentialIdentifierFormatTypeInfo);
            credentialIdentifierFormatTypeInfo             = new ServiceCredential10.CredentialIdentifierFormatTypeInfo();
            credentialIdentifierFormatTypeInfo.FormatType  = "WIEGAND37";
            credentialIdentifierFormatTypeInfo.Description = "Description";
            formatTypes.Add(credentialIdentifierFormatTypeInfo);

            SupportedFormatTypes.Add("pt:Card", formatTypes);

            formatTypes = new List <ServiceCredential10.CredentialIdentifierFormatTypeInfo>();

            credentialIdentifierFormatTypeInfo             = new ServiceCredential10.CredentialIdentifierFormatTypeInfo();
            credentialIdentifierFormatTypeInfo.FormatType  = "WIEGAND37";
            credentialIdentifierFormatTypeInfo.Description = "Description";
            formatTypes.Add(credentialIdentifierFormatTypeInfo);
            credentialIdentifierFormatTypeInfo             = new ServiceCredential10.CredentialIdentifierFormatTypeInfo();
            credentialIdentifierFormatTypeInfo.FormatType  = "WIEGAND37_FACILITY";
            credentialIdentifierFormatTypeInfo.Description = "Description";
            formatTypes.Add(credentialIdentifierFormatTypeInfo);
            credentialIdentifierFormatTypeInfo             = new ServiceCredential10.CredentialIdentifierFormatTypeInfo();
            credentialIdentifierFormatTypeInfo.FormatType  = "SIMPLE_NUMBER32";
            credentialIdentifierFormatTypeInfo.Description = "Description";
            formatTypes.Add(credentialIdentifierFormatTypeInfo);

            SupportedFormatTypes.Add("pt:PIN", formatTypes);

            //Access Rules Service
            AccessRulesCapabilities          = new ServiceAccessRules10.ServiceCapabilities();
            AccessRulesCapabilities.MaxLimit = 2;
            AccessRulesCapabilities.MaxAccessPoliciesPerAccessProfile = 2;
            AccessRulesCapabilities.MaxAccessProfiles = 5;
            AccessRulesCapabilities.MultipleSchedulesPerAccessPointSupported = true;

            //Schedule Service
            ScheduleCapabilities                             = new ServiceSchedule10.ServiceCapabilities();
            ScheduleCapabilities.MaxLimit                    = 2;
            ScheduleCapabilities.MaxSchedules                = 4;
            ScheduleCapabilities.MaxSpecialDayGroups         = 6;
            ScheduleCapabilities.MaxDaysInSpecialDayGroup    = 2;
            ScheduleCapabilities.MaxSpecialDaysSchedules     = 4;
            ScheduleCapabilities.MaxTimePeriodsPerDay        = 8;
            ScheduleCapabilities.SpecialDaysSupported        = true;
            ScheduleCapabilities.StateReportingSupported     = true;
            ScheduleCapabilities.ExtendedRecurrenceSupported = true;

            //Events Service
            EventsCapabilities = new Events10.Capabilities();
            EventsCapabilities.MaxNotificationProducers      = 3;
            EventsCapabilities.MaxPullPoints                 = 3;
            EventsCapabilities.PersistentNotificationStorage = false;
            EventsCapabilities.WSPullPointSupport            = true;
            EventsCapabilities.WSSubscriptionPolicySupport   = true;
            EventsCapabilities.WSPausableSubscriptionManagerInterfaceSupport = false;

            InitializeXmlElements();
        }
        public void CreateUsersTestCheckMax()
        {
            string userName1 = "OnvifTest1";
            string userName2 = "OnvifTest2";

            var createdUsers = new List <User>();

            RunTest(() =>
            {
                var anyUserCreated = false;
                var serviceCapabilitiesRetrieved = false;
                DeviceServiceCapabilities serviceCapabilities = null;

                IEnumerable <User> users = GetUsers();

                // Create operator
                string password1 = _useEmbeddedPassword ? "OnvifTest123" : _password1;

                Action newUserCreatedCheck =
                    () =>
                {
                    users = GetUsers();

                    foreach (var newUser in createdUsers)
                    {
                        var justCreated           = users.FirstOrDefault(u => u.Username == newUser.Username);
                        var noUserMsg             = string.Format("The DUT returned no user with Username = '******'", newUser.Username);
                        var userLevelDifferentMsg = null == justCreated ?  "" : string.Format("The DUT returned user with Username = '******', but with unexpected UserLevel = '{1}'. Expected: '{2}'",
                                                                                              newUser.Username, justCreated.UserLevel, newUser.UserLevel);
                        Assert(null != justCreated && justCreated.UserLevel == newUser.UserLevel,
                               justCreated == null ? noUserMsg : userLevelDifferentMsg,
                               "Check new user is created");

                        anyUserCreated = true;
                    }
                };

                //Return: finish test as PASSED if true
                Func <FaultException, User, bool> faultCheck =
                    (e, user) =>
                {
                    if (e.IsValidOnvifFault("Receiver/Action/TooManyUsers"))
                    {
                        if (Features.ContainsFeature(Feature.GetServices))
                        {
                            if (!serviceCapabilitiesRetrieved)
                            {
                                serviceCapabilitiesRetrieved = true;
                                serviceCapabilities          = GetServiceCapabilities();
                            }

                            if (null != serviceCapabilities.Security)
                            {
                                if (!serviceCapabilities.Security.MaxUsersSpecified)
                                {
                                    return(true);
                                }

                                Assert(serviceCapabilities.Security.MaxUsers <= users.Count(),
                                       string.Format("The limit of existing users is {0}. But DUT has only {1} users.", serviceCapabilities.Security.MaxUsers, users.Count()),
                                       "Check limit of existing user is reached");

                                return(true);
                            }
                        }
                        else
                        {
                            return(true);
                        }
                    }
                    else
                    {
                        LogStepEvent(string.Format("Warning: failed to create user with UserLevel = {0}{1}", user.UserLevel, Environment.NewLine));
                    }

                    return(false);
                };

                Action clearUsers =
                    () =>
                {
                    var usernames = createdUsers.Select(u => u.Username).ToArray();
                    createdUsers.Clear();
                    DeleteUsers(usernames);
                    users = users.Where(u => !usernames.Contains(u.Username));
                };

                User newUser1 = new User {
                    Username = userName1, UserLevel = UserLevel.Operator, Password = password1
                };
                var successfullCreateUsers = false;
                try
                {
                    CreateUsers(new[] { newUser1 });
                    createdUsers.Add(newUser1);
                    anyUserCreated         = true;
                    successfullCreateUsers = true;
                }
                catch (FaultException exc)
                {
                    StepPassed();

                    if (faultCheck(exc, newUser1))
                    {
                        return;
                    }
                }

                if (successfullCreateUsers)
                {
                    newUserCreatedCheck();
                }

                // create user
                User newUser2 = new User {
                    Username = userName2, UserLevel = UserLevel.User, Password = password1
                };
                successfullCreateUsers = false;
                try
                {
                    CreateUsers(new[] { newUser2 });
                    createdUsers.Add(newUser2);
                    successfullCreateUsers = true;
                }
                catch (FaultException exc)
                {
                    StepPassed();

                    if (faultCheck(exc, newUser2))
                    {
                        return;
                    }
                }

                if (successfullCreateUsers)
                {
                    newUserCreatedCheck();
                }

                if (createdUsers.Any())
                {
                    clearUsers();
                }

                // Create admin
                User newUser3 = new User {
                    Username = userName1, UserLevel = UserLevel.Administrator, Password = password1
                };
                successfullCreateUsers = false;
                try
                {
                    CreateUsers(new[] { newUser3 });
                    createdUsers.Add(newUser3);
                    successfullCreateUsers = true;
                    anyUserCreated         = true;
                }
                catch (FaultException exc)
                {
                    StepPassed();

                    if (faultCheck(exc, newUser3))
                    {
                        return;
                    }
                }

                if (successfullCreateUsers)
                {
                    newUserCreatedCheck();
                }

                if (createdUsers.Any())
                {
                    clearUsers();
                }

                Assert(anyUserCreated, "Faild to create user with any of UserLevel", "Check if a user with any parameters has been created");
            },
                    () =>
            {
                if (createdUsers.Any())
                {
                    DeleteUsers(createdUsers.Select(u => u.Username).ToArray());
                }
            });
        }
        public SimulatorConfiguration NormalConfiguration()
        {
            SimulatorConfiguration configuration = new SimulatorConfiguration();

            configuration.ServicesConfiguration = new ServicesConfiguration();

            DeviceServiceCapabilities deviceServiceCapabilities = new DeviceServiceCapabilities();

            deviceServiceCapabilities.Network = new NetworkCapabilities();
            deviceServiceCapabilities.Network.Dot11Configuration          = true;
            deviceServiceCapabilities.Network.Dot11ConfigurationSpecified = true;
            deviceServiceCapabilities.Network.DynDNS = true;
            deviceServiceCapabilities.Network.Dot11ConfigurationSpecified = true;
            deviceServiceCapabilities.Network.HostnameFromDHCP            = true;
            deviceServiceCapabilities.Network.HostnameFromDHCPSpecified   = true;
            deviceServiceCapabilities.Network.IPFilter            = false;
            deviceServiceCapabilities.Network.IPFilterSpecified   = true;
            deviceServiceCapabilities.Network.IPVersion6          = false;
            deviceServiceCapabilities.Network.IPVersion6Specified = true;
            deviceServiceCapabilities.Network.NTP                        = 1;
            deviceServiceCapabilities.Network.NTPSpecified               = true;
            deviceServiceCapabilities.Network.ZeroConfiguration          = false;
            deviceServiceCapabilities.Network.ZeroConfigurationSpecified = true;

            deviceServiceCapabilities.Security = new SecurityCapabilities();

            deviceServiceCapabilities.System = new SystemCapabilities();
            deviceServiceCapabilities.System.HttpSystemBackup          = true;
            deviceServiceCapabilities.System.HttpSystemBackupSpecified = true;
            deviceServiceCapabilities.System.SystemLogging             = true;
            deviceServiceCapabilities.System.SystemLoggingSpecified    = true;

            configuration.ServicesConfiguration.DeviceServiceCapabilities = deviceServiceCapabilities;
            configuration.ServicesConfiguration.CreateOldStyleCapabilities();


            configuration.DeviceInformation                 = new DeviceInformation();
            configuration.DeviceInformation.Brand           = "ONVIF";
            configuration.DeviceInformation.FirmwareVersion = "1.0";
            configuration.DeviceInformation.HardwareId      = "12345";
            configuration.DeviceInformation.Model           = "Ideal PACS Device";
            configuration.DeviceInformation.SerialNumber    = "123456789";

            AccessControlServiceCapabilities accessControlServiceCapabilities = new AccessControlServiceCapabilities();

            accessControlServiceCapabilities.DisableAccessPoint          = true;
            accessControlServiceCapabilities.DisableAccessPointSpecified = true;
            accessControlServiceCapabilities.MaxLimit = 10;

            configuration.ServicesConfiguration.AccessControlCapabilities = accessControlServiceCapabilities;

            DoorControlServiceCapabilities doorControlServiceCapabilities = new DoorControlServiceCapabilities();

            doorControlServiceCapabilities.MaxLimit = 3;
            configuration.ServicesConfiguration.DoorServiceCapabilities = doorControlServiceCapabilities;

            configuration.ServicesConfiguration.InitializeXmlElements();

            List <Service> services = new List <Service>();

            {
                Service device = new Service();
                device.Namespace     = Common.Definitions.OnvifService.DEVICE;
                device.Version       = new OnvifVersion();
                device.Version.Major = 2;
                device.Version.Minor = 2;
                services.Add(device);
            }
            {
                Service events = new Service();
                events.Namespace     = Common.Definitions.OnvifService.EVENTS;
                events.Version       = new OnvifVersion();
                events.Version.Major = 2;
                events.Version.Minor = 2;
                services.Add(events);
            }

            {
                Service pacs = new Service();
                pacs.Namespace     = Common.Definitions.OnvifService.ACCESSCONTROL;
                pacs.Version       = new OnvifVersion();
                pacs.Version.Major = 2;
                pacs.Version.Minor = 2;
                services.Add(pacs);
            }
            {
                Service doorControl = new Service();
                doorControl.Namespace     = Common.Definitions.OnvifService.DOORCONTROL;
                doorControl.Version       = new OnvifVersion();
                doorControl.Version.Major = 2;
                doorControl.Version.Minor = 2;
                services.Add(doorControl);
            }

            configuration.ServicesConfiguration.Services = services;

            List <Scope> scopes = new List <Scope>();

            scopes.Add(new Scope()
            {
                ScopeItem = "onvif://www.onvif.org/profile/profilec"
            });
            scopes.Add(new Scope()
            {
                ScopeItem = "onvif://www.onvif.org/name/Simulator"
            });
            scopes.Add(new Scope()
            {
                ScopeItem = "onvif://www.onvif.org/hardware/PC"
            });
            scopes.Add(new Scope()
            {
                ScopeItem = "onvif://www.onvif.org/location/scope1"
            });

            configuration.Scopes = scopes;


            #region PACS initialization
            configuration.PacsConfiguration = new PacsConfiguration();

            {
                AccessPointInfo info = new AccessPointInfo();
                info.token        = "tokenAccessPoint1";
                info.Name         = "AccessPoint1 Name";
                info.Description  = "AccessPoint1 Description";
                info.AreaFrom     = "tokenArea1";
                info.AreaTo       = "tokenArea2";
                info.Enabled      = true;
                info.Type         = "tdc:Door";
                info.Entity       = "tokenDoor1";
                info.Capabilities = new AccessPointCapabilities();
                info.Capabilities.DisableAccessPoint = true;
                configuration.PacsConfiguration.AccessPointInfoList.Add(info);
            }

            {
                AccessPointInfo info = new AccessPointInfo();
                info.token        = "tokenAccessPoint2";
                info.Name         = "AccessPoint2 Name";
                info.Description  = "AccessPoint2 Description";
                info.Enabled      = true;
                info.Type         = "tdc:Door";
                info.Entity       = "tokenDoor1";
                info.Capabilities = new AccessPointCapabilities();
                info.Capabilities.DisableAccessPoint = false;
                configuration.PacsConfiguration.AccessPointInfoList.Add(info);
            }

            {
                AreaInfo info = new AreaInfo();
                info.token       = "tokenArea1";
                info.Name        = "Area1 Name";
                info.Description = "Area1 Description";
                configuration.PacsConfiguration.AreaInfoList.Add(info);
            }
            {
                AreaInfo info = new AreaInfo();
                info.token       = "tokenArea2";
                info.Name        = "Area2 Name";
                info.Description = "Area2Description";
                configuration.PacsConfiguration.AreaInfoList.Add(info);
            }

            {
                DoorInfo info = new DoorInfo();

                info.token       = "tokenDoor1";
                info.Name        = "Door1 Name";
                info.Description = "Door1 Description";
                DoorCapabilities value = new DoorCapabilities();
                value.Block           = true;
                value.DoubleLock      = true;
                value.Lock            = true;
                value.LockDown        = true;
                value.LockOpen        = true;
                value.MomentaryAccess = true;
                value.Unlock          = true;
                info.Capabilities     = value;
                configuration.PacsConfiguration.DoorInfoList.Add(info);
            }

            {
                DoorInfo info = new DoorInfo();

                info.token       = "tokenDoor2";
                info.Name        = "Door2 Name";
                info.Description = "Door2 Description";

                DoorCapabilities value = new DoorCapabilities();
                value.Block           = false;
                value.DoubleLock      = false;
                value.Lock            = false;
                value.LockDown        = false;
                value.LockOpen        = false;
                value.MomentaryAccess = false;
                value.Unlock          = false;

                info.Capabilities = value;

                configuration.PacsConfiguration.DoorInfoList.Add(info);
            }

            foreach (DoorInfo door in configuration.PacsConfiguration.DoorInfoList)
            {
                configuration.PacsConfiguration.DoorCapabilitiesList.Add(door.token, door.Capabilities);
                configuration.PacsConfiguration.DoorAccessList.Add(door.token, 0);
                configuration.PacsConfiguration.DoorAccessPreviousStateList.Add(door.token, DoorModeType.Unknown);
            }

            {
                DoorState value = new DoorState();

                value.DoorAlarm                      = DoorAlarmStateType.Normal;
                value.DoorDoubleLockMonitor          = DoorLockMonitorStateType.Locked;
                value.DoorDoubleLockMonitorSpecified = true;
                value.DoorLockMonitor                = DoorLockMonitorStateType.Locked;
                value.DoorMode    = DoorModeType.Locked;
                value.DoorMonitor = DoorMonitorStateType.Closed;
                value.DoorTamper  = DoorTamperStateType.NotInTamper;

                configuration.PacsConfiguration.DoorStateList.Add("tokenDoor1", value);
            }

            {
                DoorState value = new DoorState();

                value.DoorAlarm                      = DoorAlarmStateType.Normal;
                value.DoorDoubleLockMonitor          = DoorLockMonitorStateType.NotSupported;
                value.DoorDoubleLockMonitorSpecified = false;
                value.DoorLockMonitor                = DoorLockMonitorStateType.NotSupported;
                value.DoorMode    = DoorModeType.Locked;
                value.DoorMonitor = DoorMonitorStateType.NotSupported;
                value.DoorTamper  = DoorTamperStateType.NotSupported;

                configuration.PacsConfiguration.DoorStateList.Add("tokenDoor2", value);
            }

            #endregion

            return(configuration);
        }
示例#10
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");
                }
            });
        }
        private SystemCapabilities()
        {
            // don't change service capabilities in other places to maintain synchronization of
            // typed properties and XmlElement's

            //Device Management Service
            DeviceServiceCapabilities          = new DeviceServiceCapabilities();
            DeviceServiceCapabilities.Network  = new NetworkCapabilities();
            DeviceServiceCapabilities.Security = new SecurityCapabilities();
            DeviceServiceCapabilities.System   = new Device10.SystemCapabilities();

            //Door Control Service
            DoorServiceCapabilities          = new ServiceDoorControl10.ServiceCapabilities();
            DoorServiceCapabilities.MaxLimit = 7;

            //Access Control Service
            AccessControlCapabilities = new ServiceAccessControl10.ServiceCapabilities();
            //AccessControlCapabilities.DisableAccessPointSpecified = true;
            //AccessControlCapabilities.DisableAccessPoint = true;
            AccessControlCapabilities.MaxLimit = 1;

            //Credential Service
            CredentialCapabilities                = new ServiceCredential10.ServiceCapabilities();
            CredentialCapabilities.MaxLimit       = 3;
            CredentialCapabilities.MaxCredentials = 10;
            CredentialCapabilities.CredentialAccessProfileValiditySupported = true;
            CredentialCapabilities.CredentialValiditySupported    = true;
            CredentialCapabilities.MaxAccessProfilesPerCredential = 5;
            CredentialCapabilities.ResetAntipassbackSupported     = true;
            CredentialCapabilities.SupportedIdentifierType        = new string[] { "ONVIFCard", "ONVIFPIN" };

            //Supported Format Types (probably refactoring requiered to be flexible)
            List <ServiceCredential10.CredentialIdentifierFormatTypeInfo> formatTypes;

            ServiceCredential10.CredentialIdentifierFormatTypeInfo credentialIdentifierFormatTypeInfo;

            SupportedFormatTypes = new Dictionary <string, List <ServiceCredential10.CredentialIdentifierFormatTypeInfo> >();

            formatTypes = new List <ServiceCredential10.CredentialIdentifierFormatTypeInfo>();

            credentialIdentifierFormatTypeInfo             = new ServiceCredential10.CredentialIdentifierFormatTypeInfo();
            credentialIdentifierFormatTypeInfo.FormatType  = "WIEGAND26";
            credentialIdentifierFormatTypeInfo.Description = "Standard 26 bit Wiegand format as defined by SIA standard (SIA AC-01).";
            formatTypes.Add(credentialIdentifierFormatTypeInfo);
            credentialIdentifierFormatTypeInfo             = new ServiceCredential10.CredentialIdentifierFormatTypeInfo();
            credentialIdentifierFormatTypeInfo.FormatType  = "WIEGAND37";
            credentialIdentifierFormatTypeInfo.Description = "Description";
            formatTypes.Add(credentialIdentifierFormatTypeInfo);


            SupportedFormatTypes.Add("ONVIFCard", formatTypes);

            formatTypes = new List <ServiceCredential10.CredentialIdentifierFormatTypeInfo>();

            credentialIdentifierFormatTypeInfo             = new ServiceCredential10.CredentialIdentifierFormatTypeInfo();
            credentialIdentifierFormatTypeInfo.FormatType  = "WIEGAND37";
            credentialIdentifierFormatTypeInfo.Description = "Description";
            formatTypes.Add(credentialIdentifierFormatTypeInfo);
            SupportedFormatTypes.Add("ONVIFPIN", formatTypes);

            //Access Rules Service
            AccessRulesCapabilities          = new ServiceAccessRules10.ServiceCapabilities();
            AccessRulesCapabilities.MaxLimit = 2;
            AccessRulesCapabilities.MaxAccessPoliciesPerAccessProfile = 2;
            AccessRulesCapabilities.MaxAccessProfiles = 4;
            AccessRulesCapabilities.MultipleSchedulesPerAccessPointSupported = true;

            InitializeXmlElements();
        }