add comman table data,become schema

parent dbf63aa3
This diff is collapsed.
...@@ -343,11 +343,11 @@ func (this *Schema) put(args []string, stub shim.ChaincodeStubInterface) (string ...@@ -343,11 +343,11 @@ func (this *Schema) put(args []string, stub shim.ChaincodeStubInterface) (string
if len(args) != 2 { if len(args) != 2 {
return "", fmt.Errorf("Expected 2 parameters to function put!") return "", fmt.Errorf("Expected 2 parameters to function put!")
} }
var schema Schema var schema *Schema
var err error
if err := json.Unmarshal([]byte(args[1]), &schema); err != nil { if schema ,err = NewSchema(args[1]);err != nil{
return "", fmt.Errorf("parameters Unmarshal fail,args string not json string,err: %s", err) return "", fmt.Errorf("parameters Unmarshal fail,args string not json string,err: %s", err)
} else { }else{
if backupValue, ok := schema.Fields["backup"]; ok { if backupValue, ok := schema.Fields["backup"]; ok {
if _,ok := backupValue.Value.(map[string]interface{}); !ok { if _,ok := backupValue.Value.(map[string]interface{}); !ok {
return "", fmt.Errorf("parameters Unmarshal fail,extra string not json string,err: %s", err) return "", fmt.Errorf("parameters Unmarshal fail,extra string not json string,err: %s", err)
...@@ -359,6 +359,12 @@ func (this *Schema) put(args []string, stub shim.ChaincodeStubInterface) (string ...@@ -359,6 +359,12 @@ func (this *Schema) put(args []string, stub shim.ChaincodeStubInterface) (string
//} //}
} }
} }
//if err := json.Unmarshal([]byte(args[1]), &schema); err != nil {
// return "", fmt.Errorf("parameters Unmarshal fail,args string not json string,err: %s", err)
//} else {
//
//}
_, ok := schema.Fields["id"] _, ok := schema.Fields["id"]
if !ok { if !ok {
return "", fmt.Errorf("The id field must exist ") return "", fmt.Errorf("The id field must exist ")
...@@ -382,12 +388,12 @@ func (this *Schema) update(args []string, stub shim.ChaincodeStubInterface) (str ...@@ -382,12 +388,12 @@ func (this *Schema) update(args []string, stub shim.ChaincodeStubInterface) (str
if len(args) != 2 { if len(args) != 2 {
return "", fmt.Errorf("expected 2 parameters to function put! ") return "", fmt.Errorf("expected 2 parameters to function put! ")
} }
var schema Schema var schema *Schema
var err error
if err := json.Unmarshal([]byte(args[1]), &schema); err != nil { if schema ,err = NewSchema(args[1]);err != nil{
return "", fmt.Errorf("parameters Unmarshal fail,args string not json string,err: %s", err) return "", fmt.Errorf("parameters Unmarshal fail,args string not json string,err: %s", err)
} else { }else{
if backupValue, ok := schema.Fields["backup"]; ok { //保证backup 对应的参数格式为map[string]interface{} if backupValue, ok := schema.Fields["backup"]; ok {
if _,ok := backupValue.Value.(map[string]interface{}); !ok { if _,ok := backupValue.Value.(map[string]interface{}); !ok {
return "", fmt.Errorf("parameters Unmarshal fail,extra string not json string,err: %s", err) return "", fmt.Errorf("parameters Unmarshal fail,extra string not json string,err: %s", err)
} }
...@@ -446,6 +452,7 @@ func (this *Schema) getSchema(args string, stub shim.ChaincodeStubInterface)(str ...@@ -446,6 +452,7 @@ func (this *Schema) getSchema(args string, stub shim.ChaincodeStubInterface)(str
} }
func getCertificateCommonName(stub shim.ChaincodeStubInterface) (string, error) { func getCertificateCommonName(stub shim.ChaincodeStubInterface) (string, error) {
return "admin",nil
creatorByte, _ := stub.GetCreator() creatorByte, _ := stub.GetCreator()
certStart := bytes.IndexAny(creatorByte, "-----BEGIN") certStart := bytes.IndexAny(creatorByte, "-----BEGIN")
if certStart == -1 { if certStart == -1 {
...@@ -549,6 +556,30 @@ func authorityCheck(authority AuthGroup, commonName string) (bool,error) { ...@@ -549,6 +556,30 @@ func authorityCheck(authority AuthGroup, commonName string) (bool,error) {
} }
func NewSchema(arg string)(*Schema,error){
schema := &Schema{
Fields:make(map[string]SchemaParameters),
}
var argMap map[string]interface{}
if err := json.Unmarshal([]byte(arg),&argMap);err!=nil{
return nil,err
}
if argMap["fields"] != nil && argMap["schema_auth"] != nil && argMap["auth"] != nil{
if err := json.Unmarshal([]byte(arg),schema);err!=nil{
return nil,err
}
return schema,nil
}
for k,v := range argMap{
schema.Fields[k] = SchemaParameters{
Value:v,
PAuth:Auth{},
}
}
return schema,nil
}
func main() { func main() {
err := shim.Start(&GXHCC{}) err := shim.Start(&GXHCC{})
if err != nil { if err != nil {
......
...@@ -13,7 +13,7 @@ var schema = `{"fields":{"alinkman":{"val":"Alinkman","auth":{"read":{"users":{" ...@@ -13,7 +13,7 @@ var schema = `{"fields":{"alinkman":{"val":"Alinkman","auth":{"read":{"users":{"
{"admin":1582972202}}}},"atype":{"val":"Atype","auth":{"read":{"users":{"admin":0},"roles":{"admin":1582972202}},"write":{"users":{"admin":0},"roles": {"admin":1582972202}}}},"atype":{"val":"Atype","auth":{"read":{"users":{"admin":0},"roles":{"admin":1582972202}},"write":{"users":{"admin":0},"roles":
{"admin":1582972202}}}},"backup":{"val":{"aname":"Aname","atype":"Atype"},"auth":{"read":{"users":{"admin":0},"roles":{"admin":1582972202}},"write":{"users": {"admin":1582972202}}}},"backup":{"val":{"aname":"Aname","atype":"Atype"},"auth":{"read":{"users":{"admin":0},"roles":{"admin":1582972202}},"write":{"users":
{"admin":0},"roles":{"admin":1582972202}}}},"id":{"val":"1","auth":{"read":{"users":{"admin":0},"roles":{"admin":1582972202}},"write":{"users":{"admin":0},"roles": {"admin":0},"roles":{"admin":1582972202}}}},"id":{"val":"1","auth":{"read":{"users":{"admin":0},"roles":{"admin":1582972202}},"write":{"users":{"admin":0},"roles":
{"admin":1582972202}}}}},"schema_auth":{"read":{"users":null,"roles":null},"write":{"users":{"admin":0},"roles":{"admin":1582972202}}},"auth":{"read":{"users": {"admin":1582972202}}}}},"schema_auth":{"read":{"users":null,"roles":null},"write":{"users":{"admin":0},"roles":{"admin":0}}},"auth":{"read":{"users":
{"admin":0},"roles":{"admin":0}},"write":{"users":{"admin":0},"roles":{"admin":1582972202}}}} {"admin":0},"roles":{"admin":0}},"write":{"users":{"admin":0},"roles":{"admin":1582972202}}}}
` `
var schema2 = `{"fields":{"alinkman":{"val":"Alinkman","auth":{"read":{"users":{"admin":0},"roles":{"admin":1582972202}},"write":{"users":{"admin":0},"roles": var schema2 = `{"fields":{"alinkman":{"val":"Alinkman","auth":{"read":{"users":{"admin":0},"roles":{"admin":1582972202}},"write":{"users":{"admin":0},"roles":
...@@ -74,7 +74,35 @@ func TestGXHSchemaAuth(t *testing.T){ ...@@ -74,7 +74,35 @@ func TestGXHSchemaAuth(t *testing.T){
responseByupdate.Status,responseByupdate.Message,string(responseByupdate.Payload)) responseByupdate.Status,responseByupdate.Message,string(responseByupdate.Payload))
} }
/*
测试使用table 数据构建 schema
*/
func TestGXHSchemaAuthBytable(t *testing.T){
cc := new(GXHCC)
stub := shim.NewMockStub("GXHCC",cc)
stub.MockInit("init",nil)
fmt.Println()
fmt.Println("========================================invoke schema put============================================")
fmt.Println()
fmt.Println()
responseByPutschema := stub.MockInvoke("invoke1",[][]byte{[]byte("schema"), []byte("put"),[]byte("alibusi"),[]byte(inputUpdate)})
fmt.Printf("Invoke status %d,message %s and payload %s\n",
responseByPutschema.Status,responseByPutschema.Message,string(responseByPutschema.Payload))
fmt.Println()
fmt.Println("========================================invoke schema get============================================")
fmt.Println()
fmt.Println()
responseByget := stub.MockInvoke("invoke1",[][]byte{[]byte("schema"), []byte("get"),[]byte("alibusi")})
fmt.Printf("Invoke status %d,message %s ,and payload %s \n",
responseByget.Status,responseByget.Message,string(responseByget.Payload))
fmt.Println()
fmt.Println("========================================invoke schema update============================================")
fmt.Println()
fmt.Println()
responseByupdate := stub.MockInvoke("invoke1",[][]byte{[]byte("schema"), []byte("update"),[]byte("alibusi"),[]byte(inputUpdate)})
fmt.Printf("Invoke status %d,message %s ,and payload %s \n",
responseByupdate.Status,responseByupdate.Message,string(responseByupdate.Payload))
}
func TestGXHDataPutAuth(t *testing.T){ func TestGXHDataPutAuth(t *testing.T){
cc := new(GXHCC) cc := new(GXHCC)
stub := shim.NewMockStub("GXHCC",cc) stub := shim.NewMockStub("GXHCC",cc)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment