| 
									
										
										
										
											2015-03-31 01:57:17 +01:00
										 |  |  | package resolver | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"testing" | 
					
						
							| 
									
										
										
										
											2015-04-01 12:29:16 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/ethereum/go-ethereum/common" | 
					
						
							|  |  |  | 	"github.com/ethereum/go-ethereum/crypto" | 
					
						
							| 
									
										
										
										
											2015-03-31 01:57:17 +01:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-01 12:29:16 +01:00
										 |  |  | type testBackend struct { | 
					
						
							|  |  |  | 	// contracts mock | 
					
						
							|  |  |  | 	contracts map[string](map[string]string) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var ( | 
					
						
							|  |  |  | 	text     = "test" | 
					
						
							| 
									
										
										
										
											2015-04-19 19:24:46 +01:00
										 |  |  | 	codehash = common.StringToHash("1234") | 
					
						
							|  |  |  | 	hash     = common.BytesToHash(crypto.Sha3([]byte(text))) | 
					
						
							| 
									
										
										
										
											2015-04-01 12:29:16 +01:00
										 |  |  | 	url      = "bzz://bzzhash/my/path/contr.act" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func NewTestBackend() *testBackend { | 
					
						
							| 
									
										
										
										
											2015-04-22 23:11:11 +01:00
										 |  |  | 	HashRegContractAddress = common.BigToAddress(common.Big0).Hex()[2:] | 
					
						
							|  |  |  | 	UrlHintContractAddress = common.BigToAddress(common.Big1).Hex()[2:] | 
					
						
							| 
									
										
										
										
											2015-04-01 12:29:16 +01:00
										 |  |  | 	self := &testBackend{} | 
					
						
							|  |  |  | 	self.contracts = make(map[string](map[string]string)) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-19 19:24:46 +01:00
										 |  |  | 	self.contracts[HashRegContractAddress] = make(map[string]string) | 
					
						
							|  |  |  | 	key := storageAddress(storageMapping(storageIdx2Addr(1), codehash[:])) | 
					
						
							|  |  |  | 	self.contracts[HashRegContractAddress][key] = hash.Hex() | 
					
						
							| 
									
										
										
										
											2015-04-01 12:29:16 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-22 23:11:11 +01:00
										 |  |  | 	self.contracts[UrlHintContractAddress] = make(map[string]string) | 
					
						
							| 
									
										
										
										
											2015-04-19 19:24:46 +01:00
										 |  |  | 	mapaddr := storageMapping(storageIdx2Addr(1), hash[:]) | 
					
						
							| 
									
										
										
										
											2015-04-17 13:54:23 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	key = storageAddress(storageFixedArray(mapaddr, storageIdx2Addr(0))) | 
					
						
							| 
									
										
										
										
											2015-04-22 23:11:11 +01:00
										 |  |  | 	self.contracts[UrlHintContractAddress][key] = common.ToHex([]byte(url)) | 
					
						
							| 
									
										
										
										
											2015-04-17 13:54:23 +02:00
										 |  |  | 	key = storageAddress(storageFixedArray(mapaddr, storageIdx2Addr(1))) | 
					
						
							| 
									
										
										
										
											2015-04-22 23:11:11 +01:00
										 |  |  | 	self.contracts[UrlHintContractAddress][key] = "0x00" | 
					
						
							| 
									
										
										
										
											2015-04-01 12:29:16 +01:00
										 |  |  | 	return self | 
					
						
							| 
									
										
										
										
											2015-03-31 01:57:17 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-01 12:29:16 +01:00
										 |  |  | func (self *testBackend) StorageAt(ca, sa string) (res string) { | 
					
						
							|  |  |  | 	c := self.contracts[ca] | 
					
						
							|  |  |  | 	if c == nil { | 
					
						
							|  |  |  | 		return | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	res = c[sa] | 
					
						
							|  |  |  | 	return | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2015-03-31 01:57:17 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-22 23:11:11 +01:00
										 |  |  | func (self *testBackend) Transact(fromStr, toStr, nonceStr, valueStr, gasStr, gasPriceStr, codeStr string) (string, error) { | 
					
						
							|  |  |  | 	return "", nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-07 11:50:17 +02:00
										 |  |  | func TestKeyToContentHash(t *testing.T) { | 
					
						
							| 
									
										
										
										
											2015-04-01 12:29:16 +01:00
										 |  |  | 	b := NewTestBackend() | 
					
						
							| 
									
										
										
										
											2015-04-22 23:11:11 +01:00
										 |  |  | 	res := New(b) | 
					
						
							| 
									
										
										
										
											2015-04-08 13:22:31 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-19 19:24:46 +01:00
										 |  |  | 	got, err := res.KeyToContentHash(codehash) | 
					
						
							| 
									
										
										
										
											2015-04-01 12:29:16 +01:00
										 |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		t.Errorf("expected no error, got %v", err) | 
					
						
							|  |  |  | 	} else { | 
					
						
							| 
									
										
										
										
											2015-04-19 19:24:46 +01:00
										 |  |  | 		if got != hash { | 
					
						
							| 
									
										
										
										
											2015-04-22 23:11:11 +01:00
										 |  |  | 			t.Errorf("incorrect result, expected '%v', got '%v'", hash.Hex(), got.Hex()) | 
					
						
							| 
									
										
										
										
											2015-04-01 12:29:16 +01:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-03-31 01:57:17 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-01 12:29:16 +01:00
										 |  |  | func TestContentHashToUrl(t *testing.T) { | 
					
						
							|  |  |  | 	b := NewTestBackend() | 
					
						
							| 
									
										
										
										
											2015-04-22 23:11:11 +01:00
										 |  |  | 	res := New(b) | 
					
						
							| 
									
										
										
										
											2015-04-19 19:24:46 +01:00
										 |  |  | 	got, err := res.ContentHashToUrl(hash) | 
					
						
							| 
									
										
										
										
											2015-04-01 12:29:16 +01:00
										 |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		t.Errorf("expected no error, got %v", err) | 
					
						
							|  |  |  | 	} else { | 
					
						
							| 
									
										
										
										
											2015-04-22 23:11:11 +01:00
										 |  |  | 		if got != url { | 
					
						
							|  |  |  | 			t.Errorf("incorrect result, expected '%v', got '%s'", url, got) | 
					
						
							| 
									
										
										
										
											2015-04-01 12:29:16 +01:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2015-03-31 01:57:17 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-07 11:50:17 +02:00
										 |  |  | func TestKeyToUrl(t *testing.T) { | 
					
						
							| 
									
										
										
										
											2015-04-19 19:24:46 +01:00
										 |  |  | 	b := NewTestBackend() | 
					
						
							| 
									
										
										
										
											2015-04-22 23:11:11 +01:00
										 |  |  | 	res := New(b) | 
					
						
							| 
									
										
										
										
											2015-04-19 19:24:46 +01:00
										 |  |  | 	got, _, err := res.KeyToUrl(codehash) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		t.Errorf("expected no error, got %v", err) | 
					
						
							|  |  |  | 	} else { | 
					
						
							| 
									
										
										
										
											2015-04-22 23:11:11 +01:00
										 |  |  | 		if got != url { | 
					
						
							|  |  |  | 			t.Errorf("incorrect result, expected \n'%s', got \n'%s'", url, got) | 
					
						
							| 
									
										
										
										
											2015-04-19 19:24:46 +01:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-03-31 01:57:17 +01:00
										 |  |  | } |