public static void ReadConfigReturn(TreeMgmtServerConfig c)
        {
            Condition.IsTrue(State == ModelState.Uninitialized);

            Config = c;
            State = ModelState.Initialized;
        }
Exemplo n.º 2
0
        public void ReadConfig(out TreeMgmtServerConfig config)
        {
            treeMgmtConfig = new TreeMgmtServerConfig()
            {
                Platform = testConfig.Platform
            };
            config = treeMgmtConfig;

            Site.Log.Add(LogEntryKind.Debug, config.ToString());
        }
        public void ReadConfig(out TreeMgmtServerConfig config)
        {
            treeMgmtConfig = new TreeMgmtServerConfig()
            {
                Platform = testConfig.Platform
            };
            config = treeMgmtConfig;

            Site.Log.Add(LogEntryKind.Debug, config.ToString());
        }
        public static void TreeConnectResponse(ModelSmb2Status status, ShareType_Values shareType, TreeMgmtServerConfig config)
        {
            Condition.IsTrue(Config.Platform == config.Platform);
            Condition.IsTrue(State == ModelState.Connected);

            ModelTreeMgmtTreeConnectRequest treeConnectRequest = ModelHelper.RetrieveOutstandingRequest<ModelTreeMgmtTreeConnectRequest>(ref Request);

            if (treeConnectRequest.sharePath == ModelSharePath.InvalidSharePath )
            {
                ModelHelper.Log(
                    LogType.Requirement,
                    "3.3.5.7: Otherwise, the server MUST provide the tuple <hostname, sharename> parsed from the request message to invoke the event specified in [MS-SRVS] section 3.1.6.8," +
                    " to normalize the hostname by resolving server aliases and evaluating share scope. The server MUST use <normalized hostname, sharename> to look up the Share in ShareList." +
                    " If no share with a matching share name and server name is found, the server MUST fail the request with STATUS_BAD_NETWORK_NAME");
                ModelHelper.Log(
                    LogType.TestInfo,
                    "Share path is an invalid share path");
                ModelHelper.Log(LogType.TestTag, TestTag.UnexpectedFields);
                Condition.IsTrue(status == ModelSmb2Status.STATUS_BAD_NETWORK_NAME);
                return;
            }

            // Only cover Windows behavior (SHOULD behavior) in one condition when the share is "IPC$" or has STYPE_SPECIAL bit set
            // Other cases for 3.3.5.7 statement below are not covered
            // Assume NonWindows will have same behvior regarding to 3.3.4.13 statement
            if (Session_SecurityContext == ModelSessionSecurityContext.NonAdmin
                && treeConnectRequest.sharePath == ModelSharePath.SpecialSharePath)
            {
                ModelHelper.Log(
                    LogType.Requirement,
                    "3.3.5.7: The server MUST determine whether the user represented by Session.SecurityContext should be granted access based on the authorization policy specified in Share.ConnectSecurity." +
                    " If the server determines that access should not be granted, the server MUST fail the request with STATUS_ACCESS_DENIED.");
                ModelHelper.Log(
                    LogType.Requirement,
                    "3.3.4.13: If Share.Name is equal to \"IPC$\" or Share.Type does not have the STYPE_SPECIAL bit set," +
                    " then Share.ConnectSecurity SHOULD be set to a security descriptor allowing all users." +
                    " Otherwise, Share.ConnectSecurity SHOULD be set to a security descriptor allowing only administrators.");
                ModelHelper.Log(
                    LogType.TestInfo,
                    "User authenticated the session is a NonAdmin, and share in the TreeConnect request has STYPE_SPECIAL bit set");
                ModelHelper.Log(LogType.TestTag, TestTag.Compatibility);
                Condition.IsTrue(status == ModelSmb2Status.STATUS_ACCESS_DENIED);
                return;
            }

            Condition.IsTrue(status == ModelSmb2Status.STATUS_SUCCESS);

            if (treeConnectRequest.sharePath != ModelSharePath.SpecialSharePath)
            {
                // only check on Basic Share, Share with Special Bit can be any Type of Share
                // currently, only DISK ShareType in FileSharing Family test suite
                // it's not TD requirement but assumption
                Condition.IsTrue(shareType == ShareType_Values.SHARE_TYPE_DISK);
            }

            Session_TreeConnectExist = true;
        }