Skip to content

Commit

Permalink
Added strings scaped JamesStewy#9
Browse files Browse the repository at this point in the history
  • Loading branch information
Sergio Contreras committed Aug 7, 2018
1 parent d04ec8e commit 8f74ff6
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 1 deletion.
15 changes: 14 additions & 1 deletion dump.go
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ func createTableValues(db *sql.DB, name string) (string, error) {

for key, value := range data {
if value != nil && value.Valid {
dataStrings[key] = "'" + value.String + "'"
dataStrings[key] = "'" + escapeString(value.String) + "'"
} else {
dataStrings[key] = "null"
}
Expand All @@ -237,3 +237,16 @@ func createTableValues(db *sql.DB, name string) (string, error) {

return strings.Join(data_text, ","), rows.Err()
}

func escapeString(str string) string {
replace := map[string]string{
"'": `\'`,
`"`: `\"`,
}

for b, a := range replace {
str = strings.Replace(str, b, a, -1)
}

return str
}
30 changes: 30 additions & 0 deletions dump_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,36 @@ func TestCreateTableValuesNil(t *testing.T) {
}
}

func TestCreateTableEscapeStrings(t *testing.T) {
db, mock, err := sqlmock.New()
if err != nil {
t.Fatalf("an error '%s' was not expected when opening a stub database connection", err)
}

rows := sqlmock.NewRows([]string{"id", "text"}).
AddRow(1, `Test Single ' Quote`).
AddRow(2, `Test Double " Quote`)

mock.ExpectQuery("^SELECT (.+) FROM test$").WillReturnRows(rows)

result, err := createTableValues(db, "test")
if err != nil {
t.Errorf("error was not expected while updating stats: %s", err)
}

// we make sure that all expectations were met
if err := mock.ExpectationsWereMet(); err != nil {
t.Errorf("there were unfulfilled expections: %s", err)
}

expectedResult := `('1','Test Single \' Quote'),('2','Test Double \" Quote')`

if !reflect.DeepEqual(result, expectedResult) {
t.Fatalf("expected %#v, got %#v", expectedResult, result)
}

defer db.Close()
}
func TestCreateTableOk(t *testing.T) {
db, mock, err := sqlmock.New()
if err != nil {
Expand Down

0 comments on commit 8f74ff6

Please sign in to comment.