private (IAuthenticator, IUsernameParser, IClientCredentialsFactory, ISystemComponentIdProvider) SetupAcceptEverything(string hubname = "testhub")
        {
            var authenticator  = Mock.Of <IAuthenticator>();
            var usernameParser = new MqttUsernameParser();
            var credFactory    = new ClientCredentialsFactory(new IdentityProvider(hubname));
            var sysIdProvider  = Mock.Of <ISystemComponentIdProvider>();

            Mock.Get(authenticator).Setup(a => a.AuthenticateAsync(It.IsAny <IClientCredentials>())).Returns(Task.FromResult(true));
            Mock.Get(sysIdProvider).Setup(a => a.EdgeHubBridgeId).Returns("testdev/$edgeHub/$bridge");

            return(authenticator, usernameParser, credFactory, sysIdProvider);
        }
        public void ParseUsernameTest(string username, string expectedDeviceId, string expectedModuleId, string expectedDeviceClientType, string expectedModelId)
        {
            var usernameParser = new MqttUsernameParser();

            ClientInfo clientInfo = usernameParser.Parse(username);

            Assert.Equal(expectedDeviceId, clientInfo.DeviceId);
            Assert.Equal(expectedModuleId, clientInfo.ModuleId);
            Assert.Equal(expectedDeviceClientType, clientInfo.DeviceClientType);
            Assert.Equal(!string.IsNullOrWhiteSpace(expectedModelId), clientInfo.ModelId.HasValue);
            clientInfo.ModelId.ForEach(mId => Assert.Equal(expectedModelId, mId));
        }
Beispiel #3
0
        static async Task <IClientCredentials> GetClientCredentials(string iotHubHostName, string deviceId, string userName, string token, bool isCertAuthAllowed = false, string productInfo = "", X509Certificate2 certificate = null, IList <X509Certificate2> chain = null, IMetadataStore metadataStore = null)
        {
            metadataStore = metadataStore ?? Mock.Of <IMetadataStore>();
            var authenticator              = Mock.Of <IAuthenticator>(a => a.AuthenticateAsync(It.IsAny <IClientCredentials>()) == Task.FromResult(true));
            var usernameParser             = new MqttUsernameParser();
            var factory                    = new ClientCredentialsFactory(new IdentityProvider(iotHubHostName), productInfo);
            var credentialIdentityProvider = new DeviceIdentityProvider(authenticator, usernameParser, factory, metadataStore, isCertAuthAllowed);

            if (certificate != null && chain != null)
            {
                credentialIdentityProvider.RegisterConnectionCertificate(certificate, chain);
            }

            IDeviceIdentity deviceIdentity = await credentialIdentityProvider.GetAsync(deviceId, userName, token, null);

            Assert.NotNull(deviceIdentity);
            IClientCredentials clientCredentials = (deviceIdentity as ProtocolGatewayIdentity)?.ClientCredentials;

            return(clientCredentials);
        }
        public void ParseUserNameErrorTest(string username)
        {
            var usernameParser = new MqttUsernameParser();

            Assert.Throws <EdgeHubConnectionException>(() => usernameParser.Parse(username));
        }