Пример #1
0
        private Mock <IComputeEngineAdapter> CreateComputeEngineAdapterMock(
            bool?osLoginEnabledForProject,
            bool?osLoginEnabledForInstance,
            bool osLogin2fa,
            bool legacySshKeyPresent,
            bool projectWideKeysBlockedForProject,
            bool projectWideKeysBlockedForInstance,
            MetadataAuthorizedKeySet existingProjectKeySet  = null,
            MetadataAuthorizedKeySet existingInstanceKeySet = null)
        {
            var projectMetadata = new Metadata();

            if (osLoginEnabledForProject.HasValue)
            {
                projectMetadata.Add("enable-oslogin",
                                    osLoginEnabledForProject.Value.ToString());
            }

            if (osLoginEnabledForProject.HasValue && osLogin2fa)
            {
                projectMetadata.Add("enable-oslogin-2fa", "true");
            }

            if (projectWideKeysBlockedForProject)
            {
                projectMetadata.Add("block-project-ssh-keys", "true");
            }

            if (existingProjectKeySet != null)
            {
                projectMetadata.Add(
                    MetadataAuthorizedKeySet.MetadataKey,
                    existingProjectKeySet.ToString());
            }

            var instanceMetadata = new Metadata();

            if (osLoginEnabledForInstance.HasValue)
            {
                instanceMetadata.Add("enable-oslogin",
                                     osLoginEnabledForInstance.Value.ToString());
            }

            if (osLoginEnabledForInstance.HasValue && osLogin2fa)
            {
                instanceMetadata.Add("enable-oslogin-2fa", "true");
            }

            if (legacySshKeyPresent)
            {
                instanceMetadata.Add("sshKeys", "somedata");
            }

            if (projectWideKeysBlockedForInstance)
            {
                instanceMetadata.Add("block-project-ssh-keys", "true");
            }

            if (existingInstanceKeySet != null)
            {
                instanceMetadata.Add(
                    MetadataAuthorizedKeySet.MetadataKey,
                    existingInstanceKeySet.ToString());
            }

            var adapter = new Mock <IComputeEngineAdapter>();

            adapter
            .Setup(a => a.GetProjectAsync(
                       It.IsAny <string>(),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(new Project()
            {
                CommonInstanceMetadata = projectMetadata
            });
            adapter
            .Setup(a => a.GetInstanceAsync(
                       It.IsAny <InstanceLocator>(),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(new Instance()
            {
                Metadata = instanceMetadata
            });
            return(adapter);
        }