mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 19:06:18 +01:00 
			
		
		
		
	Add Redis Sentinel Authentication Support (#19213)
Gitea was not able to supply any authentication parameters to it. So this brings support to do that, along with some light extraction of a couple of bits into some separate functions for easier testing. I looked at other libraries supporting similar RedisUri-style connection strings (e.g. Lettuce), but it looks like this type of configuration is beyond what would typically be done in a connection string. Since gitea doesn't have configuration options for manually specifying all this redis connection detail, I went ahead and just chose straightforward names for these new parameters.
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							1d332342db
						
					
				
				
					commit
					a2c20a6cab
				
			
							
								
								
									
										64
									
								
								modules/nosql/manager_redis_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								modules/nosql/manager_redis_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | ||||
| // Copyright 2022 The Gitea Authors. All rights reserved. | ||||
| // Use of this source code is governed by a MIT-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| package nosql | ||||
|  | ||||
| import ( | ||||
| 	"net/url" | ||||
| 	"testing" | ||||
| ) | ||||
|  | ||||
| func TestRedisUsernameOpt(t *testing.T) { | ||||
| 	uri, _ := url.Parse("redis://redis:password@myredis/0") | ||||
| 	opts := getRedisOptions(uri) | ||||
|  | ||||
| 	if opts.Username != "redis" { | ||||
| 		t.Fail() | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestRedisPasswordOpt(t *testing.T) { | ||||
| 	uri, _ := url.Parse("redis://redis:password@myredis/0") | ||||
| 	opts := getRedisOptions(uri) | ||||
|  | ||||
| 	if opts.Password != "password" { | ||||
| 		t.Fail() | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestRedisSentinelUsernameOpt(t *testing.T) { | ||||
| 	uri, _ := url.Parse("redis+sentinel://redis:password@myredis/0?sentinelusername=suser&sentinelpassword=spass") | ||||
| 	opts := getRedisOptions(uri).Failover() | ||||
|  | ||||
| 	if opts.SentinelUsername != "suser" { | ||||
| 		t.Fail() | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestRedisSentinelPasswordOpt(t *testing.T) { | ||||
| 	uri, _ := url.Parse("redis+sentinel://redis:password@myredis/0?sentinelusername=suser&sentinelpassword=spass") | ||||
| 	opts := getRedisOptions(uri).Failover() | ||||
|  | ||||
| 	if opts.SentinelPassword != "spass" { | ||||
| 		t.Fail() | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestRedisDatabaseIndexTcp(t *testing.T) { | ||||
| 	uri, _ := url.Parse("redis://redis:password@myredis/12") | ||||
| 	opts := getRedisOptions(uri) | ||||
|  | ||||
| 	if opts.DB != 12 { | ||||
| 		t.Fail() | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestRedisDatabaseIndexUnix(t *testing.T) { | ||||
| 	uri, _ := url.Parse("redis+socket:///var/run/redis.sock?database=12") | ||||
| 	opts := getRedisOptions(uri) | ||||
|  | ||||
| 	if opts.DB != 12 { | ||||
| 		t.Fail() | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user