github.com/olljanat/moby@v1.13.1/cliconfig/credentials/file_store_test.go (about)

     1  package credentials
     2  
     3  import (
     4  	"io/ioutil"
     5  	"testing"
     6  
     7  	"github.com/docker/docker/api/types"
     8  	"github.com/docker/docker/cliconfig"
     9  	"github.com/docker/docker/cliconfig/configfile"
    10  )
    11  
    12  func newConfigFile(auths map[string]types.AuthConfig) *configfile.ConfigFile {
    13  	tmp, _ := ioutil.TempFile("", "docker-test")
    14  	name := tmp.Name()
    15  	tmp.Close()
    16  
    17  	c := cliconfig.NewConfigFile(name)
    18  	c.AuthConfigs = auths
    19  	return c
    20  }
    21  
    22  func TestFileStoreAddCredentials(t *testing.T) {
    23  	f := newConfigFile(make(map[string]types.AuthConfig))
    24  
    25  	s := NewFileStore(f)
    26  	err := s.Store(types.AuthConfig{
    27  		Auth:          "super_secret_token",
    28  		Email:         "foo@example.com",
    29  		ServerAddress: "https://example.com",
    30  	})
    31  
    32  	if err != nil {
    33  		t.Fatal(err)
    34  	}
    35  
    36  	if len(f.AuthConfigs) != 1 {
    37  		t.Fatalf("expected 1 auth config, got %d", len(f.AuthConfigs))
    38  	}
    39  
    40  	a, ok := f.AuthConfigs["https://example.com"]
    41  	if !ok {
    42  		t.Fatalf("expected auth for https://example.com, got %v", f.AuthConfigs)
    43  	}
    44  	if a.Auth != "super_secret_token" {
    45  		t.Fatalf("expected auth `super_secret_token`, got %s", a.Auth)
    46  	}
    47  	if a.Email != "foo@example.com" {
    48  		t.Fatalf("expected email `foo@example.com`, got %s", a.Email)
    49  	}
    50  }
    51  
    52  func TestFileStoreGet(t *testing.T) {
    53  	f := newConfigFile(map[string]types.AuthConfig{
    54  		"https://example.com": {
    55  			Auth:          "super_secret_token",
    56  			Email:         "foo@example.com",
    57  			ServerAddress: "https://example.com",
    58  		},
    59  	})
    60  
    61  	s := NewFileStore(f)
    62  	a, err := s.Get("https://example.com")
    63  	if err != nil {
    64  		t.Fatal(err)
    65  	}
    66  	if a.Auth != "super_secret_token" {
    67  		t.Fatalf("expected auth `super_secret_token`, got %s", a.Auth)
    68  	}
    69  	if a.Email != "foo@example.com" {
    70  		t.Fatalf("expected email `foo@example.com`, got %s", a.Email)
    71  	}
    72  }
    73  
    74  func TestFileStoreGetAll(t *testing.T) {
    75  	s1 := "https://example.com"
    76  	s2 := "https://example2.com"
    77  	f := newConfigFile(map[string]types.AuthConfig{
    78  		s1: {
    79  			Auth:          "super_secret_token",
    80  			Email:         "foo@example.com",
    81  			ServerAddress: "https://example.com",
    82  		},
    83  		s2: {
    84  			Auth:          "super_secret_token2",
    85  			Email:         "foo@example2.com",
    86  			ServerAddress: "https://example2.com",
    87  		},
    88  	})
    89  
    90  	s := NewFileStore(f)
    91  	as, err := s.GetAll()
    92  	if err != nil {
    93  		t.Fatal(err)
    94  	}
    95  	if len(as) != 2 {
    96  		t.Fatalf("wanted 2, got %d", len(as))
    97  	}
    98  	if as[s1].Auth != "super_secret_token" {
    99  		t.Fatalf("expected auth `super_secret_token`, got %s", as[s1].Auth)
   100  	}
   101  	if as[s1].Email != "foo@example.com" {
   102  		t.Fatalf("expected email `foo@example.com`, got %s", as[s1].Email)
   103  	}
   104  	if as[s2].Auth != "super_secret_token2" {
   105  		t.Fatalf("expected auth `super_secret_token2`, got %s", as[s2].Auth)
   106  	}
   107  	if as[s2].Email != "foo@example2.com" {
   108  		t.Fatalf("expected email `foo@example2.com`, got %s", as[s2].Email)
   109  	}
   110  }
   111  
   112  func TestFileStoreErase(t *testing.T) {
   113  	f := newConfigFile(map[string]types.AuthConfig{
   114  		"https://example.com": {
   115  			Auth:          "super_secret_token",
   116  			Email:         "foo@example.com",
   117  			ServerAddress: "https://example.com",
   118  		},
   119  	})
   120  
   121  	s := NewFileStore(f)
   122  	err := s.Erase("https://example.com")
   123  	if err != nil {
   124  		t.Fatal(err)
   125  	}
   126  
   127  	// file store never returns errors, check that the auth config is empty
   128  	a, err := s.Get("https://example.com")
   129  	if err != nil {
   130  		t.Fatal(err)
   131  	}
   132  
   133  	if a.Auth != "" {
   134  		t.Fatalf("expected empty auth token, got %s", a.Auth)
   135  	}
   136  	if a.Email != "" {
   137  		t.Fatalf("expected empty email, got %s", a.Email)
   138  	}
   139  }