public void VerifyThatUseCaseForUserAuthCallsGateway()
        {
            var groups = new List <string> {
                _faker.Random.Word(), _faker.Random.Word()
            };
            var request = GenerateAuthorizerRequest(GenerateJwtHelper.GenerateJwtTokenUserFlow(groups));
            var dbData  = _fixture.Create <APIDataUserFlow>();
            var apiName = _faker.Random.Word();

            _mockAwsStsGateway.Setup(x => x.GetTemporaryCredentials(It.IsAny <string>())).Returns(new AssumeRoleResponse());
            _mockAwsApiGateway.Setup(x => x.GetApiName(It.IsAny <string>(), It.IsAny <Credentials>())).Returns(apiName);
            _mockDynamoDbGateway.Setup(x => x.GetAPIDataByNameAndEnvironmentAsync(apiName, request.Environment)).Returns(dbData);

            _classUnderTest.ExecuteUserAuth(request);

            _mockDynamoDbGateway.Verify(x => x.GetAPIDataByNameAndEnvironmentAsync(apiName, request.Environment), Times.Once);
        }
 public void Setup()
 {
     _serviceProvider     = new Mock <IServiceProvider>();
     _classUnderTest      = new VerifyTokenHandler(_serviceProvider.Object);
     _mockDatabaseGateway = new Mock <IAuthTokenDatabaseGateway>();
     _mockAwsApiGateway   = new Mock <IAwsApiGateway>();
     _mockAwsStsGateway   = new Mock <IAwsStsGateway>();
     _mockDynamoDbGateway = new Mock <IDynamoDbGateway>();
     //set up env vars
     Environment.SetEnvironmentVariable("jwtSecret", _fixture.Create <string>());
     Environment.SetEnvironmentVariable("hackneyUserAuthTokenJwtSecret", _faker.Random.AlphaNumeric(25));
     //set up JWT tokens
     _allowedGroups = new List <string> {
         _faker.Random.Word(), _faker.Random.Word()
     };
     _jwtServiceFlow = GenerateJwtHelper.GenerateJwtToken();
     _jwtUserFlow    = GenerateJwtHelper.GenerateJwtTokenUserFlow(_allowedGroups);
 }
        public void ShouldDenyAccessIfRequestDataDoesNotMatchDbData()
        {
            var groups = new List <string> {
                _faker.Random.Word(), _faker.Random.Word()
            };
            var request = GenerateAuthorizerRequest(GenerateJwtHelper.GenerateJwtTokenUserFlow(groups));
            var apiName = _faker.Random.Word();
            //no matching environment or aws account should result in deny
            var dbData = _fixture.Build <APIDataUserFlow>()
                         .With(x => x.AllowedGroups, groups)
                         .With(x => x.ApiName, apiName).Create();

            _mockAwsStsGateway.Setup(x => x.GetTemporaryCredentials(It.IsAny <string>())).Returns(new AssumeRoleResponse());
            _mockAwsApiGateway.Setup(x => x.GetApiName(It.IsAny <string>(), It.IsAny <Credentials>())).Returns(apiName);
            _mockDynamoDbGateway.Setup(x => x.GetAPIDataByNameAndEnvironmentAsync(apiName, request.Environment)).Returns(dbData);

            var result = _classUnderTest.ExecuteUserAuth(request);

            result.Allow.Should().BeFalse();
        }