func TestCreatePDFCollection(t *testing.T) { server := server.MockDBServer() defer server.Close() req := tests.MockRequest{} req.Url = "/assets" req.Method = "post" req.Data = map[string]interface{}{ "mime_type": "application/pdf", "name": randSeq(10), "collection": randSeq(5), } server.Test(&req, func(msg *tests.MockResponse) { utils.Convert(&msg.Data, &assetRet) if msg.Status != 200 { fmt.Printf("%# v", pretty.Formatter(msg)) t.Error("Asset creation should return status 200.") } for _, key := range []string{"upload_url", "url", "_id"} { if val, ok := assetRet[key]; !ok || len(val) == 0 { fmt.Printf("%# v", pretty.Formatter(msg)) t.Error(key + " should be a valid string in creation return.") } } }) }
func TestSNSMessageNotFound(t *testing.T) { server := server.MockDBServer() defer server.Close() snsString := fmt.Sprintf(`{ "Type" : "Notification", "MessageId" : "12", "TopicArn" : "arn", "Subject" : "Amazon S3 Notification", "Message" : "{\"Records\":[{\"s3\":{\"bucket\":{\"name\":\"sc-gallery\"},\"object\":{\"key\":\"%v\",\"size\":71501}}}]}", "Timestamp" : "2015-04-14T03:48:23.584Z", "SignatureVersion" : "1", "Signature" : "liP1M" }`, "original_file/134444") req := tests.MockRequest{} req.Url = "/notify/sns/" req.Method = "post" req.Data = map[string]interface{}{} utils.Decoder([]byte(snsString), &req.Data) server.Test(&req, func(msg *tests.MockResponse) { exception := "This message should be ignored." if msg.Status != 200 { fmt.Printf("%# v", pretty.Formatter(msg)) t.Error(exception) } if msg.Message != "" { fmt.Printf("%# v", pretty.Formatter(msg)) t.Error(exception) } }) }
func TestSNSMessageIgnoredPath(t *testing.T) { server := server.MockDBServer() defer server.Close() snsString := fmt.Sprintf(`{ "Type" : "Notification", "MessageId" : "12", "TopicArn" : "arn", "Subject" : "Amazon S3 Notification", "Message" : "{\"Records\":[{\"s3\":{\"bucket\":{\"name\":\"sc-gallery\"},\"object\":{\"key\":\"%v\",\"size\":71501}}}]}", "Timestamp" : "2015-04-14T03:48:23.584Z", "SignatureVersion" : "1", "Signature" : "liP1M" }`, "/hello/world/") req := tests.MockRequest{} req.Url = "/notify/sns/" req.Method = "post" req.Data = map[string]interface{}{} utils.Decoder([]byte(snsString), &req.Data) server.Test(&req, func(msg *tests.MockResponse) { exception := "This path should have been ignroed." if msg.Status != 400 { fmt.Printf("%# v", pretty.Formatter(msg)) t.Error(exception) } if !strings.Contains(msg.Message, "not meant to be monitored") { fmt.Printf("%# v", pretty.Formatter(msg)) t.Error(exception) } }) }
func TestCreateAssetFailAgain(t *testing.T) { server := server.MockDBServer() defer server.Close() req := tests.MockRequest{} req.Url = "/assets" req.Method = "post" req.Data = map[string]interface{}{ "mime_type": "image/png", } server.Test(&req, func(msg *tests.MockResponse) { if msg.Status != 400 { t.Error("Asset creation should fail without name") } }) }
func TestSNSMessage(t *testing.T) { server := server.MockDBServer() defer server.Close() parsed_url, err := url.Parse(assetRet["upload_url"]) if err != nil { t.Error(err.Error()) return } upload_path := parsed_url.Path fmt.Println("Submitting messages for", upload_path) snsString := fmt.Sprintf(`{ "Type" : "Notification", "MessageId" : "12", "TopicArn" : "arn", "Subject" : "Amazon S3 Notification", "Message" : "{\"Records\":[{\"s3\":{\"bucket\":{\"name\":\"%v\"},\"object\":{\"key\":\"%v\",\"size\":71501}}}]}", "Timestamp" : "2015-04-14T03:48:23.584Z", "SignatureVersion" : "1", "Signature" : "liP1M" }`, config.Settings.S3.Bucket, strings.TrimPrefix(upload_path, "/")) req := tests.MockRequest{} req.Url = "/notify/sns/" req.Method = "post" req.Data = map[string]interface{}{} utils.Decoder([]byte(snsString), &req.Data) server.Test(&req, func(msg *tests.MockResponse) { exception := "This asset should be marked as ready." if msg.Status != 200 { fmt.Printf("%# v", pretty.Formatter(msg)) t.Error(exception) } if msg.Message != "" { fmt.Printf("%# v", pretty.Formatter(msg)) t.Error(exception) } }) }
func TestCreatePDFURLName(t *testing.T) { server := server.MockDBServer() defer server.Close() f1 := randSeq(5) f2 := randSeq(10) f3 := randSeq(3) name := fmt.Sprintf("%v--%v//-%v.pdf", f1, f2, f3) req := tests.MockRequest{} req.Url = "/assets" req.Method = "post" req.Data = map[string]interface{}{ "mime_type": "application/pdf", "name": name, } server.Test(&req, func(msg *tests.MockResponse) { utils.Convert(&msg.Data, &assetRet) if msg.Status != 200 { fmt.Printf("%# v", pretty.Formatter(msg)) t.Error("Asset creation should return status 200.") return } upload_url, err := url.Parse(assetRet["upload_url"]) if err != nil { t.Error(err.Error()) return } fmt.Println(assetRet["upload_url"]) if !strings.HasSuffix(upload_url.Path, ".pdf") { t.Error("URL must end with pdf. Found: " + upload_url.Path) return } }) }