func TestInvokeRectifyDryruns(t *testing.T) { assert := assert.New(t) require := require.New(t) testDryRun := func(which string) (sous.Deployer, sous.Registry) { exe := justCommand(t, []string{`sous`, `rectify`, `-dry-run`, which, `-repo`, `github.com/somewhere`}) assert.Len(exe.Args, 0) require.IsType(&SousRectify{}, exe.Cmd) rect := exe.Cmd.(*SousRectify) // currently no easy way to tell if the deploy client is live or dummy return nil, rect.Resolver.Registry } _, r := testDryRun("both") assert.IsType(&sous.DummyRegistry{}, r) _, r = testDryRun("none") assert.IsType(&docker.NameCache{}, r) _, r = testDryRun("scheduler") assert.IsType(&docker.NameCache{}, r) _, r = testDryRun("registry") assert.IsType(&sous.DummyRegistry{}, r) }
func TestInvokeRectifyWithoutFilterFlags(t *testing.T) { assert := assert.New(t) require := require.New(t) _, exe, _, _ := prepareCommand(t, []string{`sous`, `rectify`}) assert.Len(exe.Args, 0) require.IsType(&SousRectify{}, exe.Cmd) rect := exe.Cmd.(*SousRectify) assert.NotNil(rect.Config) assert.NotNil(rect.GDM) require.NotNil(rect.SourceFlags) assert.Equal(rect.SourceFlags.All, false) require.NotNil(rect.Resolver.ResolveFilter) assert.Equal(rect.Resolver.ResolveFilter.All(), true) }
func TestInvokeRectifyWithDebugFlags(t *testing.T) { assert := assert.New(t) require := require.New(t) _, exe, _, stderr := prepareCommand(t, []string{`sous`, `rectify`, `-d`, `-v`, `-all`}) assert.Len(exe.Args, 0) require.IsType(&SousRectify{}, exe.Cmd) rect := exe.Cmd.(*SousRectify) assert.NotNil(rect.Config) assert.NotNil(rect.GDM) require.NotNil(rect.SourceFlags) assert.Equal(rect.SourceFlags.All, true) assert.Regexp(`Verbose debugging`, stderr.String()) assert.Regexp(`Regular debugging`, stderr.String()) }
func TestHandlesManifestPut(t *testing.T) { assert := assert.New(t) require := require.New(t) q, err := url.ParseQuery("repo=gh") require.NoError(err) state := sous.NewState() state.Manifests.Add(&sous.Manifest{ Source: sous.SourceLocation{Repo: "gh"}, Kind: sous.ManifestKindService, }) writer := graph.StateWriter{StateWriter: &sous.DummyStateManager{State: state}} manifest := &sous.Manifest{ Source: sous.SourceLocation{Repo: "gh"}, Owners: []string{"sam", "judson"}, Kind: sous.ManifestKindService, } buf := &bytes.Buffer{} enc := json.NewEncoder(buf) enc.Encode(manifest) req, err := http.NewRequest("PUT", "", buf) require.NoError(err) th := &PUTManifestHandler{ Request: req, StateWriter: writer, State: state, QueryValues: &QueryValues{q}, } data, status := th.Exchange() assert.Equal(status, 200) require.IsType(&sous.Manifest{}, data) assert.Len(data.(*sous.Manifest).Owners, 2) assert.Equal(data.(*sous.Manifest).Owners[1], "judson") changed, found := state.Manifests.Get(sous.ManifestID{Source: sous.SourceLocation{Repo: "gh"}}) require.True(found) assert.Len(changed.Owners, 2) assert.Equal(changed.Owners[1], "judson") }