// FromFile gets a Stitch handle from a file on disk. func FromFile(filename string, getter ImportGetter) (Stitch, error) { specStr, err := util.ReadFile(filename) if err != nil { return Stitch{}, err } return New(filename, specStr, getter) }
func TestMain(t *testing.T) { util.AppFs = afero.NewMemMapFs() util.WriteFile("test.js", []byte(testStitch), 0644) exitCode := Main([]string{"test.js", "graphviz"}) assert.Zero(t, exitCode) res, err := util.ReadFile("test.dot") assert.Nil(t, err) assert.True(t, isGraphEqual(expGraph, res)) }
func TestSyncKeys(t *testing.T) { tests := []keyTest{ { dbKeys: "key1\nkey2", expKeyFile: "key1\nkey2", }, { dbKeys: "key1\nkey2", keyFile: "key1", expKeyFile: "key1\nkey2", }, { dbKeys: "key1\nkey2", keyFile: "key1\nkey2", expKeyFile: "key1\nkey2", }, { keyFile: "key1\nkey2", expKeyFile: "", }, } for _, test := range tests { util.AppFs = afero.NewMemMapFs() if test.keyFile != "" { err := util.WriteFile( authorizedKeysFile, []byte(test.keyFile), 0644) assert.NoError(t, err) } conn := db.New() conn.Transact(func(view db.Database) error { m := view.InsertMinion() m.Self = true m.AuthorizedKeys = test.dbKeys view.Commit(m) return nil }) err := runOnce(conn) assert.NoError(t, err) actual, err := util.ReadFile(authorizedKeysFile) assert.NoError(t, err) assert.Equal(t, test.expKeyFile, actual) } }
func runOnce(conn db.Conn) error { if _, err := util.AppFs.Stat(authorizedKeysFile); os.IsNotExist(err) { util.AppFs.Create(authorizedKeysFile) } currKeys, err := util.ReadFile(authorizedKeysFile) if err != nil { return err } m, err := conn.MinionSelf() if err != nil { return err } if m.AuthorizedKeys == currKeys { return nil } return util.WriteFile(authorizedKeysFile, []byte(m.AuthorizedKeys), 0644) }