protected DeviceServiceCapabilities GetServiceCapabilities() { DeviceServiceCapabilities capabilities = null; RunStep(() => { capabilities = Client.GetServiceCapabilities(); }, "Get service capabilities"); DoRequestDelay(); return(capabilities); }
public TestTool.Onvif.DeviceServiceCapabilities GetServiceCapabilities() { BeginMethod("GetServiceCapabilities"); DeviceServiceCapabilities capabilities = SimulatorConfiguration.ServicesConfiguration.DeviceServiceCapabilities; EndMethod(); return(capabilities); }
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"); }
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); }
/// <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); }
public override DeviceServiceCapabilities GetServiceCapabilities() { DeviceServiceCapabilities capabilities = Simulator.SystemCapabilities.Instance.DeviceServiceCapabilities; return(capabilities); }
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); }
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(); }