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
if len(args) != 2 {
return "", fmt.Errorf("Expected 2 parameters to function put!")
}
var schema Schema
if err := json.Unmarshal([]byte(args[1]), &schema); err != nil {
var schema *Schema
var err error
if schema ,err = NewSchema(args[1]);err != nil{
return "", fmt.Errorf("parameters Unmarshal fail,args string not json string,err: %s", err)
} else {
}else{
if backupValue, ok := schema.Fields["backup"]; ok {
if _,ok := backupValue.Value.(map[string]interface{}); !ok {
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
//}
}
}
//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"]
if !ok {
return "", fmt.Errorf("The id field must exist ")
......@@ -382,12 +388,12 @@ func (this *Schema) update(args []string, stub shim.ChaincodeStubInterface) (str
if len(args) != 2 {
return "", fmt.Errorf("expected 2 parameters to function put! ")
}
var schema Schema
if err := json.Unmarshal([]byte(args[1]), &schema); err != nil {
var schema *Schema
var err error
if schema ,err = NewSchema(args[1]);err != nil{
return "", fmt.Errorf("parameters Unmarshal fail,args string not json string,err: %s", err)
} else {
if backupValue, ok := schema.Fields["backup"]; ok { //保证backup 对应的参数格式为map[string]interface{}
}else{
if backupValue, ok := schema.Fields["backup"]; ok {
if _,ok := backupValue.Value.(map[string]interface{}); !ok {
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
}
func getCertificateCommonName(stub shim.ChaincodeStubInterface) (string, error) {
return "admin",nil
creatorByte, _ := stub.GetCreator()
certStart := bytes.IndexAny(creatorByte, "-----BEGIN")
if certStart == -1 {
......@@ -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() {
err := shim.Start(&GXHCC{})
if err != nil {
......
......@@ -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}}}},"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":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}}}}
`
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){
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){
cc := new(GXHCC)
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