public override void TestFixtureSetUp()
        {
            var client = new Client()
            {
                ClientId     = "NUnit",
                ClientSecret = "10000:gW7zpVeugKl8IFu7TcpPskcgQjy4185eAwBk9fFlZK6JNd1I45tLyCYtJrzWzE+kVCUP7lMSY8o808EjUgfavBzYU/ZtWypcdCdCJ0BMfMcf8Mk+XIYQCQLiFpt9Rjrf5mAY86NuveUtd1yBdPjxX5neMXEtquNYhu9I6iyzcN4=:Lk2ZkpmTDkNtO/tsB/GskMppdAX2bXehP+ED4oLis0AAv3Q1VeI8KL0SxIIWdxjKH0NJKZ6qniRFkfZKZRS2hS4SB8oyB34u/jyUlmv+RZGZSt9nJ9FYJn1percd/yFA7sSQOpkGljJ6OTwdthe0Bw0A/8qlKHbO2y2M5BFgYHY=",
                RedirectUri  = "http://localhost",
                Enabled      = true
            };
            var user = new User()
            {
                UserId    = "azzlack",
                Password  = "******",
                FirstName = "Ove",
                LastName  = "Andersen",
                Enabled   = true
            };

            var clientRepository = new Mock <IClientRepository>();

            clientRepository.Setup(x => x.GetClient("NUnit")).ReturnsAsync(client);
            clientRepository.Setup(x => x.GetClients()).ReturnsAsync(new List <IClient>()
            {
                client
            });

            var userRepository = new Mock <IUserRepository>();

            userRepository.Setup(x => x.GetUser("azzlack")).ReturnsAsync(user);
            userRepository.Setup(x => x.GetUsers()).ReturnsAsync(new List <IUser>()
            {
                user
            });

            this.Server = TestServer.Create(
                app =>
            {
                var principalProvider = new PrincipalProvider(new SHA2CryptoProvider(HashAlgorithm.SHA512));
                var tokenProvider     = new SentinelTokenProvider(new SHA2CryptoProvider(HashAlgorithm.SHA512), principalProvider);

                app.UseSentinelAuthorizationServer(
                    new SentinelAuthorizationServerOptions()
                {
                    ClientRepository = clientRepository.Object,
                    UserRepository   = userRepository.Object,
                    TokenProvider    = tokenProvider,
                    IssuerUri        = new Uri("https://sentinel.oauth")
                });

                // Start up web api
                var httpConfig = new HttpConfiguration();
                httpConfig.MapHttpAttributeRoutes();

                // Configure Web API to use only Bearer token authentication.
                httpConfig.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

                httpConfig.EnsureInitialized();

                app.UseWebApi(httpConfig);
            });

            base.TestFixtureSetUp();
        }
        public override void TestFixtureSetUp()
        {
            base.TestFixtureSetUp();

            var client = new Client()
            {
                ClientId     = "NUnit",
                ClientSecret = this.PasswordCryptoProvider.CreateHash("PFJTQUtleVZhbHVlPjxNb2R1bHVzPnFKMEtXaXZWSjUxUWtKWGdIU1hidkxOTEJsa09rOE9uSWtvRTljU1FrRzhOZm5VYXBrWHpkTlEvb3FLZE9BSWxYK1hFMnNwN0xFcS9KRnJMaDRNblhRPT08L01vZHVsdXM+PEV4cG9uZW50PkFRQUI8L0V4cG9uZW50PjxQPnljRXBJUDJseG1oa0hRMGRrKzRBVk1lZDhWRUFFVHN5TXgvL3NaNS9TbFU9PC9QPjxRPjFmTEVGWU1JMk1TMUJQbzYwcnYyQmhkYWNBaTI2d2Z0V1N2OVl0aUdnT2s9PC9RPjxEUD5uZ0dYTW0wejdXVklNckJZMzhmZm5vWVBIalR2dG84RHk2SmQ0RDlmTlZrPTwvRFA+PERRPk5FZEQzclhNSFp2RFY5b0ZNYVU0TXJqV0luWWVyRU9kbmFLQUlmMGlzTEU9PC9EUT48SW52ZXJzZVE+ZGQzNVh6T0RvUlZQaXQxb2REL0lKRHpXdUtYMXZrb2NjcXQ4REZGVTlwVT08L0ludmVyc2VRPjxEPkFBcC80VW1oSmFJcm9DcWJ5eXdRbDViY0xFMXNSSkwxek50dllkdGxNTCsxWVFRdWx6YzVPRkh1WUcxQW56OE8vbXU2MXNDN0dNVm04ZTVqSUp6SldRPT08L0Q+PC9SU0FLZXlWYWx1ZT4="),
                //ClientSecret = "10000:gW7zpVeugKl8IFu7TcpPskcgQjy4185eAwBk9fFlZK6JNd1I45tLyCYtJrzWzE+kVCUP7lMSY8o808EjUgfavBzYU/ZtWypcdCdCJ0BMfMcf8Mk+XIYQCQLiFpt9Rjrf5mAY86NuveUtd1yBdPjxX5neMXEtquNYhu9I6iyzcN4=:Lk2ZkpmTDkNtO/tsB/GskMppdAX2bXehP+ED4oLis0AAv3Q1VeI8KL0SxIIWdxjKH0NJKZ6qniRFkfZKZRS2hS4SB8oyB34u/jyUlmv+RZGZSt9nJ9FYJn1percd/yFA7sSQOpkGljJ6OTwdthe0Bw0A/8qlKHbO2y2M5BFgYHY=",
                PublicKey   = "PFJTQUtleVZhbHVlPjxNb2R1bHVzPnFKMEtXaXZWSjUxUWtKWGdIU1hidkxOTEJsa09rOE9uSWtvRTljU1FrRzhOZm5VYXBrWHpkTlEvb3FLZE9BSWxYK1hFMnNwN0xFcS9KRnJMaDRNblhRPT08L01vZHVsdXM+PEV4cG9uZW50PkFRQUI8L0V4cG9uZW50PjwvUlNBS2V5VmFsdWU+",
                RedirectUri = "http://localhost",
                Enabled     = true
            };
            var user = new User()
            {
                UserId   = "azzlack",
                Password = this.PasswordCryptoProvider.CreateHash("aabbccddee"),
                //Password = "******",
                FirstName = "Ove",
                LastName  = "Andersen",
                Enabled   = true
            };
            var userApiKeys = new List <IUserApiKey>()
            {
                new UserApiKey()
                {
                    UserId = "azzlack", ApiKey = "PFJTQUtleVZhbHVlPjxNb2R1bHVzPnlidFpyM0pWS0p1L2hlUFMrV0Zla1kyYmRYVDlJMU1MeHZheTlIMW9IenRwRmI4QzJtQmUzY1EzVDhjUzE0ajJ4bk9lRkt2YVZ4Ukw5S2ozd0tOL1B3PT08L01vZHVsdXM+PEV4cG9uZW50PkFRQUI8L0V4cG9uZW50PjwvUlNBS2V5VmFsdWU+"
                }
            };

            var clientRepository = new Mock <IClientRepository>();

            clientRepository.Setup(x => x.GetClient("NUnit")).ReturnsAsync(client);
            clientRepository.Setup(x => x.GetClients()).ReturnsAsync(new List <IClient>()
            {
                client
            });

            var userRepository = new Mock <IUserRepository>();

            userRepository.Setup(x => x.GetUser("azzlack")).ReturnsAsync(user);
            userRepository.Setup(x => x.GetUsers()).ReturnsAsync(new List <IUser>()
            {
                user
            });

            var userApiKeyRepository = new Mock <IUserApiKeyRepository>();

            userApiKeyRepository.Setup(x => x.GetForUser("azzlack")).ReturnsAsync(userApiKeys);

            this.Server = TestServer.Create(
                app =>
            {
                var principalProvider = new PrincipalProvider(new SHA2CryptoProvider(HashAlgorithm.SHA512));
                var tokenProvider     = new SentinelTokenProvider(new SHA2CryptoProvider(HashAlgorithm.SHA512), principalProvider);

                app.UseSentinelAuthorizationServer(
                    new SentinelAuthorizationServerOptions()
                {
                    RequireSecureConnection       = false,
                    EnableBasicAuthentication     = true,
                    EnableSignatureAuthentication = true,
                    ClientRepository     = clientRepository.Object,
                    UserRepository       = userRepository.Object,
                    UserApiKeyRepository = userApiKeyRepository.Object,
                    TokenProvider        = tokenProvider,
                    IssuerUri            = new Uri("https://sentinel.oauth")
                });

                // Start up web api
                var httpConfig = new HttpConfiguration();
                httpConfig.MapHttpAttributeRoutes();

                // Configure Web API to use only Bearer token authentication.
                httpConfig.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

                httpConfig.EnsureInitialized();

                app.UseWebApi(httpConfig);
            });
        }