public async Task WhenGettingAllSignalsHappyFlow()
        {
            this.smartSignalsRepository.Setup(repository => repository.ReadAllSignalsManifestsAsync(It.IsAny <CancellationToken>()))
            .ReturnsAsync(() => new List <SmartSignalManifest>()
            {
                new SmartSignalManifest("someId", "someName", "someDescription", Version.Parse("1.0"), "someAssemblyName", "someClassName", new List <ResourceType> {
                    ResourceType.ResourceGroup
                }, new List <int> {
                    60
                })
            });

            ListSmartSignalsResponse response = await this.signalsLogic.GetAllSmartSignalsAsync(CancellationToken.None);

            Assert.AreEqual(1, response.Signals.Count);
            Assert.AreEqual("someId", response.Signals.First().Id);
            Assert.AreEqual("someName", response.Signals.First().Name);
        }
예제 #2
0
        public static async Task <HttpResponseMessage> GetAllSmartSignals([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "signal")] HttpRequestMessage req, TraceWriter log, CancellationToken cancellationToken)
        {
            using (IUnityContainer childContainer = Container.CreateChildContainer().WithTracer(log, true))
            {
                ITracer tracer    = childContainer.Resolve <ITracer>();
                var     signalApi = childContainer.Resolve <ISignalApi>();
                var     authorizationManagementClient = childContainer.Resolve <IAuthorizationManagementClient>();

                try
                {
                    // Check authorization
                    bool isAuthorized = await authorizationManagementClient.IsAuthorizedAsync(req, cancellationToken);

                    if (!isAuthorized)
                    {
                        return(req.CreateErrorResponse(HttpStatusCode.Forbidden, "The client is not authorized to perform this action"));
                    }

                    ListSmartSignalsResponse smartSignals = await signalApi.GetAllSmartSignalsAsync(cancellationToken);

                    return(req.CreateResponse(smartSignals));
                }
                catch (SmartSignalsManagementApiException e)
                {
                    tracer.TraceError($"Failed to get smart signals due to managed exception: {e}");

                    return(req.CreateErrorResponse(e.StatusCode, "Failed to get smart signals", e));
                }
                catch (Exception e)
                {
                    tracer.TraceError($"Failed to get smart signals due to un-managed exception: {e}");

                    return(req.CreateErrorResponse(HttpStatusCode.InternalServerError, "Failed to get smart signals", e));
                }
            }
        }