Skip to content

Commit

Permalink
user: Check existing (from user index) (#132)
Browse files Browse the repository at this point in the history
  • Loading branch information
gabriel authored Aug 24, 2020
1 parent e123846 commit 83e82ad
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 8 deletions.
19 changes: 19 additions & 0 deletions user/echo_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,3 +110,22 @@ func TestRequestVerifyEcho(t *testing.T) {
t.Logf("result: %+v", result)
require.Equal(t, user.StatusOK, result.Status)
}

func testEchoSigchain(t *testing.T, sk *keys.EdX25519Key, name string, clock tsutil.Clock) *keys.Sigchain {
usr, err := user.NewForSigning(sk.ID(), "echo", name)
require.NoError(t, err)
msg, err := usr.Sign(sk)
require.NoError(t, err)
err = user.Verify(msg, usr)
require.NoError(t, err)

urs := "test://echo/" + name + "/" + sk.ID().String() + "/" + url.QueryEscape(strings.ReplaceAll(msg, "\n", " "))
sc := keys.NewSigchain(sk.ID())
stu, err := user.New(sk.ID(), "echo", "alice", urs, sc.LastSeq()+1)
require.NoError(t, err)
st, err := user.NewSigchainStatement(sc, stu, sk, clock.Now())
require.NoError(t, err)
err = sc.Add(st)
require.NoError(t, err)
return sc
}
13 changes: 5 additions & 8 deletions user/users.go
Original file line number Diff line number Diff line change
Expand Up @@ -398,17 +398,14 @@ func (u *Users) CheckForExisting(ctx context.Context, sc *keys.Sigchain) (keys.I
}
if usr != nil {
logger.Debugf("Checking for existing user %s...", usr.ID())
q := usr.ID()
results, err := u.Search(ctx, &SearchRequest{Query: q})
res, err := u.User(ctx, usr.ID())
if err != nil {
return "", err
}
if len(results) > 0 {
for _, res := range results {
logger.Debugf("Found user %s with %s", usr.ID(), res.KID)
if res.KID != sc.KID() {
return res.KID, nil
}
if res != nil {
logger.Debugf("Found user %s with %s", usr.ID(), res.User.KID)
if res.User.KID != sc.KID() {
return res.User.KID, nil
}
}
}
Expand Down
27 changes: 27 additions & 0 deletions user/users_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,3 +148,30 @@ func TestSigchainRevokeUpdate(t *testing.T) {
require.NotNil(t, result)
require.Equal(t, user.StatusOK, result.Status)
}

func TestCheckForExisting(t *testing.T) {
var err error

clock := tsutil.NewTestClock()
req := request.NewMockRequestor()
ds := docs.NewMem()
scs := keys.NewSigchains(ds)
users := user.NewUsers(ds, scs, user.Requestor(req), user.Clock(clock))

sk1 := keys.NewEdX25519KeyFromSeed(testSeed(0x01))
sc1 := testEchoSigchain(t, sk1, "alice", clock)
kid, err := users.CheckForExisting(context.TODO(), sc1)
require.NoError(t, err)
require.Empty(t, kid)
err = scs.Save(sc1)
require.NoError(t, err)
_, err = users.Update(context.TODO(), sk1.ID())
require.NoError(t, err)

sk2 := keys.NewEdX25519KeyFromSeed(testSeed(0x02))
sc2 := testEchoSigchain(t, sk2, "alice", clock)
kid, err = users.CheckForExisting(context.TODO(), sc2)
require.NoError(t, err)
require.Equal(t, kid, sk1.ID())

}

0 comments on commit 83e82ad

Please sign in to comment.