mirror of https://github.com/minio/minio.git
				
				
				
			
		
			
	
	
		
			76 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
		
		
			
		
	
	
			76 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * MinIO Cloud Storage, (C) 2019 MinIO, Inc.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Licensed under the Apache License, Version 2.0 (the "License");
							 | 
						||
| 
								 | 
							
								 * you may not use this file except in compliance with the License.
							 | 
						||
| 
								 | 
							
								 * You may obtain a copy of the License at
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *     http://www.apache.org/licenses/LICENSE-2.0
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Unless required by applicable law or agreed to in writing, software
							 | 
						||
| 
								 | 
							
								 * distributed under the License is distributed on an "AS IS" BASIS,
							 | 
						||
| 
								 | 
							
								 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
							 | 
						||
| 
								 | 
							
								 * See the License for the specific language governing permissions and
							 | 
						||
| 
								 | 
							
								 * limitations under the License.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								package cmd
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"bytes"
							 | 
						||
| 
								 | 
							
									"testing"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									"github.com/minio/minio/pkg/auth"
							 | 
						||
| 
								 | 
							
									"github.com/minio/minio/pkg/madmin"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func TestDecryptData(t *testing.T) {
							 | 
						||
| 
								 | 
							
									cred1 := auth.Credentials{
							 | 
						||
| 
								 | 
							
										AccessKey: "minio",
							 | 
						||
| 
								 | 
							
										SecretKey: "minio123",
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									cred2 := auth.Credentials{
							 | 
						||
| 
								 | 
							
										AccessKey: "minio",
							 | 
						||
| 
								 | 
							
										SecretKey: "minio1234",
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									data := []byte(`config data`)
							 | 
						||
| 
								 | 
							
									edata1, err := madmin.EncryptData(cred1.String(), data)
							 | 
						||
| 
								 | 
							
									if err != nil {
							 | 
						||
| 
								 | 
							
										t.Fatal(err)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									edata2, err := madmin.EncryptData(cred2.String(), data)
							 | 
						||
| 
								 | 
							
									if err != nil {
							 | 
						||
| 
								 | 
							
										t.Fatal(err)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									tests := []struct {
							 | 
						||
| 
								 | 
							
										edata   []byte
							 | 
						||
| 
								 | 
							
										creds   []auth.Credentials
							 | 
						||
| 
								 | 
							
										success bool
							 | 
						||
| 
								 | 
							
									}{
							 | 
						||
| 
								 | 
							
										{edata1, []auth.Credentials{cred1, cred2}, true},
							 | 
						||
| 
								 | 
							
										{edata2, []auth.Credentials{cred1, cred2}, true},
							 | 
						||
| 
								 | 
							
										{data, []auth.Credentials{cred1, cred2}, false},
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									for _, test := range tests {
							 | 
						||
| 
								 | 
							
										t.Run("", func(t *testing.T) {
							 | 
						||
| 
								 | 
							
											ddata, err := decryptData(test.edata, test.creds...)
							 | 
						||
| 
								 | 
							
											if err != nil && test.success {
							 | 
						||
| 
								 | 
							
												t.Errorf("Expected success, saw failure %v", err)
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											if err == nil && !test.success {
							 | 
						||
| 
								 | 
							
												t.Error("Expected failure, saw success")
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											if test.success {
							 | 
						||
| 
								 | 
							
												if !bytes.Equal(ddata, data) {
							 | 
						||
| 
								 | 
							
													t.Errorf("Expected %s, got %s", string(data), string(ddata))
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										})
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |