mirror of
				https://github.com/evilsocket/arc.git
				synced 2024-05-26 22:37:37 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package config
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"golang.org/x/crypto/bcrypt"
 | |
| )
 | |
| 
 | |
| // testConf contains test configurations
 | |
| var testConf = Configuration{
 | |
| 	Address:       "127.0.0.1",
 | |
| 	Port:          8443,
 | |
| 	MaxReqSize:    int64(512 * 1024),
 | |
| 	Certificate:   "arc-tls-cert.pem",
 | |
| 	Key:           "arc-tls-key.pem",
 | |
| 	Database:      "arc.db",
 | |
| 	Secret:        "changeme",
 | |
| 	Username:      "arc",
 | |
| 	Password:      "$2a$10$gwnHUhLVV9tgPtZfX4.jDOz6qzGgRHZmtE2YpMr9K1RpIO71YJViO",
 | |
| 	TokenDuration: 60,
 | |
| 	Compression:   true,
 | |
| 	Backups: BackupsConfig{
 | |
| 		Enabled: false,
 | |
| 	},
 | |
| 	Scheduler: SchedulerConfig{
 | |
| 		Enabled: true,
 | |
| 		Period:  15,
 | |
| 		Reports: ReportsConfig{
 | |
| 			Enabled:   false,
 | |
| 			RateLimit: 60,
 | |
| 		},
 | |
| 	},
 | |
| }
 | |
| 
 | |
| // TestAuth test Auth function
 | |
| func TestAuth(t *testing.T) {
 | |
| 	tests := []struct {
 | |
| 		name     string
 | |
| 		username string
 | |
| 		password string
 | |
| 		exp      bool
 | |
| 	}{
 | |
| 		{"Incorrect login and pass", "test", "test", false},
 | |
| 		{"Correct login and incorrect pass", "arc", "test", false},
 | |
| 		{"Incorrect login and correct pass", "test", "arc", false},
 | |
| 		{"Correct login and pass", "arc", "arc", true},
 | |
| 		{"Empty credantials", "", "", false},
 | |
| 	}
 | |
| 
 | |
| 	for _, tt := range tests {
 | |
| 		got := testConf.Auth(tt.username, tt.password)
 | |
| 		if got != tt.exp {
 | |
| 			t.Errorf("Test -- %v -- failed:\n Got %v \n Expected %v", tt.name, got, tt.exp)
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestHashPassword(t *testing.T) {
 | |
| 	tests := []struct {
 | |
| 		name     string
 | |
| 		password string
 | |
| 		cost     int
 | |
| 		exp      string
 | |
| 	}{
 | |
| 		//bcrypt cost can be between 4 and 31. 10 is the default value
 | |
| 		{"Empty password", "", 10, "$2a$10$4UW2Nvp9QglqZZDDayfJcOfk7shblk3a9/voRPPt8dmK4mTiKBr9q"},
 | |
| 		{"arc password", "arc", 10, "$2a$10$RuOcSEwPNNFlA/lxjpRY3.3J0tR0LG/FyfG/IXolgdDxPh7.urgGe"},
 | |
| 		// NOTE: same password can have different hashes
 | |
| 		{"arc password with another hash", "arc", 10, "$2a$10$Z/YHAyjeJk47AbnpEZ/xneqFYioTKZlQiSB3W5OEe6MKNHQxT2vbS"},
 | |
| 	}
 | |
| 
 | |
| 	for _, tt := range tests {
 | |
| 		got := testConf.HashPassword(tt.password, tt.cost)
 | |
| 		if err := bcrypt.CompareHashAndPassword([]byte(tt.exp), []byte(tt.password)); err != nil {
 | |
| 			t.Errorf("Test -- %v -- failed.\n err: %v \nGot %v \n Expected %v", tt.name, err, got, tt.exp)
 | |
| 		}
 | |
| 	}
 | |
| }
 | 
