git.iko.soy/parseable-android
on 3b7ea33 help sign in
74 lines 1.9 kB history raw
1package com.parseable.android
3import com.parseable.android.data.escapeIdentifier
4import com.parseable.android.data.escapeSql
5import org.junit.Assert.assertEquals
6import org.junit.Test
8class EscapeSqlTest {
10 @Test
11 fun `escapeSql replaces single quotes`() {
12 assertEquals("it''s", escapeSql("it's"))
13 }
15 @Test
16 fun `escapeSql handles multiple single quotes`() {
17 assertEquals("it''s a ''test''", escapeSql("it's a 'test'"))
18 }
20 @Test
21 fun `escapeSql handles empty string`() {
22 assertEquals("", escapeSql(""))
23 }
25 @Test
26 fun `escapeSql handles string without quotes`() {
27 assertEquals("hello world", escapeSql("hello world"))
28 }
30 @Test
31 fun `escapeSql handles consecutive quotes`() {
32 assertEquals("''''", escapeSql("''"))
33 }
35 @Test
36 fun `escapeSql does not alter double quotes`() {
37 assertEquals("say \"hello\"", escapeSql("say \"hello\""))
38 }
40 @Test
41 fun `escapeSql handles backslash`() {
42 assertEquals("path\\to\\file", escapeSql("path\\to\\file"))
43 }
45 @Test
46 fun `escapeSql handles semicolons`() {
47 assertEquals("; DROP TABLE users --", escapeSql("; DROP TABLE users --"))
48 }
50 @Test
51 fun `escapeSql handles quote injection attempt`() {
52 assertEquals("''; DROP TABLE users --", escapeSql("'; DROP TABLE users --"))
53 }
55 @Test
56 fun `escapeIdentifier doubles double quotes`() {
57 assertEquals("foo\"\"bar", escapeIdentifier("foo\"bar"))
58 }
60 @Test
61 fun `escapeIdentifier handles no quotes`() {
62 assertEquals("my_stream", escapeIdentifier("my_stream"))
63 }
65 @Test
66 fun `escapeIdentifier handles empty string`() {
67 assertEquals("", escapeIdentifier(""))
68 }
70 @Test
71 fun `escapeIdentifier handles consecutive double quotes`() {
72 assertEquals("\"\"\"\"", escapeIdentifier("\"\""))
73 }