Exemplo n.º 1
0
 def test_parse_rkey(self):
     self.__parse(
         'Location,Frequency\n3,100\n1,101',
         {
             3: db.normalize_record({'freq': 100e6}),
             1: db.normalize_record({'freq': 101e6}),
         },
         [])
Exemplo n.º 2
0
 def test_parse_rkey(self):
     self.__parse(
         'Location,Frequency\n3,100\n1,101',
         {
             3: db.normalize_record({'freq': 100e6}),
             1: db.normalize_record({'freq': 101e6}),
         },
         [])
Exemplo n.º 3
0
 def test_normalize_float(self):
     r = db.normalize_record({
         'lowerFreq': 1,
         'upperFreq': 2
     })
     self.assertIsInstance(r['lowerFreq'], float)
     self.assertIsInstance(r['upperFreq'], float)
Exemplo n.º 4
0
 def test_freq_shorthand(self):
     r = db.normalize_record({
         'freq': 1,
     })
     self.assertEqual(r['lowerFreq'], 1)
     self.assertEqual(r['upperFreq'], 1)
     self.assertNotIn('freq', r)
Exemplo n.º 5
0
    def test_update_good(self):
        new_data = {
            u'type': u'channel',
            u'lowerFreq': 20e6,
            u'upperFreq': 20e6,
            u'label': u'modified',
        }
        index = u'1'
        modified = dict(self.response_json[u'records'])
        modified[index] = db.normalize_record(new_data)

        d = testutil.http_post(reactor, self.__url('/' + str(index)), {
            'old': self.response_json[u'records'][index],
            'new': new_data
        })

        def proceed((response, data)):
            if response.code >= 300:
                print data
            self.assertEqual(response.code, http.NO_CONTENT)
            
            def check(s):
                j = json.loads(s)
                self.assertEqual(j[u'records'], modified)
            
            return client.getPage(self.__url('/')).addCallback(check)
        d.addCallback(proceed)
        return d
Exemplo n.º 6
0
    def test_update_good(self):
        new_data = {
            u'type': u'channel',
            u'lowerFreq': 20e6,
            u'upperFreq': 20e6,
            u'label': u'modified',
        }
        index = u'1'
        modified = dict(self.response_json[u'records'])
        modified[index] = db.normalize_record(new_data)

        d = testutil.http_post_json(
            reactor, self.__url('/' + str(index)), {
                'old': self.response_json[u'records'][index],
                'new': new_data
            })

        def proceed((response, data)):
            if response.code >= 300:
                print data
            self.assertEqual(response.code, http.NO_CONTENT)

            def check((read_response, read_data)):
                j = json.loads(read_data)
                self.assertEqual(j[u'records'], modified)

            return testutil.http_get(reactor,
                                     self.__url('/')).addCallback(check)

        d.addCallback(proceed)
        return d
Exemplo n.º 7
0
 def test_normalize_float(self):
     r = db.normalize_record({
         'lowerFreq': 1,
         'upperFreq': 2
     })
     self.assertIsInstance(r['lowerFreq'], float)
     self.assertIsInstance(r['upperFreq'], float)
Exemplo n.º 8
0
 def test_freq_shorthand(self):
     r = db.normalize_record({
         'freq': 1,
     })
     self.assertEqual(r['lowerFreq'], 1)
     self.assertEqual(r['upperFreq'], 1)
     self.assertNotIn('freq', r)
Exemplo n.º 9
0
 def test_long_line(self):
     self.__parse(
         'Frequency,Name\n1,a,boom',
         {1: db.normalize_record({
             'freq': 1e6,
             'label': 'a'
         })},
         [(2, Warning, 'Record contains extra columns; data discarded.')])
Exemplo n.º 10
0
 def test_no_frequency(self):
     self.__parse(
         'Name,Frequency\na,1\nb',
         {1: db.normalize_record({
             'freq': 1e6,
             'label': 'a'
         })},
         [(3, Warning,
           'Record contains no value for Frequency column; line discarded.')
          ])
Exemplo n.º 11
0
 def test_normalize_complete_result(self):
     self.assertEqual(
         {
             u'type': u'channel',
             u'lowerFreq': 1e6,
             u'upperFreq': 2e6,
             u'mode': u'',
             u'label': u'',
             u'notes': u'',
             u'location': None
         }, db.normalize_record({
             'lowerFreq': 1e6,
             'upperFreq': 2e6,
         }))
Exemplo n.º 12
0
 def test_normalize_complete_result(self):
     self.assertEqual(
         {
             u'type': u'channel',
             u'lowerFreq': 1e6,
             u'upperFreq': 2e6,
             u'mode': u'',
             u'label': u'',
             u'notes': u'',
             u'location': None
         },
         db.normalize_record({
             'lowerFreq': 1e6,
             'upperFreq': 2e6,
         }))
Exemplo n.º 13
0
    def test_create(self):
        new_record = {
            u'type': u'channel',
            u'lowerFreq': 20e6,
            u'upperFreq': 20e6,
        }

        response, data = yield testutil.http_post_json(reactor, self.__url('/'), {
            'new': new_record
        })
        if response.code >= 300:
            print(data)
        self.assertEqual(response.code, http.CREATED)
        url = 'ONLYONE'.join(response.headers.getRawHeaders('Location'))
        self.assertEqual(url, self.__url('/3'))  # URL of new entry
        
        _read_response, read_data = yield testutil.http_get(reactor, self.__url('/'))
        j = json.loads(read_data)
        self.assertEqual(j[u'records'][u'3'], db.normalize_record(new_record))
Exemplo n.º 14
0
    def test_create(self):
        new_record = {
            u'type': u'channel',
            u'lowerFreq': 20e6,
            u'upperFreq': 20e6,
        }

        response, data = yield http_post_json(reactor, self.__url('/'), {
            'new': new_record
        })
        if response.code >= 300:
            print(data)
        self.assertEqual(response.code, http.CREATED)
        url = 'ONLYONE'.join(response.headers.getRawHeaders('Location'))
        self.assertEqual(url, self.__url('/3'))  # URL of new entry
        
        _read_response, read_data = yield http_get(reactor, self.__url('/'))
        j = json.loads(read_data)
        self.assertEqual(j[u'records'][u'3'], db.normalize_record(new_record))
Exemplo n.º 15
0
    def test_update_good(self):
        new_data = {
            u'type': u'channel',
            u'lowerFreq': 20e6,
            u'upperFreq': 20e6,
            u'label': u'modified',
        }
        index = u'1'
        modified = dict(self.response_json[u'records'])
        modified[index] = db.normalize_record(new_data)

        response, data = yield http_post_json(reactor, self.__url('/' + str(index)), {
            'old': self.response_json[u'records'][index],
            'new': new_data
        })
        if response.code >= 300:
            print(data)
        self.assertEqual(response.code, http.NO_CONTENT)
        
        _read_response, read_data = yield http_get(reactor, self.__url('/'))
        j = json.loads(read_data)
        self.assertEqual(j[u'records'], modified)
Exemplo n.º 16
0
    def test_update_good(self):
        new_data = {
            u'type': u'channel',
            u'lowerFreq': 20e6,
            u'upperFreq': 20e6,
            u'label': u'modified',
        }
        index = u'1'
        modified = dict(self.response_json[u'records'])
        modified[index] = db.normalize_record(new_data)

        response, data = yield testutil.http_post_json(reactor, self.__url('/' + str(index)), {
            'old': self.response_json[u'records'][index],
            'new': new_data
        })
        if response.code >= 300:
            print(data)
        self.assertEqual(response.code, http.NO_CONTENT)
        
        _read_response, read_data = yield testutil.http_get(reactor, self.__url('/'))
        j = json.loads(read_data)
        self.assertEqual(j[u'records'], modified)
Exemplo n.º 17
0
 def f():
     db.normalize_record({
         'label': 'foo',
     })
Exemplo n.º 18
0
class TestDBWeb(unittest.TestCase):
    test_records = {
        1:
        db.normalize_record({
            u'type': u'channel',
            u'lowerFreq': 10e6,
            u'upperFreq': 10e6,
            u'mode': u'AM',
            u'label': u'chname',
            u'notes': u'comment',
            u'location': [0, 90],
        }),
        2:
        db.normalize_record({
            u'type': u'band',
            u'lowerFreq': 10e6,
            u'upperFreq': 20e6,
            u'mode': u'AM',
            u'label': u'bandname',
            u'notes': u'comment',
            u'location': None,
        }),
    }
    response_json = {
        u'records': {unicode(k): v
                     for k, v in test_records.iteritems()},
        u'writable': True,
    }

    def setUp(self):
        # pylint: disable=no-member
        db_model = db.DatabaseModel(reactor,
                                    dict(self.test_records),
                                    writable=True)
        dbResource = db.DatabaseResource(db_model)
        self.port = reactor.listenTCP(0,
                                      server.Site(dbResource),
                                      interface="127.0.0.1")

    def tearDown(self):
        return self.port.stopListening()

    def __url(self, path):
        return 'http://127.0.0.1:%i%s' % (self.port.getHost().port, path)

    def test_index_response(self):
        def callback((response, data)):
            self.assertEqual(response.headers.getRawHeaders('Content-Type'),
                             ['application/json'])
            j = json.loads(data)
            self.assertEqual(j, self.response_json)

        return testutil.http_get(reactor,
                                 self.__url('/')).addCallback(callback)

    def test_record_response(self):
        def callback((response, data)):
            self.assertEqual(response.headers.getRawHeaders('Content-Type'),
                             ['application/json'])
            j = json.loads(data)
            self.assertEqual(j, self.test_records[1])

        return testutil.http_get(reactor,
                                 self.__url('/1')).addCallback(callback)

    def test_update_good(self):
        new_data = {
            u'type': u'channel',
            u'lowerFreq': 20e6,
            u'upperFreq': 20e6,
            u'label': u'modified',
        }
        index = u'1'
        modified = dict(self.response_json[u'records'])
        modified[index] = db.normalize_record(new_data)

        d = testutil.http_post(reactor, self.__url('/' + str(index)), {
            'old': self.response_json[u'records'][index],
            'new': new_data
        })

        def proceed((response, data)):
            if response.code >= 300:
                print data
            self.assertEqual(response.code, http.NO_CONTENT)

            def check(s):
                j = json.loads(s)
                self.assertEqual(j[u'records'], modified)

            return client.getPage(self.__url('/')).addCallback(check)

        d.addCallback(proceed)
        return d

    def test_create(self):
        new_record = {
            u'type': u'channel',
            u'lowerFreq': 20e6,
            u'upperFreq': 20e6,
        }

        d = testutil.http_post(reactor, self.__url('/'), {'new': new_record})

        def proceed((response, data)):
            if response.code >= 300:
                print data
            self.assertEqual(response.code, http.CREATED)
            url = 'ONLYONE'.join(response.headers.getRawHeaders('Location'))
            self.assertEqual(url, self.__url('/3'))  # URL of new entry

            def check(s):
                j = json.loads(s)
                self.assertEqual(j[u'records'][u'3'],
                                 db.normalize_record(new_record))

            return client.getPage(self.__url('/')).addCallback(check)

        d.addCallback(proceed)
        return d
Exemplo n.º 19
0
class TestDatabaseResource(unittest.TestCase):
    test_records = {
        1:
        db.normalize_record({
            u'type': u'channel',
            u'lowerFreq': 10e6,
            u'upperFreq': 10e6,
            u'mode': u'AM',
            u'label': u'chname',
            u'notes': u'comment',
            u'location': [0, 90],
        }),
        2:
        db.normalize_record({
            u'type': u'band',
            u'lowerFreq': 10e6,
            u'upperFreq': 20e6,
            u'mode': u'AM',
            u'label': u'bandname',
            u'notes': u'comment',
            u'location': None,
        }),
    }
    response_json = {
        u'records': {six.text_type(k): v
                     for k, v in test_records.items()},
        u'writable': True,
    }

    def setUp(self):
        db_model = db.DatabaseModel(reactor,
                                    dict(self.test_records),
                                    writable=True)
        dbResource = db.DatabaseResource(db_model)
        self.port = reactor.listenTCP(0,
                                      SiteWithDefaultHeaders(dbResource),
                                      interface="127.0.0.1")  # pylint: disable=no-member

    def tearDown(self):
        return self.port.stopListening()

    def __url(self, path):
        url = 'http://127.0.0.1:%i%s' % (self.port.getHost().port, path)
        if six.PY2:
            return url.encode('ascii')
        else:
            return url

    def test_index_common(self):
        return testutil.assert_http_resource_properties(self, self.__url('/'))

    @defer.inlineCallbacks
    def test_index_response(self):
        response, data = yield testutil.http_get(reactor, self.__url('/'))
        self.assertEqual(response.headers.getRawHeaders('Content-Type'),
                         ['application/json'])
        j = json.loads(data)
        self.assertEqual(j, self.response_json)

    def test_record_common(self):
        return testutil.assert_http_resource_properties(self, self.__url('/1'))

    @defer.inlineCallbacks
    def test_record_response(self):
        response, data = yield testutil.http_get(reactor, self.__url('/1'))
        self.assertEqual(response.headers.getRawHeaders('Content-Type'),
                         ['application/json'])
        j = json.loads(data)
        self.assertEqual(j, self.test_records[1])

    @defer.inlineCallbacks
    def test_update_good(self):
        new_data = {
            u'type': u'channel',
            u'lowerFreq': 20e6,
            u'upperFreq': 20e6,
            u'label': u'modified',
        }
        index = u'1'
        modified = dict(self.response_json[u'records'])
        modified[index] = db.normalize_record(new_data)

        response, data = yield testutil.http_post_json(
            reactor, self.__url('/' + str(index)), {
                'old': self.response_json[u'records'][index],
                'new': new_data
            })
        if response.code >= 300:
            print(data)
        self.assertEqual(response.code, http.NO_CONTENT)

        _read_response, read_data = yield testutil.http_get(
            reactor, self.__url('/'))
        j = json.loads(read_data)
        self.assertEqual(j[u'records'], modified)

    @defer.inlineCallbacks
    def test_create(self):
        new_record = {
            u'type': u'channel',
            u'lowerFreq': 20e6,
            u'upperFreq': 20e6,
        }

        response, data = yield testutil.http_post_json(reactor,
                                                       self.__url('/'),
                                                       {'new': new_record})
        if response.code >= 300:
            print(data)
        self.assertEqual(response.code, http.CREATED)
        url = 'ONLYONE'.join(response.headers.getRawHeaders('Location'))
        self.assertEqual(url, self.__url('/3'))  # URL of new entry

        _read_response, read_data = yield testutil.http_get(
            reactor, self.__url('/'))
        j = json.loads(read_data)
        self.assertEqual(j[u'records'][u'3'], db.normalize_record(new_record))
Exemplo n.º 20
0
 def check(s):
     j = json.loads(s)
     self.assertEqual(j[u'records'][u'3'],
                      db.normalize_record(new_record))
Exemplo n.º 21
0
 def test_short_line(self):
     self.__parse('Frequency,Name,Comment\n1,a',
                  {1: db.normalize_record({
                      'freq': 1e6,
                      'label': 'a'
                  })}, [])
Exemplo n.º 22
0
 def check((read_response, read_data)):
     j = json.loads(read_data)
     self.assertEqual(j[u'records'][u'3'], db.normalize_record(new_record))
Exemplo n.º 23
0
 def check((read_response, read_data)):
     j = json.loads(read_data)
     self.assertEqual(j[u'records'][u'3'],
                      db.normalize_record(new_record))
Exemplo n.º 24
0
 def test_no_frequency(self):
     self.__parse(
         'Name,Frequency\na,1\nb',
         {1: db.normalize_record({'freq': 1e6, 'label': 'a'})},
         [(3, Warning, 'Record contains no value for Frequency column; line discarded.')])
Exemplo n.º 25
0
 def test_short_line(self):
     self.__parse(
         'Frequency,Name,Comment\n1,a',
         {1: db.normalize_record({'freq': 1e6, 'label': 'a'})},
         [])
Exemplo n.º 26
0
 def test_long_line(self):
     self.__parse(
         'Frequency,Name\n1,a,boom',
         {1: db.normalize_record({'freq': 1e6, 'label': 'a'})},
         [(2, Warning, 'Record contains extra columns; data discarded.')])
Exemplo n.º 27
0
 def check(s):
     j = json.loads(s)
     self.assertEqual(j[u'records'][u'3'], db.normalize_record(new_record))
Exemplo n.º 28
0
 def add_record(record):
     records.append(normalize_record(record))
Exemplo n.º 29
0
 def f():
     db.normalize_record({
         'lowerFreq': 1,
         'upperFreq': 1,
         'foo': 'bar',
     })
Exemplo n.º 30
0
 def f():
     db.normalize_record({
         'lowerFreq': 1,
         'upperFreq': 1,
         'foo': 'bar',
     })
Exemplo n.º 31
0
 def f():
     db.normalize_record({
         'label': 'foo',
     })
Exemplo n.º 32
0
 def add_record(record):
     records.append(normalize_record(record))