Beispiel #1
0
func TestLoadFiles(t *testing.T) {
	db := testutils.GetSqliteDB()
	defer testutils.FlushDB(db)
	store := DBStore(db, "docker.io/testImage")
	testmeta := testutils.SampleMeta()
	store.AddBlob("/foo.txt", testmeta)

	called := false
	check := func(path string, meta data.FileMeta) error {
		if called {
			t.Fatal("Store only has one item but check called > once.")
		} else {
			called = true
		}

		if path != "/foo.txt" {
			t.Fatal("Path is incorrect", path)
		}

		if meta.Length != testmeta.Length {
			t.Fatal("Length is incorrect")
		}

		if len(meta.Hashes) != len(testmeta.Hashes) {
			t.Fatal("Hashes map has been modified")
		}

		return nil
	}
	store.WalkStagedTargets([]string{}, check)
	if !called {
		t.Fatal("Walk func never called")
	}
}
Beispiel #2
0
func TestLoadFilesWithPath(t *testing.T) {
	db := testutils.GetSqliteDB()
	defer testutils.FlushDB(db)
	store := DBStore(db, "docker.io/testImage")
	meta := testutils.SampleMeta()

	store.AddBlob("/foo.txt", meta)
	store.AddBlob("/bar.txt", meta)

	called := false
	check := func(path string, meta data.FileMeta) error {
		if called {
			t.Fatal("Store only has one item but check called > once.")
		} else {
			called = true
		}

		if path != "/foo.txt" {
			t.Fatal("Path is incorrect")
		}

		return nil
	}

	store.WalkStagedTargets([]string{"/foo.txt"}, check)

	if !called {
		t.Fatal("Walk func never called")
	}
}
Beispiel #3
0
func TestAddBlob(t *testing.T) {
	db := testutils.GetSqliteDB()
	defer testutils.FlushDB(db)
	store := DBStore(db, "docker.io/testImage")
	testmeta := testutils.SampleMeta()
	store.AddBlob("/foo.txt", testmeta)

	called := false
	check := func(path string, meta data.FileMeta) error {
		if called {
			t.Fatal("Store only has one item but check called > once.")
		} else {
			called = true
		}

		if path != "/foo.txt" {
			t.Fatal("Path is incorrect")
		}

		if meta.Length != 1 {
			t.Fatal("Length is incorrect")
		}

		sha256, ok256 := meta.Hashes["sha256"]
		sha512, ok512 := meta.Hashes["sha512"]
		if len(meta.Hashes) != 2 || !ok256 || !ok512 {
			t.Fatal("Hashes map has been modified")
		}

		hash := data.HexBytes{0x01, 0x02}
		if sha256[0] != hash[0] || sha256[1] != hash[1] {
			t.Fatal("SHA256 has been modified")
		}
		hash = data.HexBytes{0x03, 0x04}
		if sha512[0] != hash[0] || sha512[1] != hash[1] {
			t.Fatal("SHA512 has been modified")
		}
		return nil
	}

	store.WalkStagedTargets([]string{}, check)

	if !called {
		t.Fatal("Walk func never called")
	}
}
Beispiel #4
0
func runCommand(name string, args []string) error {
	argv := make([]string, 1, 1+len(args))
	argv[0] = name
	argv = append(argv, args...)

	cmd, ok := commands[name]
	if !ok {
		return fmt.Errorf("%s is not a tuf command. See 'tuf help'", name)
	}

	parsedArgs, err := docopt.Parse(cmd.usage, argv, true, "", true)
	if err != nil {
		return err
	}

	db := testutils.GetSqliteDB()
	local := store.DBStore(db, "")
	signer := signed.Ed25519{}
	repo, err := tuf.NewRepo(&signer, local, "sha256")
	if err != nil {
		return err
	}
	return cmd.f(parsedArgs, repo)
}
Beispiel #5
0
func TestRemoveBlob(t *testing.T) {
	testPath := "/foo.txt"
	db := testutils.GetSqliteDB()
	defer testutils.FlushDB(db)
	store := DBStore(db, "docker.io/testImage")
	meta := testutils.SampleMeta()

	store.AddBlob(testPath, meta)

	called := false
	check := func(path string, meta data.FileMeta) error {
		called = true
		return nil
	}

	store.RemoveBlob(testPath)

	store.WalkStagedTargets([]string{}, check)

	if called {
		t.Fatal("Walk func called on empty db")
	}

}
Beispiel #6
0
// TestDBStore just ensures we can initialize an empty store.
// Nothing to test, just ensure no crashes :-)
func TestDBStore(t *testing.T) {
	db := testutils.GetSqliteDB()
	defer testutils.FlushDB(db)
	_ = DBStore(db, "")
}