@@ -13,6 +13,7 @@ import (
1313 crypto "github.com/libp2p/go-libp2p-core/crypto"
1414 "github.com/qri-io/dataset"
1515 "github.com/qri-io/qfs"
16+ testPeers "github.com/qri-io/qri/config/test"
1617 "github.com/qri-io/qri/dsref"
1718 "github.com/qri-io/qri/event"
1819 "github.com/qri-io/qri/logbook"
@@ -62,7 +63,7 @@ func Example() {
6263 if err != nil {
6364 panic (err )
6465 }
65- fmt .Printf ("johnathon has %d references for %s\n " , len (items ), worldBankDatasetRef )
66+ fmt .Printf ("johnathon has %d references for %s\n " , len (items ), worldBankDatasetRef . Human () )
6667
6768 // johnathon creates a new push
6869 johnathonLogsync := New (johnathonsLogbook )
@@ -81,15 +82,15 @@ func Example() {
8182 if items , err = basitsLogbook .Items (ctx , worldBankDatasetRef , 0 , 100 ); err != nil {
8283 panic (err )
8384 }
84- fmt .Printf ("basit has %d references for %s\n " , len (items ), worldBankDatasetRef )
85+ fmt .Printf ("basit has %d references for %s\n " , len (items ), worldBankDatasetRef . Human () )
8586
8687 // this time basit creates a history
8788 nasdaqDatasetRef := makeNasdaqLogs (ctx , basitsLogbook )
8889
8990 if items , err = basitsLogbook .Items (ctx , nasdaqDatasetRef , 0 , 100 ); err != nil {
9091 panic (err )
9192 }
92- fmt .Printf ("basit has %d references for %s\n " , len (items ), nasdaqDatasetRef )
93+ fmt .Printf ("basit has %d references for %s\n " , len (items ), nasdaqDatasetRef . Human () )
9394
9495 // prepare to pull nasdaq refs from basit
9596 pull , err := johnathonLogsync .NewPull (nasdaqDatasetRef , server .URL )
@@ -106,7 +107,7 @@ func Example() {
106107 if items , err = johnathonsLogbook .Items (ctx , nasdaqDatasetRef , 0 , 100 ); err != nil {
107108 panic (err )
108109 }
109- fmt .Printf ("johnathon has %d references for %s\n " , len (items ), nasdaqDatasetRef )
110+ fmt .Printf ("johnathon has %d references for %s\n " , len (items ), nasdaqDatasetRef . Human () )
110111
111112 // Output: johnathon has 3 references for johnathon/world_bank_population
112113 // basit has 3 references for johnathon/world_bank_population
@@ -297,6 +298,54 @@ func TestHookErrors(t *testing.T) {
297298 }
298299}
299300
301+ func TestWrongProfileID (t * testing.T ) {
302+ tr , cleanup := newTestRunner (t )
303+ defer cleanup ()
304+
305+ worldBankRef , err := writeWorldBankLogs (tr .Ctx , tr .B )
306+ if err != nil {
307+ t .Fatal (err )
308+ }
309+
310+ nasdaqRef , err := writeNasdaqLogs (tr .Ctx , tr .A )
311+ if err != nil {
312+ t .Fatal (err )
313+ }
314+
315+ // Modify the profileID of this reference, which should cause it to fail to push
316+ worldBankRef .ProfileID = testPeers .GetTestPeerInfo (1 ).EncodedPeerID
317+
318+ lsA := New (tr .A )
319+
320+ s := httptest .NewServer (HTTPHandler (lsA ))
321+ defer s .Close ()
322+
323+ lsB := New (tr .B )
324+ pull , err := lsB .NewPull (nasdaqRef , s .URL )
325+ if err != nil {
326+ t .Fatal (err )
327+ }
328+ pull .Merge = true
329+ if _ , err := pull .Do (tr .Ctx ); err != nil {
330+ t .Fatal (err )
331+ }
332+
333+ // B tries to push, but the profileID it uses has been modifed to something else
334+ // Logsync will catch this error.
335+ push , err := lsB .NewPush (worldBankRef , s .URL )
336+ if err != nil {
337+ t .Fatal (err )
338+ }
339+ err = push .Do (tr .Ctx )
340+ if err == nil {
341+ t .Errorf ("expected error but did not get one" )
342+ }
343+ expectErr := `ref contained in log data does not match`
344+ if expectErr != err .Error () {
345+ t .Errorf ("error mismatch, expect: %s, got: %s" , expectErr , err )
346+ }
347+ }
348+
300349func TestNilCallable (t * testing.T ) {
301350 var logsync * Logsync
302351
@@ -316,6 +365,8 @@ func TestNilCallable(t *testing.T) {
316365}
317366
318367func makeJohnathonLogbook () * logbook.Book {
368+ var aPk = testPeers .GetTestPeerInfo (10 ).EncodedPrivKey
369+
319370 pk , err := decodePk (aPk )
320371 if err != nil {
321372 panic (err )
@@ -329,6 +380,8 @@ func makeJohnathonLogbook() *logbook.Book {
329380}
330381
331382func makeBasitLogbook () * logbook.Book {
383+ var bPk = testPeers .GetTestPeerInfo (9 ).EncodedPrivKey
384+
332385 pk , err := decodePk (bPk )
333386 if err != nil {
334387 panic (err )
@@ -368,6 +421,9 @@ func (tr *testRunner) DefaultLogsyncs() (a, b *Logsync) {
368421}
369422
370423func newTestRunner (t * testing.T ) (tr * testRunner , cleanup func ()) {
424+ var aPk = testPeers .GetTestPeerInfo (10 ).EncodedPrivKey
425+ var bPk = testPeers .GetTestPeerInfo (9 ).EncodedPrivKey
426+
371427 var err error
372428 tr = & testRunner {
373429 Ctx : context .Background (),
@@ -452,6 +508,11 @@ func writeNasdaqLogs(ctx context.Context, book *logbook.Book) (ref dsref.Ref, er
452508
453509func writeWorldBankLogs (ctx context.Context , book * logbook.Book ) (ref dsref.Ref , err error ) {
454510 name := "world_bank_population"
511+ peerID , err := book .ActivePeerID (ctx )
512+ if err != nil {
513+ return dsref.Ref {}, err
514+ }
515+
455516 initID , err := book .WriteDatasetInit (ctx , name )
456517 if err != nil {
457518 return ref , err
@@ -464,35 +525,33 @@ func writeWorldBankLogs(ctx context.Context, book *logbook.Book) (ref dsref.Ref,
464525 Timestamp : time .Date (2000 , time .January , 3 , 0 , 0 , 0 , 0 , time .UTC ),
465526 Title : "init dataset" ,
466527 },
467- Path : "v0 " ,
528+ Path : "/ipfs/QmVersion0 " ,
468529 PreviousPath : "" ,
469530 }
470531
471532 if err = book .WriteVersionSave (ctx , initID , ds ); err != nil {
472533 return ref , err
473534 }
474535
475- ds .Path = "v1 "
476- ds .PreviousPath = "v0 "
536+ ds .Path = "/ipfs/QmVersion1 "
537+ ds .PreviousPath = "/ipfs/QmVesion0 "
477538
478539 if err = book .WriteVersionSave (ctx , initID , ds ); err != nil {
479540 return ref , err
480541 }
481542
482- ds .Path = "v2 "
483- ds .PreviousPath = "v1 "
543+ ds .Path = "/ipfs/QmVersion2 "
544+ ds .PreviousPath = "/ipfs/QmVersion1 "
484545
485546 if err = book .WriteVersionSave (ctx , initID , ds ); err != nil {
486547 return ref , err
487548 }
488549
489550 return dsref.Ref {
490- Username : book .Username (),
491- Name : name ,
492- InitID : initID ,
551+ Username : book .Username (),
552+ Name : name ,
553+ ProfileID : peerID ,
554+ InitID : initID ,
555+ Path : ds .Path ,
493556 }, nil
494557}
495-
496- var aPk = `CAASpgkwggSiAgEAAoIBAQC/7Q7fILQ8hc9g07a4HAiDKE4FahzL2eO8OlB1K99Ad4L1zc2dCg+gDVuGwdbOC29IngMA7O3UXijycckOSChgFyW3PafXoBF8Zg9MRBDIBo0lXRhW4TrVytm4Etzp4pQMyTeRYyWR8e2hGXeHArXM1R/A/SjzZUbjJYHhgvEE4OZy7WpcYcW6K3qqBGOU5GDMPuCcJWac2NgXzw6JeNsZuTimfVCJHupqG/dLPMnBOypR22dO7yJIaQ3d0PFLxiDG84X9YupF914RzJlopfdcuipI+6gFAgBw3vi6gbECEzcohjKf/4nqBOEvCDD6SXfl5F/MxoHurbGBYB2CJp+FAgMBAAECggEAaVOxe6Y5A5XzrxHBDtzjlwcBels3nm/fWScvjH4dMQXlavwcwPgKhy2NczDhr4X69oEw6Msd4hQiqJrlWd8juUg6vIsrl1wS/JAOCS65fuyJfV3Pw64rWbTPMwO3FOvxj+rFghZFQgjg/i45uHA2UUkM+h504M5Nzs6Arr/rgV7uPGR5e5OBw3lfiS9ZaA7QZiOq7sMy1L0qD49YO1ojqWu3b7UaMaBQx1Dty7b5IVOSYG+Y3U/dLjhTj4Hg1VtCHWRm3nMOE9cVpMJRhRzKhkq6gnZmni8obz2BBDF02X34oQLcHC/Wn8F3E8RiBjZDI66g+iZeCCUXvYz0vxWAQQKBgQDEJu6flyHPvyBPAC4EOxZAw0zh6SF/r8VgjbKO3n/8d+kZJeVmYnbsLodIEEyXQnr35o2CLqhCvR2kstsRSfRz79nMIt6aPWuwYkXNHQGE8rnCxxyJmxV4S63GczLk7SIn4KmqPlCI08AU0TXJS3zwh7O6e6kBljjPt1mnMgvr3QKBgQD6fAkdI0FRZSXwzygx4uSg47Co6X6ESZ9FDf6ph63lvSK5/eue/ugX6p/olMYq5CHXbLpgM4EJYdRfrH6pwqtBwUJhlh1xI6C48nonnw+oh8YPlFCDLxNG4tq6JVo071qH6CFXCIank3ThZeW5a3ZSe5pBZ8h4bUZ9H8pJL4C7yQKBgFb8SN/+/qCJSoOeOcnohhLMSSD56MAeK7KIxAF1jF5isr1TP+rqiYBtldKQX9bIRY3/8QslM7r88NNj+aAuIrjzSausXvkZedMrkXbHgS/7EAPflrkzTA8fyH10AsLgoj/68mKr5bz34nuY13hgAJUOKNbvFeC9RI5g6eIqYH0FAoGAVqFTXZp12rrK1nAvDKHWRLa6wJCQyxvTU8S1UNi2EgDJ492oAgNTLgJdb8kUiH0CH0lhZCgr9py5IKW94OSM6l72oF2UrS6PRafHC7D9b2IV5Al9lwFO/3MyBrMocapeeyaTcVBnkclz4Qim3OwHrhtFjF1ifhP9DwVRpuIg+dECgYANwlHxLe//tr6BM31PUUrOxP5Y/cj+ydxqM/z6papZFkK6Mvi/vMQQNQkh95GH9zqyC5Z/yLxur4ry1eNYty/9FnuZRAkEmlUSZ/DobhU0Pmj8Hep6JsTuMutref6vCk2n02jc9qYmJuD7iXkdXDSawbEG6f5C4MUkJ38z1t1OjA==`
497-
498- var bPk = "CAASpwkwggSjAgEAAoIBAQDACiqtbAeIR0gKZZfWuNgDssXnQnEQNrAlISlNMrtULuCtsLBk2tZ4C508T4/JQHfvbazZ/aPvkhr9KBaH8AzDU3FngHQnWblGtfm/0FAXbXPfn6DZ1rbA9rx9XpVZ+pUBDve0YxTSPOo5wOOR9u30JEvO47n1R/bF+wtMRHvDyRuoy4H86XxwMR76LYbgSlJm6SSKnrAVoWR9zqjXdaF1QljO77VbivnR5aS9vQ5Sd1mktwgb3SYUMlEGedtcMdLd3MPVCLFzq6cdjhSwVAxZ3RowR2m0hSEE/p6CKH9xz4wkMmjVrADfQTYU7spym1NBaNCrW1f+r4ScDEqI1yynAgMBAAECggEAWuJ04C5IQk654XHDMnO4h8eLsa7YI3w+UNQo38gqr+SfoJQGZzTKW3XjrC9bNTu1hzK4o1JOy4qyCy11vE/3Olm7SeiZECZ+cOCemhDUVsIOHL9HONFNHHWpLwwcUsEs05tpz400xWrezwZirSnX47tpxTgxQcwVFg2Bg07F5BntepqX+Ns7s2XTEc7YO8o77viYbpfPSjrsToahWP7ngIL4ymDjrZjgWTPZC7AzobDbhjTh5XuVKh60eUz0O7/Ezj2QK00NNkkD7nplU0tojZF10qXKCbECPn3pocVPAetTkwB1Zabq2tC2Y10dYlef0B2fkktJ4PAJyMszx4toQQKBgQD+69aoMf3Wcbw1Z1e9IcOutArrnSi9N0lVD7X2B6HHQGbHkuVyEXR10/8u4HVtbM850ZQjVnSTa4i9XJAy98FWwNS4zFh3OWVhgp/hXIetIlZF72GEi/yVFBhFMcKvXEpO/orEXMOJRdLb/7kNpMvl4MQ/fGWOmQ3InkKxLZFJ+wKBgQDA2jUTvSjjFVtOJBYVuTkfO1DKRGu7QQqNeF978ZEoU0b887kPu2yzx9pK0PzjPffpfUsa9myDSu7rncBX1FP0gNmSIAUja2pwMvJDU2VmE3Ua30Z1gVG1enCdl5ZWufum8Q+0AUqVkBdhPxw+XDJStA95FUArJzeZ2MTwbZH0RQKBgDG188og1Ys36qfPW0C6kNpEqcyAfS1I1rgLtEQiAN5GJMTOVIgF91vy11Rg2QVZrp9ryyOI/HqzAZtLraMCxWURfWn8D1RQkQCO5HaiAKM2ivRgVffvBHZd0M3NglWH/cWhxZW9MTRXtWLJX2DVvh0504s9yuAf4Jw6oG7EoAx5AoGBAJluAURO/jSMTTQB6cAmuJdsbX4+qSc1O9wJpI3LRp06hAPDM7ycdIMjwTw8wLVaG96bXCF7ZCGggCzcOKanupOP34kuCGiBkRDqt2tw8f8gA875S+k4lXU4kFgQvf8JwHi02LVxQZF0LeWkfCfw2eiKcLT4fzDV5ppzp1tREQmxAoGAGOXFomnMU9WPxJp6oaw1ZimtOXcAGHzKwiwQiw7AAWbQ+8RrL2AQHq0hD0eeacOAKsh89OXsdS9iW9GQ1mFR3FA7Kp5srjCMKNMgNSBNIb49iiG9O6P6UcO+RbYGg3CkSTG33W8l2pFIjBrtGktF5GoJudAPR4RXhVsRYZMiGag="
0 commit comments