|
@@ -4821,6 +4821,80 @@ func TestEventRuleFsActions(t *testing.T) {
|
|
|
assert.NoError(t, err)
|
|
|
}
|
|
|
|
|
|
+func TestEventActionObjectBaseName(t *testing.T) {
|
|
|
+ a1 := dataprovider.BaseEventAction{
|
|
|
+ Name: "a1",
|
|
|
+ Type: dataprovider.ActionTypeFilesystem,
|
|
|
+ Options: dataprovider.BaseEventActionOptions{
|
|
|
+ FsConfig: dataprovider.EventActionFilesystemConfig{
|
|
|
+ Type: dataprovider.FilesystemActionRename,
|
|
|
+ Renames: []dataprovider.RenameConfig{
|
|
|
+ {
|
|
|
+ KeyValue: dataprovider.KeyValue{
|
|
|
+ Key: "/{{VirtualDirPath}}/{{ObjectName}}",
|
|
|
+ Value: "/{{ObjectBaseName}}",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ }
|
|
|
+ action1, resp, err := httpdtest.AddEventAction(a1, http.StatusCreated)
|
|
|
+ assert.NoError(t, err, string(resp))
|
|
|
+
|
|
|
+ r1 := dataprovider.EventRule{
|
|
|
+ Name: "r2",
|
|
|
+ Status: 1,
|
|
|
+ Trigger: dataprovider.EventTriggerFsEvent,
|
|
|
+ Conditions: dataprovider.EventConditions{
|
|
|
+ FsEvents: []string{"upload"},
|
|
|
+ },
|
|
|
+ Actions: []dataprovider.EventAction{
|
|
|
+ {
|
|
|
+ BaseEventAction: dataprovider.BaseEventAction{
|
|
|
+ Name: action1.Name,
|
|
|
+ },
|
|
|
+ Order: 1,
|
|
|
+ Options: dataprovider.EventActionOptions{
|
|
|
+ ExecuteSync: true,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ }
|
|
|
+ rule1, _, err := httpdtest.AddEventRule(r1, http.StatusCreated)
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ user, _, err := httpdtest.AddUser(getTestUser(), http.StatusCreated)
|
|
|
+ assert.NoError(t, err)
|
|
|
+ conn, client, err := getSftpClient(user)
|
|
|
+ if assert.NoError(t, err) {
|
|
|
+ defer conn.Close()
|
|
|
+ defer client.Close()
|
|
|
+
|
|
|
+ testDir := "test dir name"
|
|
|
+ err = client.Mkdir(testDir)
|
|
|
+ fileSize := int64(32768)
|
|
|
+ assert.NoError(t, err)
|
|
|
+ err = writeSFTPFileNoCheck(path.Join(testDir, testFileName), fileSize, client)
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ _, err = client.Stat(path.Join(testDir, testFileName))
|
|
|
+ assert.ErrorIs(t, err, os.ErrNotExist)
|
|
|
+
|
|
|
+ _, err = client.Stat(strings.TrimSuffix(testFileName, path.Ext(testFileName)))
|
|
|
+ assert.NoError(t, err)
|
|
|
+ }
|
|
|
+
|
|
|
+ _, err = httpdtest.RemoveUser(user, http.StatusOK)
|
|
|
+ assert.NoError(t, err)
|
|
|
+ err = os.RemoveAll(user.GetHomeDir())
|
|
|
+ assert.NoError(t, err)
|
|
|
+ _, err = httpdtest.RemoveEventRule(rule1, http.StatusOK)
|
|
|
+ assert.NoError(t, err)
|
|
|
+ _, err = httpdtest.RemoveEventAction(action1, http.StatusOK)
|
|
|
+ assert.NoError(t, err)
|
|
|
+}
|
|
|
+
|
|
|
func TestUploadEventRule(t *testing.T) {
|
|
|
smtpCfg := smtp.Config{
|
|
|
Host: "127.0.0.1",
|