public void RejectNewApplication()
        {
            CreateAppFixtures(out var site, out var super, out var apps, out var devices);

            using (var mock = AutoMock.GetLoose()) {
                var hub = IoTHubServices.Create(devices);
                mock.Provide <IIoTHubTwinServices>(hub);
                mock.Provide <IApplicationRepository, ApplicationTwins>();
                IApplicationRegistry service = mock.Create <ApplicationRegistry>();

                var app = apps.First();
                service.RejectApplicationAsync(app.ApplicationId, false, null).Wait();
                var registration = service.GetApplicationAsync(app.ApplicationId, false).Result;

                Assert.Equal(ApplicationState.Rejected, registration.Application.State);

                // reject approved app should fail
                Assert.ThrowsAsync <ResourceInvalidStateException>(
                    () => service.ApproveApplicationAsync(app.ApplicationId, false, null)).Wait();

                service.ApproveApplicationAsync(app.ApplicationId, true, null).Wait();
                registration = service.GetApplicationAsync(app.ApplicationId, false).Result;

                Assert.Equal(ApplicationState.Approved, registration.Application.State);
            }
        }
Ejemplo n.º 2
0
        public void RegisterApplication()
        {
            CreateAppFixtures(out var site, out var super, out var apps, out var devices);

            using (var mock = AutoMock.GetLoose()) {
                var hub = new IoTHubServices();
                mock.Provide <IIoTHubTwinServices>(hub);
                mock.Provide <IApplicationRepository, ApplicationTwins>();
                IApplicationRegistry service = mock.Create <ApplicationRegistry>();

                // Run
                foreach (var app in apps)
                {
                    var record = service.RegisterApplicationAsync(
                        app.ToRegistrationRequest()).Result;
                }

                // Assert
                Assert.Equal(apps.Count, hub.Devices.Count());
                var records = service.ListApplicationsAsync(null, null).Result;

                // Assert
                Assert.True(apps.IsSameAs(records.Items));
            }
        }
        public void RegisterApplication()
        {
            CreateAppFixtures(out var site, out var super, out var apps, out var devices);

            var hub = new IoTHubServices();

            using (var mock = AutoMock.GetLoose(builder => {
                builder.RegisterType <NewtonSoftJsonConverters>().As <IJsonSerializerConverterProvider>();
                builder.RegisterType <NewtonSoftJsonSerializer>().As <IJsonSerializer>();
                builder.RegisterInstance(hub).As <IIoTHubTwinServices>();
                builder.RegisterType <ApplicationTwins>().As <IApplicationRepository>();
            })) {
                IApplicationRegistry service = mock.Create <ApplicationRegistry>();

                // Run
                foreach (var app in apps)
                {
                    var record = service.RegisterApplicationAsync(
                        app.ToRegistrationRequest()).Result;
                }

                // Assert
                Assert.Equal(apps.Count, hub.Devices.Count());
                var records = service.ListApplicationsAsync(null, null).Result;

                // Assert
                Assert.True(apps.IsSameAs(records.Items));
            }
        }
        public async Task BadArgShouldThrowExceptions()
        {
            using (var mock = AutoMock.GetLoose()) {
                var hub = new IoTHubServices();
                mock.Provide <IIoTHubTwinServices>(hub);
                mock.Provide <IApplicationRepository, ApplicationTwins>();
                IApplicationRegistry service = mock.Create <ApplicationRegistry>();

                await Assert.ThrowsAsync <ArgumentNullException>(
                    () => service.RegisterApplicationAsync(null));

                await Assert.ThrowsAsync <ArgumentNullException>(
                    () => service.RejectApplicationAsync(null, false, null));

                await Assert.ThrowsAsync <ArgumentNullException>(
                    () => service.RejectApplicationAsync("", false, null));

                await Assert.ThrowsAsync <ArgumentNullException>(
                    () => service.GetApplicationAsync(null, false));

                await Assert.ThrowsAsync <ArgumentNullException>(
                    () => service.GetApplicationAsync("", false));

                await Assert.ThrowsAsync <ResourceNotFoundException>(
                    () => service.GetApplicationAsync("abc", false));

                await Assert.ThrowsAsync <ResourceNotFoundException>(
                    () => service.GetApplicationAsync(Guid.NewGuid().ToString(), false));
            }
        }
 /// <summary>
 /// Setup all services used in processing
 /// </summary>
 /// <param name="mock"></param>
 /// <param name="registry"></param>
 private static IDiscoveryProcessor Setup(AutoMock mock, IoTHubServices registry)
 {
     mock.Provide <IIoTHubTwinServices>(registry);
     mock.Provide <IApplicationRepository, ApplicationTwins>();
     mock.Provide <ISupervisorRegistry, SupervisorRegistry>();
     mock.Provide <IEndpointBulkProcessor, EndpointRegistry>();
     mock.Provide <IApplicationBulkProcessor, ApplicationRegistry>();
     return(mock.Create <DiscoveryProcessor>());
 }
        public void ListAllDiscoverersUsingQuery()
        {
            CreateDiscovererFixtures(out _, out var discoverers, out var modules);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(modules));
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var records = service.QueryDiscoverersAsync(null, null).Result;

                // Assert
                Assert.True(discoverers.IsSameAs(records.Items));
            }
        }
        public void GetDiscovererThatExists()
        {
            CreateDiscovererFixtures(out _, out var discoverers, out var modules);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(modules));
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var result = service.GetDiscovererAsync(discoverers.First().Id).Result;

                // Assert
                Assert.True(result.IsSameAs(discoverers.First()));
            }
        }
Ejemplo n.º 8
0
        public void ListAllTwinsUsingQuery()
        {
            CreateEndpointFixtures(out var site, out var super, out var endpoints, out var devices);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(devices));
                IEndpointRegistry service = mock.Create <EndpointRegistry>();

                // Run
                var records = service.QueryEndpointsAsync(null, false, null).Result;

                // Assert
                Assert.True(endpoints.IsSameAs(records.Items));
            }
        }
Ejemplo n.º 9
0
        public void GetSupervisorThatExists()
        {
            CreateSupervisorFixtures(out var site, out var supervisors, out var modules);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(modules));
                ISupervisorRegistry service = mock.Create <SupervisorRegistry>();

                // Run
                var result = service.GetSupervisorAsync(supervisors.First().Id, false).Result;

                // Assert
                Assert.True(result.IsSameAs(supervisors.First()));
            }
        }
Ejemplo n.º 10
0
        public void ListAllSupervisorsUsingQuery()
        {
            CreateSupervisorFixtures(out var site, out var supervisors, out var modules);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(modules));
                ISupervisorRegistry service = mock.Create <SupervisorRegistry>();

                // Run
                var records = service.QuerySupervisorsAsync(null, false, null).Result;

                // Assert
                Assert.True(supervisors.IsSameAs(records.Items));
            }
        }
Ejemplo n.º 11
0
        public void ListAllApplicationsUsingQuery()
        {
            CreateAppFixtures(out var site, out var super, out var apps, out var devices);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(devices));
                mock.Provide <IApplicationRepository, ApplicationTwins>();
                IApplicationRegistry service = mock.Create <ApplicationRegistry>();

                // Run
                var records = service.QueryApplicationsAsync(null, null).Result;

                // Assert
                Assert.True(apps.IsSameAs(records.Items));
            }
        }
        public void QueryDiscoverersByDiscoveryMode()
        {
            CreateDiscovererFixtures(out var site, out var discoverers, out var modules);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(modules));
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var records = service.QueryDiscoverersAsync(new DiscovererQueryModel {
                    Discovery = DiscoveryMode.Network
                }, null).Result;

                // Assert
                Assert.True(records.Items.Count == discoverers.Count(x => x.Discovery == DiscoveryMode.Network));
            }
        }
Ejemplo n.º 13
0
        public void GetTwinThatDoesNotExist()
        {
            CreateEndpointFixtures(out var site, out var super, out var endpoints, out var devices);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(devices));
                IEndpointRegistry service = mock.Create <EndpointRegistry>();

                // Run
                var t = service.GetEndpointAsync("test", false);

                // Assert
                Assert.NotNull(t.Exception);
                Assert.IsType <AggregateException>(t.Exception);
                Assert.IsType <ResourceNotFoundException>(t.Exception.InnerException);
            }
        }
Ejemplo n.º 14
0
        public void QueryTwinsBySecurityPolicyDifferentCase()
        {
            CreateEndpointFixtures(out var site, out var super, out var endpoints, out var devices);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(devices));
                IEndpointRegistry service = mock.Create <EndpointRegistry>();

                // Run
                var records = service.QueryEndpointsAsync(new EndpointRegistrationQueryModel {
                    SecurityPolicy = endpoints.First().Registration.Endpoint.SecurityPolicy.ToUpperInvariant()
                }, false, null).Result;

                // Assert
                Assert.True(records.Items.Count == 0);
            }
        }
        public void GetDiscovererThatDoesNotExist()
        {
            CreateDiscovererFixtures(out _, out _, out var modules);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(modules));
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var t = service.GetDiscovererAsync("test");

                // Assert
                Assert.NotNull(t.Exception);
                Assert.IsType <AggregateException>(t.Exception);
                Assert.IsType <ResourceNotFoundException>(t.Exception.InnerException);
            }
        }
        public void QueryDiscoverersByNoneExistantSiteId()
        {
            CreateDiscovererFixtures(out _, out _, out var modules, true);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(modules));
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var records = service.QueryDiscoverersAsync(new DiscovererQueryModel {
                    SiteId = "test"
                }, null).Result;

                // Assert
                Assert.True(records.Items.Count == 0);
            }
        }
Ejemplo n.º 17
0
        public void QueryDiscoverersBySiteId()
        {
            CreateDiscovererFixtures(out var site, out var discoverers, out var modules);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(modules));
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var records = service.QueryDiscoverersAsync(new DiscovererQueryModel {
                    SiteId = site
                }, false, null).Result;

                // Assert
                Assert.True(discoverers.IsSameAs(records.Items));
            }
        }
        public void DoubleApproveApplicationDoesNothing()
        {
            CreateAppFixtures(out var site, out var super, out var apps, out var devices);

            using (var mock = AutoMock.GetLoose()) {
                var hub = IoTHubServices.Create(devices);
                mock.Provide <IIoTHubTwinServices>(hub);
                mock.Provide <IApplicationRepository, ApplicationTwins>();
                IApplicationRegistry service = mock.Create <ApplicationRegistry>();

                var app = apps.First();
                service.ApproveApplicationAsync(app.ApplicationId, false, null).Wait();
                service.ApproveApplicationAsync(app.ApplicationId, false, null).Wait();
                var registration = service.GetApplicationAsync(app.ApplicationId, false).Result;
                Assert.Equal(ApplicationState.Approved, registration.Application.State);
            }
        }
        /// <summary>
        /// Setup all services used in processing
        /// </summary>
        /// <param name="mock"></param>
        /// <param name="registry"></param>
        private static AutoMock Setup(IoTHubServices registry, out IDiscoveryResultProcessor processor)
        {
            var mock = AutoMock.GetLoose(builder => {
                builder.RegisterType <NewtonSoftJsonConverters>().As <IJsonSerializerConverterProvider>();
                builder.RegisterType <NewtonSoftJsonSerializer>().As <IJsonSerializer>();
                builder.RegisterInstance(registry).As <IIoTHubTwinServices>();
                builder.RegisterType <ApplicationTwins>().As <IApplicationRepository>();
                builder.RegisterType <DiscovererRegistry>().As <IDiscovererRegistry>();
                builder.RegisterType <SupervisorRegistry>().As <ISupervisorRegistry>();
                builder.RegisterType <PublisherRegistry>().As <IPublisherRegistry>();
                builder.RegisterType <GatewayRegistry>().As <IGatewayRegistry>();
                builder.RegisterType <EndpointRegistry>().As <IEndpointBulkProcessor>();
                builder.RegisterType <ApplicationRegistry>().As <IApplicationBulkProcessor>();
            });

            processor = mock.Create <DiscoveryProcessor>();
            return(mock);
        }
Ejemplo n.º 20
0
        public void QueryTwinsBySignSecurityMode()
        {
            CreateEndpointFixtures(out var site, out var super, out var endpoints, out var devices);
            var count = endpoints.Count(x => x.Registration.Endpoint.SecurityMode == SecurityMode.Sign);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(devices));
                IEndpointRegistry service = mock.Create <EndpointRegistry>();

                // Run
                var records = service.QueryEndpointsAsync(new EndpointRegistrationQueryModel {
                    SecurityMode = SecurityMode.Sign
                }, false, null).Result;

                // Assert
                Assert.Equal(count, records.Items.Count);
            }
        }
Ejemplo n.º 21
0
        public void QueryApplicationsByDiscoveryServerApplicationType()
        {
            CreateAppFixtures(out var site, out var super, out var apps, out var devices);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(devices));
                mock.Provide <IApplicationRepository, ApplicationTwins>();
                IApplicationRegistry service = mock.Create <ApplicationRegistry>();

                // Run
                var records = service.QueryApplicationsAsync(new ApplicationRegistrationQueryModel {
                    ApplicationType = ApplicationType.DiscoveryServer
                }, null).Result;

                // Assert
                Assert.Equal(apps.Count(x => x.ApplicationType == ApplicationType.DiscoveryServer), records.Items.Count);
            }
        }
Ejemplo n.º 22
0
        public void QueryApplicationsBySupervisorId()
        {
            CreateAppFixtures(out var site, out var super, out var apps, out var devices, true);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(devices));
                mock.Provide <IApplicationRepository, ApplicationTwins>();
                IApplicationRegistry service = mock.Create <ApplicationRegistry>();

                // Run
                var records = service.QueryApplicationsAsync(new ApplicationRegistrationQueryModel {
                    SiteOrSupervisorId = super
                }, null).Result;

                // Assert
                Assert.True(apps.IsSameAs(records.Items));
            }
        }
Ejemplo n.º 23
0
        public void QueryApplicationsByApplicationNameDifferentCase()
        {
            CreateAppFixtures(out var site, out var super, out var apps, out var devices);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(devices));
                mock.Provide <IApplicationRepository, ApplicationTwins>();
                IApplicationRegistry service = mock.Create <ApplicationRegistry>();

                // Run
                var records = service.QueryApplicationsAsync(new ApplicationRegistrationQueryModel {
                    ApplicationName = apps.First().ApplicationName.ToUpperInvariant()
                }, null).Result;

                // Assert
                Assert.True(records.Items.Count == 0);
            }
        }
Ejemplo n.º 24
0
        public void ListAllTwinsUsingQuery()
        {
            CreateEndpointFixtures(out var site, out var super, out var endpoints, out var devices);

            using (var mock = AutoMock.GetLoose(builder => {
                var hub = IoTHubServices.Create(devices);
                builder.RegisterType <NewtonSoftJsonConverters>().As <IJsonSerializerConverterProvider>();
                builder.RegisterType <NewtonSoftJsonSerializer>().As <IJsonSerializer>();
                builder.RegisterInstance(hub).As <IIoTHubTwinServices>();
            })) {
                IEndpointRegistry service = mock.Create <EndpointRegistry>();

                // Run
                var records = service.QueryEndpointsAsync(null, false, null).Result;

                // Assert
                Assert.True(endpoints.IsSameAs(records.Items));
            }
        }
Ejemplo n.º 25
0
        public void DisableEnableApplication()
        {
            CreateAppFixtures(out var site, out var super, out var apps, out var devices);

            using (var mock = AutoMock.GetLoose()) {
                var hub = IoTHubServices.Create(devices);
                mock.Provide <IIoTHubTwinServices>(hub);
                mock.Provide <IApplicationRepository, ApplicationTwins>();
                IApplicationRegistry service = mock.Create <ApplicationRegistry>();

                var app = apps.First();
                service.DisableApplicationAsync(app.ApplicationId, null).Wait();
                var registration = service.GetApplicationAsync(app.ApplicationId, false).Result;
                Assert.NotNull(registration.Application.NotSeenSince);
                service.EnableApplicationAsync(app.ApplicationId, null).Wait();
                registration = service.GetApplicationAsync(app.ApplicationId, false).Result;
                Assert.Null(registration.Application.NotSeenSince);
            }
        }
Ejemplo n.º 26
0
        public void GetTwinThatExists()
        {
            CreateEndpointFixtures(out var site, out var super, out var endpoints, out var devices);
            var first = endpoints.First();
            var id    = EndpointInfoModelEx.CreateEndpointId(first.ApplicationId,
                                                             first.Registration.EndpointUrl, first.Registration.Endpoint.SecurityMode,
                                                             first.Registration.Endpoint.SecurityPolicy);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(devices));
                IEndpointRegistry service = mock.Create <EndpointRegistry>();

                // Run
                var result = service.GetEndpointAsync(id, false).Result;

                // Assert
                Assert.True(result.IsSameAs(endpoints.First()));
            }
        }
Ejemplo n.º 27
0
        public void ListAllDiscoverersUsingQuery()
        {
            CreateDiscovererFixtures(out _, out var discoverers, out var modules);

            using (var mock = AutoMock.GetLoose(builder => {
                var hub = IoTHubServices.Create(modules);
                builder.RegisterType <NewtonSoftJsonConverters>().As <IJsonSerializerConverterProvider>();
                builder.RegisterType <NewtonSoftJsonSerializer>().As <IJsonSerializer>();
                builder.RegisterInstance(hub).As <IIoTHubTwinServices>();
            })) {
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var records = service.QueryDiscoverersAsync(null, null).Result;

                // Assert
                Assert.True(discoverers.IsSameAs(records.Items));
            }
        }
Ejemplo n.º 28
0
        public void GetDiscovererThatExists()
        {
            CreateDiscovererFixtures(out _, out var discoverers, out var modules);

            using (var mock = AutoMock.GetLoose(builder => {
                var hub = IoTHubServices.Create(modules);
                builder.RegisterType <NewtonSoftJsonConverters>().As <IJsonSerializerConverterProvider>();
                builder.RegisterType <NewtonSoftJsonSerializer>().As <IJsonSerializer>();
                builder.RegisterInstance(hub).As <IIoTHubTwinServices>();
            })) {
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var result = service.GetDiscovererAsync(discoverers.First().Id).Result;

                // Assert
                Assert.True(result.IsSameAs(discoverers.First()));
            }
        }
Ejemplo n.º 29
0
        public void ListAllSupervisors()
        {
            CreateSupervisorFixtures(out var site, out var supervisors, out var modules);

            using (var mock = AutoMock.GetLoose(builder => {
                var hub = IoTHubServices.Create(modules);
                builder.RegisterType <NewtonSoftJsonConverters>().As <IJsonSerializerConverterProvider>();
                builder.RegisterType <NewtonSoftJsonSerializer>().As <IJsonSerializer>();
                builder.RegisterInstance(hub).As <IIoTHubTwinServices>();
            })) {
                ISupervisorRegistry service = mock.Create <SupervisorRegistry>();

                // Run
                var records = service.ListSupervisorsAsync(null, false, null).Result;

                // Assert
                Assert.True(supervisors.IsSameAs(records.Items));
            }
        }
        public void ListAllApplicationsUsingQuery()
        {
            CreateAppFixtures(out var site, out var super, out var apps, out var devices);

            using (var mock = AutoMock.GetLoose(builder => {
                var hub = IoTHubServices.Create(devices);
                builder.RegisterType <NewtonSoftJsonConverters>().As <IJsonSerializerConverterProvider>();
                builder.RegisterType <NewtonSoftJsonSerializer>().As <IJsonSerializer>();
                builder.RegisterInstance(hub).As <IIoTHubTwinServices>();
                builder.RegisterType <ApplicationTwins>().As <IApplicationRepository>();
            })) {
                IApplicationRegistry service = mock.Create <ApplicationRegistry>();

                // Run
                var records = service.QueryApplicationsAsync(null, null).Result;

                // Assert
                Assert.True(apps.IsSameAs(records.Items));
            }
        }