コード例 #1
0
    def test_module_create_cnt(self):
        f = ResourcesFactory()

        # create CSE
        csebase = f.create(ResourceType.CSEBase.value)
        csebase.set_csi(settings.GHOSTM2M['CSE-ID'])
        csebase_ri = CSEBaseMapper().store(settings.GHOSTM2M['CSE-ID'],
                                           csebase)

        # create parent AE
        ae = f.create(ty=ResourceType.AE.value,
                      pi=csebase_ri,
                      pc={'m2m:ae': {
                          'api': 'test',
                          'apn': 'rfid-reader'
                      }})

        ae_mapper = MappersFactory().get(ae)
        ae_ri = ae_mapper.store(settings.GHOSTM2M['CSE-ID'], ae)

        # create Container
        cnt = f.create(ty=ResourceType.container.value,
                       pi=ae_ri,
                       pc={'m2m:cnt': {
                           'rn': 'corner-rfids'
                       }})
        cnt_mapper = MappersFactory().get(cnt)
        cnt_ri = cnt_mapper.store(settings.GHOSTM2M['CSE-ID'], cnt)
        cnt.set_id(cnt_ri)
        recorded_cnt = cnt_mapper.retrieve(settings.GHOSTM2M['CSE-ID'],
                                           {'_id': ObjectId(cnt_ri)})

        # test dict
        self.assertIn('m2m:cnt', cnt.resource)
        self.assertIn('pi', cnt.resource['m2m:cnt'])
        self.assertIn('rn', cnt.resource['m2m:cnt'])

        self.assertEqual(ae_ri, cnt.resource['m2m:cnt']['pi'])
        self.assertEqual('corner-rfids', cnt.resource['m2m:cnt']['rn'])

        # test module
        self.assertEqual(cnt.rn, 'corner-rfids')
        self.assertEqual(cnt.pi, ae_ri)
        self.assertEqual(cnt.ri, cnt_ri)

        # test db
        self.assertIsInstance(recorded_cnt, Container)
        self.assertEqual(recorded_cnt.rn, 'corner-rfids')
        self.assertEqual(recorded_cnt.pi, ae_ri)
コード例 #2
0
    def test_module_create_ae(self):
        f = ResourcesFactory()

        # create CSE
        csebase = f.create(ResourceType.CSEBase.value)
        csebase.set_csi(settings.GHOSTM2M['CSE-ID'])
        csebase_ri = CSEBaseMapper().store(settings.GHOSTM2M['CSE-ID'],
                                           csebase)

        # create AE
        ae = f.create(ty=ResourceType.AE.value,
                      pi=csebase_ri,
                      pc={'m2m:ae': {
                          'api': 'test',
                          'apn': 'rfid-reader'
                      }})

        ae_mapper = MappersFactory().get(ae)
        ae_ri = ae_mapper.store(settings.GHOSTM2M['CSE-ID'], ae)

        # test dict
        self.assertIn('m2m:ae', ae.resource)
        self.assertIn('pi', ae.resource['m2m:ae'])
        self.assertEqual(csebase_ri, ae.resource['m2m:ae']['pi'])

        # test module
        self.assertEqual(ae.apn, 'rfid-reader')
        self.assertEqual(ae.api, 'test')
        self.assertEqual(ae.pi, csebase_ri)

        recorded_ae = ae_mapper.retrieve(settings.GHOSTM2M['CSE-ID'],
                                         {'_id': ObjectId(ae_ri)})

        self.assertIsInstance(recorded_ae, AE)
        self.assertEqual(recorded_ae.apn, 'rfid-reader')
        self.assertEqual(recorded_ae.api, 'test')
        self.assertEqual(recorded_ae.pi, csebase_ri)
コード例 #3
0
    def test_api_retrieve(self):

        f = ResourcesFactory()

        # create admin user
        result = DBConnection().db['users'].find_one(
            {'_id': settings.GHOSTM2M['admin-user']['username']})
        if result is None:
            DBConnection().db['users'].insert_one({
                '_id':
                settings.GHOSTM2M['admin-user']['username'],
                'pwd':
                settings.GHOSTM2M['admin-user']['pwd']
            })

        # create CSE
        csebase = f.create(ResourceType.CSEBase.value)
        csebase.set_csi(settings.GHOSTM2M['CSE-ID'])
        csebase_ri = CSEBaseMapper().store(settings.GHOSTM2M['CSE-ID'],
                                           csebase)

        # create AE
        ae = f.create(ty=ResourceType.AE.value,
                      pi=csebase_ri,
                      pc={'m2m:ae': {
                          'api': 'test',
                          'apn': 'rfid-reader'
                      }})

        ae_mapper = MappersFactory().get(ae)
        ae_ri = ae_mapper.store(settings.GHOSTM2M['CSE-ID'], ae)
        ae.set_id(ae_ri)

        # create Container
        cnt = f.create(ty=ResourceType.container.value,
                       pi=ae_ri,
                       pc={'m2m:cnt': {
                           'rn': 'corner-rfids'
                       }})
        cnt_mapper = MappersFactory().get(cnt)
        cnt_ri = cnt_mapper.store(settings.GHOSTM2M['CSE-ID'], cnt)
        cnt.set_id(cnt_ri)

        # create ContentInstance
        cin = f.create(ty=ResourceType.contentInstance.value,
                       pi=cnt_ri,
                       pc={'m2m:cin': {
                           'con': 'abcdef'
                       }})
        cin_mapper = MappersFactory().get(cin)
        cin_ri = cin_mapper.store(settings.GHOSTM2M['CSE-ID'], cin)
        cin.set_id(cin_ri)

        # Request CSE
        #
        request = {
            'm2m:rqp': {
                'op':
                Operation.Retrieve.value,
                'fr':
                '{}:{}'.format(settings.GHOSTM2M['admin-user']['username'],
                               settings.GHOSTM2M['admin-user']['pwd']),
                'to':
                '/~/Cernicalo',
            }
        }
        request_str = json.dumps(request)
        response = self.client.generic('GET', '/~/Cernicalo', request_str,
                                       'application/json')
        self.assertEqual(response.status_code, 200)
        response_cse = json.loads(response.content)['m2m:rsp']
        self.assertIn('rsc', response_cse)
        self.assertEqual(response_cse['rsc'], ResponseStatusCode.OK.value)

        # Request AE
        request = {
            'm2m:rqp': {
                'op':
                Operation.Retrieve.value,
                'fr':
                '{}:{}'.format(settings.GHOSTM2M['admin-user']['username'],
                               settings.GHOSTM2M['admin-user']['pwd']),
                'to':
                '/~/Cernicalo',
            }
        }

        request_str = json.dumps(request)
        response = self.client.generic('GET', '/~/Cernicalo/{}'.format(ae_ri),
                                       request_str, 'application/json')
        self.assertEqual(response.status_code, 200)
        response_ae = json.loads(response.content)['m2m:rsp']
        self.assertIn('pc', response_ae)
        self.assertIn('m2m:ae', response_ae['pc'])
        self.assertIn('apn', response_ae['pc']['m2m:ae'])
        self.assertIn('ri', response_ae['pc']['m2m:ae'])

        # Request Container
        request = {
            'm2m:rqp': {
                'op':
                Operation.Retrieve.value,
                'fr':
                '{}:{}'.format(settings.GHOSTM2M['admin-user']['username'],
                               settings.GHOSTM2M['admin-user']['pwd']),
                'to':
                '/~/Cernicalo',
            }
        }

        request_str = json.dumps(request)
        response = self.client.generic('GET', '/~/Cernicalo/{}'.format(cnt_ri),
                                       request_str, 'application/json')
        self.assertEqual(response.status_code, 200)
        response_cnt = json.loads(response.content)['m2m:rsp']
        self.assertIn('pc', response_cnt)
        self.assertIn('m2m:cnt', response_cnt['pc'])
        self.assertIn('rn', response_cnt['pc']['m2m:cnt'])
        self.assertIn('ri', response_cnt['pc']['m2m:cnt'])
        self.assertIn('cni', response_cnt['pc']['m2m:cnt'])
        self.assertEqual(response_cnt['pc']['m2m:cnt']['cni'], 1)

        # Request ContentInstance
        request = {
            'm2m:rqp': {
                'op':
                Operation.Retrieve.value,
                'fr':
                '{}:{}'.format(settings.GHOSTM2M['admin-user']['username'],
                               settings.GHOSTM2M['admin-user']['pwd']),
                'to':
                '/~/Cernicalo',
            }
        }

        request_str = json.dumps(request)
        response = self.client.generic('GET', '/~/Cernicalo/{}'.format(cin_ri),
                                       request_str, 'application/json')
        self.assertEqual(response.status_code, 200)
        response_cin = json.loads(response.content)['m2m:rsp']
        self.assertIn('pc', response_cin)
        self.assertIn('m2m:cin', response_cin['pc'])
        self.assertIn('con', response_cin['pc']['m2m:cin'])
        self.assertIn('ri', response_cin['pc']['m2m:cin'])
        self.assertIn('pi', response_cin['pc']['m2m:cin'])
        self.assertEqual(response_cin['pc']['m2m:cin']['pi'], cnt_ri)

        # Request <last> <ContentInstance>
        request = {
            'm2m:rqp': {
                'op':
                Operation.Retrieve.value,
                'fr':
                '{}:{}'.format(settings.GHOSTM2M['admin-user']['username'],
                               settings.GHOSTM2M['admin-user']['pwd']),
                'to':
                '/~/Cernicalo',
            }
        }
        request_str = json.dumps(request)
        response = self.client.generic('GET',
                                       '/~/Cernicalo/{}/la'.format(cnt_ri),
                                       request_str, 'application/json')
        self.assertEqual(response.status_code, 200)
        response_la = json.loads(response.content)['m2m:rsp']
        self.assertIn('pc', response_cin)

        # Check updated parent <Container>
        request = {
            'm2m:rqp': {
                'op':
                Operation.Retrieve.value,
                'fr':
                '{}:{}'.format(settings.GHOSTM2M['admin-user']['username'],
                               settings.GHOSTM2M['admin-user']['pwd']),
                'to':
                '/~/Cernicalo',
            }
        }

        request_str = json.dumps(request)
        response = self.client.generic('GET', '/~/Cernicalo/{}'.format(cnt_ri),
                                       request_str, 'application/json')
        self.assertEqual(response.status_code, 200)
        response_cnt = json.loads(response.content)['m2m:rsp']
        self.assertIn('pc', response_cnt)
        self.assertIn('m2m:cnt', response_cnt['pc'])
        self.assertIn('rn', response_cnt['pc']['m2m:cnt'])
        self.assertIn('ri', response_cnt['pc']['m2m:cnt'])

        self.assertIn('la', response_cnt['pc']['m2m:cnt'])
        self.assertEqual(response_cnt['pc']['m2m:cnt']['la'], cin_ri)

        # create another ContentInstance
        cin = f.create(ty=ResourceType.contentInstance.value,
                       pi=cnt_ri,
                       pc={'m2m:cin': {
                           'con': 'segundocontent'
                       }})
        cin_mapper = MappersFactory().get(cin)
        cin_ri = cin_mapper.store(settings.GHOSTM2M['CSE-ID'], cin)
        cin.set_id(cin_ri)

        request_str = json.dumps(request)
        response = self.client.generic('GET', '/~/Cernicalo/{}'.format(cnt_ri),
                                       request_str, 'application/json')
        self.assertEqual(response.status_code, 200)
        response_cnt = json.loads(response.content)['m2m:rsp']

        self.assertIn('cni', response_cnt['pc']['m2m:cnt'])
        self.assertEqual(response_cnt['pc']['m2m:cnt']['cni'], 2)

        self.assertIn('la', response_cnt['pc']['m2m:cnt'])
        self.assertEqual(response_cnt['pc']['m2m:cnt']['la'], cin_ri)

        request_str = json.dumps(request)
        response = self.client.generic(
            'GET',
            '/~/Cernicalo/{}?ty={}'.format(cnt_ri,
                                           ResourceType.contentInstance.value),
            request_str, 'application/json')

        self.assertEqual(response.status_code, 200)
        self.assertIn('m2m:rsp', json.loads(response.content))
        response_discovery = json.loads(response.content)['m2m:rsp']
        self.assertIn('pc', response_discovery)
        self.assertIn('m2m:uril', response_discovery['pc'])
        self.assertIsInstance(response_discovery['pc']['m2m:uril'], list)
コード例 #4
0
    def test_api_create_cin(self):
        # create admin user
        result = DBConnection().db['users'].find_one(
            {'_id': settings.GHOSTM2M['admin-user']['username']})
        if result is None:
            DBConnection().db['users'].insert_one({
                '_id':
                settings.GHOSTM2M['admin-user']['username'],
                'pwd':
                settings.GHOSTM2M['admin-user']['pwd']
            })

        # send request for create AE
        request = {
            'm2m:rqp': {
                'op':
                1,
                'ty':
                1,
                'pc': {
                    'm2m:ae': {
                        "apn": "lector-tarjetas"
                    }
                },
                'fr':
                '{}:{}'.format(settings.GHOSTM2M['admin-user']['username'],
                               settings.GHOSTM2M['admin-user']['pwd']),
                'to':
                '//localhost:80/Cernicalo'
            }
        }

        response = self.client.post('/~/Cernicalo/',
                                    json.dumps(request),
                                    content_type="application/json")

        self.assertEqual(response.status_code, 200)
        response_ae = json.loads(response.content)['m2m:rsp']

        factory = ResourcesFactory()
        parent_ae = factory.create(request['m2m:rqp']['ty'],
                                   pc=response_ae['pc'])

        request = {
            'm2m:rqp': {
                'op':
                Operation.Create.value,
                'ty':
                ResourceType.container.value,
                'pc': {
                    'm2m:cnt': {
                        'rn': 'corners-rfids'
                    }
                },
                'fr':
                '{}:{}'.format(settings.GHOSTM2M['admin-user']['username'],
                               settings.GHOSTM2M['admin-user']['pwd']),
                'to':
                '/~/Cernicalo/{}'.format(parent_ae.ri),
            }
        }
        response = self.client.post('/~/Cernicalo/{}'.format(parent_ae.ri),
                                    json.dumps(request),
                                    content_type="application/json")

        self.assertEqual(response.status_code, 200)
        response_cnt = json.loads(response.content)['m2m:rsp']
        cnt = factory.create(request['m2m:rqp']['ty'], pc=response_cnt['pc'])

        request = {
            'm2m:rqp': {
                'op':
                Operation.Create.value,
                'ty':
                ResourceType.contentInstance.value,
                'pc': {
                    'm2m:cin': {
                        'con': 'hola mundo!'
                    }
                },
                'fr':
                '{}:{}'.format(settings.GHOSTM2M['admin-user']['username'],
                               settings.GHOSTM2M['admin-user']['pwd']),
                'to':
                '/~/Cernicalo/{}'.format(cnt.ri),
            }
        }

        response = self.client.post('/~/Cernicalo/{}'.format(cnt.ri),
                                    json.dumps(request),
                                    content_type="application/json")

        self.assertIn('m2m:rsp', json.loads(response.content))
        response_cin = json.loads(response.content)['m2m:rsp']

        self.assertIn('m2m:cin', response_cin['pc'])

        cin = factory.create(request['m2m:rqp']['ty'], pc=response_cin['pc'])

        self.assertIsInstance(cin, ContentInstance)
        self.assertEqual(cin.pi, cnt.ri)
        self.assertEqual(cin.con, 'hola mundo!')

        parent = ResourceMapper().retrieve(cseid=settings.GHOSTM2M['CSE-ID'],
                                           ft={'_id': ObjectId(cin.pi)})
        self.assertIsInstance(parent, Container)
        self.assertNotEqual(parent.la, None)